Semantic change from 2.078.3 to 2.079.0

ag0aep6g anonymous at example.com
Wed May 23 09:26:48 UTC 2018


On 05/23/2018 11:21 AM, Márcio Martins wrote:
> 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?

In the changelog:

https://dlang.org/changelog/2.079.0.html#std-traits-issomestring


More information about the Digitalmars-d mailing list