[Issue 2167] incorrect behaviour of IsExpression on invalid template instance

d-bugmail at puremagic.com d-bugmail at puremagic.com
Mon Nov 24 05:15:10 PST 2008


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


smjg at iname.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |smjg at iname.com
           Keywords|                            |rejects-valid
            Summary|incorrect static assert     |incorrect behaviour of
                   |behavior                    |IsExpression on invalid
                   |                            |template instance




------- Comment #5 from smjg at iname.com  2008-11-24 07:15 -------
The original issue isn't a bug, since the point of IsExpression is that
semantic errors never escape it - it just evaluates to false instead.

But the issue raised from comment 2 onwards is certainly a bug, and the
behaviour is quite strange.

----------
import std.stdio;
class Templ(T) { this(){ unknown_identifier; } }

void main() {
    pragma(msg, "In main: " ~ is(Templ!(int)).stringof);
}
----------
In main: 0
----------

But add this line at the very end

pragma(msg, "Global: " ~ is(Templ!(int)).stringof);
----------
Global: 1
In main: 1
bz2167a.d(2): Error: undefined identifier unknown_identifier
bz2167a.d(2): Error: identifier has no effect in expression
(unknown_identifier)
----------


-- 



More information about the Digitalmars-d-bugs mailing list