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: [email protected]
Reporter: [email protected]
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().
--