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