Bug 13353 – [REG2.066] [ICE] assertion with is() and templated interface

Status
RESOLVED
Resolution
FIXED
Severity
regression
Priority
P1
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2014-08-22T10:00:00Z
Last change time
2014-08-28T04:10:21Z
Keywords
ice, pull
Assigned to
nobody
Creator
alexey.prokhin

Comments

Comment #0 by alexey.prokhin — 2014-08-22T10:00:09Z
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().
Comment #1 by k.hara.pg — 2014-08-26T12:43:15Z
The ICE is a regression in 2.066 release. In 2.066, the class case (issue 12078) has been fixed properly, but I had overlooked the interface case. https://github.com/D-Programming-Language/dmd/pull/3901
Comment #2 by github-bugzilla — 2014-08-26T14:22:45Z
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/3571d9372eb3ed4bb4aebe39705a5a17c317a13f fix Issue 13353 - [ICE] assertion with is() and templated interface https://github.com/D-Programming-Language/dmd/commit/39d3dc6fbb833cb504b1b7dd6091f5c899e5543d Merge pull request #3901 from 9rnsr/fix13353 [REG2.066] Issue 13353 - [ICE] assertion with is() and templated interface
Comment #3 by github-bugzilla — 2014-08-28T04:10:21Z
Commit pushed to 2.066 at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/b8a96f9a8dae4f94770d1a669e212f4cab31a065 Merge pull request #3901 from 9rnsr/fix13353 [REG2.066] Issue 13353 - [ICE] assertion with is() and templated interface