Semantic change from 2.078.3 to 2.079.0

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


On Wednesday, 23 May 2018 at 09:26:48 UTC, ag0aep6g wrote:
> 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

Wow! I don't know I missed it!

I would expect something like this to go through the deprecation 
process as it effectively silently breaks a ton of code.


More information about the Digitalmars-d mailing list