compilation fails for no reason in given example involving a template using mixin, static if and __traits(compiles, ...) code reflection. see details in example as it is too complicated to describe. might be related to issue 12532. however, example fails as well when 'enum' is replaced by 'const' === EXAMPLE === template valid(string mem){ pragma(msg, "instantiation of valid with: "~mem); static if( !__traits( compiles, mixin(mem) ) ){ enum valid = false; }else{ enum valid = true; } } enum works = valid!"fails"; pragma(msg, "found 'fails' (via 'works')? "~works.stringof ); // compiles but produces 'false': issue 12532 enum dummy = valid!"fails"; pragma(msg, "found 'fails' (via 'dummy')? "~dummy.stringof ); // compiles but produces 'false': issue 12532 enum fails = valid!"fails"; // Error: variable demo.fails had semantic errors when compiling // NOTE: if you comment out the first two usages of valid!"fails", // it will work here - but give 'false' again. // pragma(msg, "found 'fails' (via 'fails')? "~fails.stringof ); void main(){}
(In reply to comment #0) might be caused by issue 12541.
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/17651 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB