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.