Semantic change from 2.078.3 to 2.079.0

Márcio Martins marcioapm at gmail.com
Wed May 23 09:21:14 UTC 2018


Hi, recently we tried to upgrade DMD from 2.078.3 to 2.080 and 
found an unexpected semantic change.

Consider this program:

import std.traits;
enum X { Y = "z" };
alias T = typeof(X.Y);

pragma(msg, is(T == enum));
pragma(msg, isSomeString!T);
void main() {}`

Output in DMD <= 2.078.3:
true
true

Output in DMD >= 2.079.0:
true
false

This silent change is really nasty, and causing all sorts of 
breakages.
Was this a bug-fix, and if so, should we expect the new behavior 
to stick?


More information about the Digitalmars-d mailing list