www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 13353] New: [ICE] assertion with is() and templated interface

https://issues.dlang.org/show_bug.cgi?id=13353

          Issue ID: 13353
           Summary: [ICE] assertion with is() and templated interface
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: DMD
          Assignee: nobody puremagic.com
          Reporter: alexey.prokhin yandex.ru

cat > bug.d << CODE
interface Base(T)
{
    static assert(is(T : Base!T));
}

interface Derived : Base!Derived
{
    void func();
}

class Concrete : Derived
{
    void func() {  }
}
CODE
dmd -c bug.d
----
dmd: func.c:2708: virtual bool FuncDeclaration::overloadInsert(Dsymbol*):
Assertion `s != this' failed.
----

The cause of the issue seems to be Derived vtable being populated twice in 
InterfaceDeclaration::semantic().

--
Aug 22 2014