[Issue 15332] New: ICE in e2ir.c: assert(irs->sthis) in visit(ThisExp), function literal with keyword 'function' calls method
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Fri Nov 13 17:16:03 PST 2015
https://issues.dlang.org/show_bug.cgi?id=15332
Issue ID: 15332
Summary: ICE in e2ir.c: assert(irs->sthis) in visit(ThisExp),
function literal with keyword 'function' calls method
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Keywords: ice
Severity: normal
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: eiderdaus at gmail.com
Reduced test case:
class MyClass {
int myMethod() { return 5; }
this() {
int a = function() { return myMethod; }();
}
}
On compiling this with dmd 64-bit, v2.069.0, I get this internal compiler
error:
dmd: e2ir.c:1209: virtual void toElem(Expression*,
IRState*)::ToElemVisitor::visit(ThisExp*):
Assertion `irs->sthis' failed.
Aborted
The code sample compiles with no problems when I remove the keyword 'function',
turning the 4th line into:
int a = () { return myMethod; }();
A different way of getting the code sample to compile is to make myMethod a
non-method function outside of the class, or to remove myMethod altogether and
replace the call to myMethod by the literal 5:
int a = function() { return 5; }();
-- Simon
--
More information about the Digitalmars-d-bugs
mailing list