http://d.puremagic.com/issues/show_bug.cgi?id=9055
Don <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|CTFE |ice Summary|[CTFE] Compiler segfaults |Compiler segfaults on |on paren-free auto-return |forward reference to |forward referenced member |auto-return member function |function call on | |nonexistent 'this' receiver | --- Comment #5 from Don <[email protected]> 2013-01-04 02:00:12 PST --- This is not a CTFE bug. Here is an example which doesn't use CTFE, properties, or invalid use of 'this': --- class C { enum a = typeof(this.b()).init; static auto b(){ return 0; } } --- If in any of these examples you replace this.b() by simply b(), you get a "forward reference to b" error message. Here's a basic patch to do the same thing in this case. I'm not really happy with it though, the errors for b() and this.b() should be generated in the same function. -- a/src/expression.c +++ b/src/expression.c @@ -929,6 +929,11 @@ Type *functionParameters(Loc loc, Scope *sc, TypeFunction *tf, if (!tf->next && fd->inferRetType) { TemplateInstance *spec = fd->isSpeculative(); + if ( fd->semanticRun < PASSsemanticdone ) + { // We haven't run semantic() yet, eg bug 9055. + error(loc, "forward reference to %s", fd->toChars()); + return Type::terror; + } int olderrs = global.errors; // If it isn't speculative, we need to show errors unsigned oldgag = global.gag; -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
