[Issue 3344] ICE(e2ir.c) returning an invalid function from main()

d-bugmail at puremagic.com d-bugmail at puremagic.com
Tue Sep 29 01:24:56 PDT 2009


http://d.puremagic.com/issues/show_bug.cgi?id=3344



--- Comment #3 from Don <clugdbug at yahoo.com.au> 2009-09-29 01:24:55 PDT ---
This is happening because when return exp; is changed into exp; return;, the 
semantic pass never gets run on the expression.

-------
PATCH: iin statement.c, around line 3464, in Statement 
*ReturnStatement::semantic(Scope *sc)

=====
    /* Replace:
     *    return exp;
     * with:
     *    exp; return;
     */
    Statement *s = new ExpStatement(loc, exp);
+    s->semantic(sc); 
==========

CAUTION:
This patch also disallows code like " void foo() { return 7; }"
This shows up several bugs in Phobos and in the DMD test suite.
If there's a reason why such bug-prone code should continue to be accepted, a 
more complicated patch will be required.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list