Repository navigation
[REG2.067a] Issue 14198 - Link failure with Variant - #4464
Conversation
|
The "workaround" stays in Phobos. The original code did memory allocation to implement |
|
The root issue is in |
|
Thanks for finding & fixing the compiler bug. |
[REG2.067a] Issue 14198 - Link failure with Variant
|
@9rnsr you think we should get this into 2.067 or will the Phobos workaround suffice? |
|
@MartinNowak This fix should go into 2.067. There was not only a link-failure issue, but also was incorrect attribute inference problem. Following code does not compile with 2.067-beta2. import std.conv;
void main() pure @safe { auto s = to!string(true); } |
|
This pull request seems to have fixed a compiler crash (and Phobos-introduced regression): |
…redicate Just adding a test case so the SEGV problem was already fixed in the PR dlang#4464.
…ms broken The broken behavior has been revealed since the commit/PR: f22d9db dlang#4464 By the fix, some attribute inference order bug for template functions had been fixed - when foo() calls bar!(), and bar!() calls baz!(), the bar!() attribute should be inferred after the attrs of baz!() determined. And then, compiler infers the purity of nested two lambdas in the 14962 test case, and the case has been rejected by the 14781 behavior.
…ms broken It has been revealed since the commit/PR: f22d9db dlang#4464 By the fix, some attribute inference order bug for template functions had been fixed - when foo() calls bar!(), and bar!() calls baz!(), the bar!() attribute should be inferred after the attrs of baz!() determined. And then, compiler infers the purity of nested two lambdas in the 14962 test case, and the case has been rejected by the 14781 behavior.
…ms broken It has been revealed since the commit/PR: f22d9db dlang#4464 By the fix, some attribute inference order bug for template functions had been fixed - when foo() calls bar!(), and bar!() calls baz!(), the bar!() attribute should be inferred after the attrs of baz!() determined. And then, compiler infers the purity of nested two lambdas in the 14962 test case, and the case has been rejected by the 14781 behavior.
…ms broken It has been revealed since the commit/PR: f22d9db dlang#4464 By the fix, some attribute inference order bug for template functions had been fixed - when foo() calls bar!(), and bar!() calls baz!(), the bar!() attribute should be inferred after the attrs of baz!() determined. And then, compiler infers the purity of nested two lambdas in the 14962 test case, and the case has been rejected by the 14781 behavior.
…ms broken It has been revealed since the commit/PR: f22d9db dlang#4464 By the fix, some attribute inference order bug for template functions had been fixed - when foo() calls bar!(), and bar!() calls baz!(), the bar!() attribute should be inferred after the attrs of baz!() determined. And then, compiler infers the purity of nested two lambdas in the 14962 test case, and the case has been rejected by the 14781 behavior.
…ms broken It has been revealed since the commit/PR: f22d9dbb42b6a32d5b4c7c9f3db45e07c9f8aaf6 dlang/dmd#4464 By the fix, some attribute inference order bug for template functions had been fixed - when foo() calls bar!(), and bar!() calls baz!(), the bar!() attribute should be inferred after the attrs of baz!() determined. And then, compiler infers the purity of nested two lambdas in the 14962 test case, and the case has been rejected by the 14781 behavior.
https://issues.dlang.org/show_bug.cgi?id=14198
After this fix, we can remove the workaround in Phobos.