Thread overview
[Issue 18974] ICE with mixin templates, inheritance and overloading
Jun 13, 2018
Simen Kjaeraas
Dec 12, 2019
Basile-z
Mar 21, 2020
Basile-z
June 13, 2018
https://issues.dlang.org/show_bug.cgi?id=18974

Simen Kjaeraas <simen.kjaras@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |ice
                 CC|                            |simen.kjaras@gmail.com

--- Comment #1 from Simen Kjaeraas <simen.kjaras@gmail.com> ---
Further simplified:

template Mixin() {
    void fun(const int) { }
}

class Foo {
    mixin Mixin!();
    mixin Mixin!();
}

class Bar : Foo {
    override void fun(int) { } // Line 11
}

This gives a slightly different stack trace (top calls are still the same). This difference is caused by templatization of Foo, and can be disregarded.

Changing the type on line 14 from A to const(A) removes the crash. Rewriting to using a single invocation of Mixin with two function definitions inside gives this message:

Error: function void foo.Bar.fun(A) does not override any function, did you
mean to override void foo.Foo!int.Foo.Mixin!(A, B).fun(const(A))?

--
December 12, 2019
https://issues.dlang.org/show_bug.cgi?id=18974

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |b2.temp@gmx.com
         Resolution|---                         |WORKSFORME

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

Basile-z <b2.temp@gmx.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|b2.temp@gmx.com             |

--