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