digitalmars.D.bugs - [Issue 3574] New: post-condition is not evaluated if there is no return statement
- d-bugmail puremagic.com (28/28) Dec 04 2009 http://d.puremagic.com/issues/show_bug.cgi?id=3574
- d-bugmail puremagic.com (11/11) Jan 27 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3574
- d-bugmail puremagic.com (57/57) Jan 28 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3574
- d-bugmail puremagic.com (11/11) Jan 28 2010 http://d.puremagic.com/issues/show_bug.cgi?id=3574
- d-bugmail puremagic.com (12/12) Jun 06 2012 http://d.puremagic.com/issues/show_bug.cgi?id=3574
- d-bugmail puremagic.com (13/13) Jun 11 2012 http://d.puremagic.com/issues/show_bug.cgi?id=3574
- d-bugmail puremagic.com (10/10) Jun 11 2012 http://d.puremagic.com/issues/show_bug.cgi?id=3574
http://d.puremagic.com/issues/show_bug.cgi?id=3574 Summary: post-condition is not evaluated if there is no return statement Product: D Version: unspecified Platform: Other OS/Version: Windows Status: NEW Severity: normal Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: 2korden gmail.com --- import std.stdio; void main() out { writeln("out"); } body { //return; } "out" is only printed if return is explicit. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Dec 04 2009
http://d.puremagic.com/issues/show_bug.cgi?id=3574 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |clugdbug yahoo.com.au Version|unspecified |1.00 Applies to D1 (even ancient versions) as well as D2. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 27 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3574 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch Summary|post-condition is not |post-condition in void |evaluated if there is no |main() is not evaluated if |return statement |there is no return | |statement This is a very obscure bug; it's of interest for educational purposes only. Only void main() is affected, and it's because the return 0; needs to be added AFTER the invariant is processed, not before. This patch (against DMD2, svn 356) just moves the return 0; insertion slightly later in FuncDeclaration::semantic3(). Index: func.c =================================================================== --- func.c (revision 356) +++ func.c (working copy) -1287,16 +1287,8 int offend = blockexit & BEfallthru; #endif - if (type->nextOf()->ty == Tvoid) + if (type->nextOf()->ty != Tvoid) { - if (offend && isMain()) - { // Add a return 0; statement - Statement *s = new ReturnStatement(0, new IntegerExp(0)); - fbody = new CompoundStatement(0, fbody, s); - } - } - else - { if (offend) { Expression *e; #if DMDV1 -1462,8 +1454,17 } ReturnStatement *s = new ReturnStatement(0, e); a->push(s); - } + } } +#if DMDV2 + int blockexit = fbody ? fbody->blockExit() : BEfallthru; + int offend = blockexit & BEfallthru; +#endif + if (offend && isMain() && type->nextOf()->ty == Tvoid) + { // For void main(), add a 'return 0' statement + ReturnStatement *s = new ReturnStatement(0, new IntegerExp(0)); + a->push(s); + } fbody = new CompoundStatement(0, a); #if DMDV2 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 28 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3574 Don <clugdbug yahoo.com.au> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords|patch | Oops, there's something wrong with this patch. It can interfere badly with foreach for some reason. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 28 2010
http://d.puremagic.com/issues/show_bug.cgi?id=3574 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull Platform|Other |All Version|1.00 |D1 & D2 https://github.com/D-Programming-Language/dmd/pull/986 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 06 2012
http://d.puremagic.com/issues/show_bug.cgi?id=3574 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/2b05220ce3c10602748037189cfd6f3123faafd7 fix Issue 3574 - post-condition in void main() is not evaluated if there is no return statement https://github.com/D-Programming-Language/dmd/commit/48d389b430b16b61d5f101485deb004a50b3a700 Issue 3574 - post-condition in void main() is not evaluated if there is no return statement -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 11 2012
http://d.puremagic.com/issues/show_bug.cgi?id=3574 Walter Bright <bugzilla digitalmars.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED CC| |bugzilla digitalmars.com Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jun 11 2012