typeof(typename) fails silently
Sean Kelly
sean at invisibleduck.org
Mon Sep 15 17:55:09 PDT 2008
Jarrett Billingsley wrote:
> On Mon, Sep 15, 2008 at 7:08 PM, Sean Kelly <sean at invisibleduck.org> wrote:
>> Code like the following:
>>
>>
>> static if(is(typeof(int))) { pragma(msg, "hi"); }
>>
>> used to work just fine (ie. it used to print "hi") even though typeof was
>> being used to evaluate a type. Now apparently the same tests fail, but they
>> do so silently. If typeof isn't supposed to be used to evaluate types,
>> could we _please_ get a compile error about this? I've just discovered that
>> a bunch of Tango code silently stopped working when this change was
>> implemented and it would have been great if the build had simply failed on
>> what is now apparently an illegal operation.
>>
>
> Oh but Sean, anything illegal inside an is() expression doesn't give an error!
Technically untrue. An 'is' expression must contain a type. ie. you
can't do this:
is(5)
That aside, the contents of an 'is' expression must still be valid D
code, and typeof(int) is clearly no longer valid D code. All I'm asking
is to be told that my code is invalid.
Sean
More information about the Digitalmars-d-bugs
mailing list