http://d.puremagic.com/issues/show_bug.cgi?id=8220



--- Comment #4 from Kenji Hara <k.hara...@gmail.com> 2012-06-14 00:51:28 PDT ---
(In reply to comment #3)
> Created an attachment (id=1115) [details]
> failing test case

I think this test case is not correct code.

(From test case)
> alias typeof(Length*Length)           Area;
> alias typeof(Length*Area)             Volume;
> alias typeof(Mass/Volume)             Density;
> alias typeof(Length*Mass/Time/Time)   Force;
> alias typeof(1/Time)                  Frequency;
> alias typeof(Force/Area)              Pressure;
> alias typeof(Force*Length)            Energy;
> alias typeof(Energy/Time)             Power;
> alias typeof(Time*Current)            Charge;
> alias typeof(Power/Current)           Voltage;
> alias typeof(Charge/Voltage)          Capacitance;
> alias typeof(Voltage/Current)                 Resistance;
> alias typeof(1/Resistance)            Conductance;
> alias typeof(Voltage*Time)            MagneticFlux;
> alias typeof(MagneticFlux/Area)       MagneticFluxDensity;
> alias typeof(MagneticFlux/Current)    Inductance;
> alias typeof(Intensity*UnitLess)      LuminousFlux;
> alias typeof(LuminousFlux/Area)       Illuminance;

As far as I know, normal expressions cannot take Type as their operands, even
if it is defined by operator overloading.

 struct S { void opMul(S s){} }
 S + S;   // this is INVALID code

This rule should be applied even in typeof expression, then
typeof(Length*Length) must be invalid.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to