Thread overview
[Issue 14739] Immutable alias to template triggers dmd assert
Jun 28, 2015
Vladimir Panteleev
Jul 04, 2015
Kenji Hara
Oct 21, 2015
Sobirari Muhomori
Oct 21, 2015
Sobirari Muhomori
Oct 26, 2017
Walter Bright
Jul 02, 2018
Iain Buclaw
Jul 21, 2020
Dlang Bot
June 26, 2015
https://issues.dlang.org/show_bug.cgi?id=14739

--- Comment #1 from joeyemmons@yahoo.com ---
Should have said
DMD32 D Compiler v2.067.1

--
June 28, 2015
https://issues.dlang.org/show_bug.cgi?id=14739

Vladimir Panteleev <thecybershadow@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |thecybershadow@gmail.com
           Hardware|x86_64                      |All
                 OS|Windows                     |All
           Severity|enhancement                 |regression

--- Comment #2 from Vladimir Panteleev <thecybershadow@gmail.com> ---
This program compiled in 2.062, and stopped compiling with an ICE after: https://github.com/D-Programming-Language/dmd/pull/1760

The ICE was fixed and the error changed to "failed semantic analysis" in 2.064,
after:
https://github.com/D-Programming-Language/dmd/pull/2645

The ICE was reintroduced in 2.066, after: https://github.com/D-Programming-Language/dmd/pull/3383

--
July 04, 2015
https://issues.dlang.org/show_bug.cgi?id=14739

Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Severity|regression                  |critical

--- Comment #3 from Kenji Hara <k.hara.pg@gmail.com> ---
(In reply to joeyemmons from comment #0)
> Assertion failure: 'type->ty != Tstruct || ((TypeStruct *)type)->sym ==
> this' on line 929 in file 'struct.c'

(In reply to Vladimir Panteleev from comment #2)
> https://github.com/D-Programming-Language/dmd/pull/1760 https://github.com/D-Programming-Language/dmd/pull/2645 https://github.com/D-Programming-Language/dmd/pull/3383

The root issue is in the template mangling process. Currently typeof(ta) and typeof(tb) are angled to the same name S4main14__T4testVyii0Z4test, but I think it's wrong - the given argument `a` and `b` should be mangled differently on alias parameter.

And the issue has existed from the previous of 2.062, the generated executable had silently corrupted. The added assertion is detecting the compiler internal structure issue correctly today.

Downgrade to 'critical' issue.

--
October 21, 2015
https://issues.dlang.org/show_bug.cgi?id=14739

Sobirari Muhomori <dfj1esp02@sneakemail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           See Also|                            |https://issues.dlang.org/sh
                   |                            |ow_bug.cgi?id=15092

--
October 21, 2015
https://issues.dlang.org/show_bug.cgi?id=14739

--- Comment #4 from Sobirari Muhomori <dfj1esp02@sneakemail.com> ---
---
void f()
{
    int a, b;
    test!a ta;
    test!b tb;
}
struct test(alias a){}
---

For some reason this compiles. Do instances have different mangled name here?

--
October 26, 2017
https://issues.dlang.org/show_bug.cgi?id=14739

Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice, mangling
                 CC|                            |bugzilla@digitalmars.com

--
July 02, 2018
https://issues.dlang.org/show_bug.cgi?id=14739

Iain Buclaw <ibuclaw@gdcproject.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |ibuclaw@gdcproject.org
         Resolution|---                         |FIXED

--- Comment #5 from Iain Buclaw <ibuclaw@gdcproject.org> ---
This seems to be fixed now, added the test case here to make sure it doesn't regress.

https://github.com/dlang/dmd/pull/8428

--
July 03, 2018
https://issues.dlang.org/show_bug.cgi?id=14739

--- Comment #6 from github-bugzilla@puremagic.com ---
Commit pushed to master at https://github.com/dlang/dmd

https://github.com/dlang/dmd/commit/484c9db86973921f736e1632e646bef3d19b1df6 Fix Issue 14739 - Immutable alias to template triggers dmd assert

--
July 21, 2020
https://issues.dlang.org/show_bug.cgi?id=14739

--- Comment #7 from Dlang Bot <dlang-bot@dlang.rocks> ---
dlang/dmd pull request #11436 "[dmd-cxx] fix Issue 14739, 19024, 21060: ICE in semantic, at d/dmd/dstruct.c:1224" was merged into dmd-cxx:

- 4a2df4271c098f07472ddd7f9933f673e017e9bc by Iain Buclaw:
  Fix Issue 14739 - Immutable alias to template triggers dmd assert

https://github.com/dlang/dmd/pull/11436

--