Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
August 18, 2013 [Issue 10842] New: auto return function not executed depending on how it's called | ||||
---|---|---|---|---|
| ||||
http://d.puremagic.com/issues/show_bug.cgi?id=10842 Summary: auto return function not executed depending on how it's called Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: critical Priority: P2 Component: DMD AssignedTo: nobody@puremagic.com ReportedBy: thelastmammoth@gmail.com --- Comment #0 from thelastmammoth@gmail.com 2013-08-17 18:28:51 PDT --- dmd -version=A -run main.d: prints nothing dmd -version=B -run main.d: prints ok ---- auto fail(){ import std.stdio; writeln("ok"); /+ //would be same with this: assert(0); //or this: import std.exception; throw new Exception("bad"); +/ return null; } string foo(){ version(A){ auto temp=fail(); return temp; } else return fail(); } void main(){ foo(); } -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 18, 2013 [Issue 10842] auto return function not executed depending on how it's called | ||||
---|---|---|---|---|
| ||||
Posted in reply to thelastmammoth@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10842 Andrej Mitrovic <andrej.mitrovich@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |andrej.mitrovich@gmail.com --- Comment #1 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-08-17 18:40:12 PDT --- Reduced: ----- auto ret1() { assert(0); // should throw, doesn't return null; } string test1() { return ret1(); } void main() { test1(); } ----- If you change the return to an explicit expression, e.g. `return ""`, then the assert is triggered. Also perhaps noteworthy is that in older releases the reduced code used to fail to compile, e.g. in 2.057: Error: e2ir: cannot cast ret1() of type typeof(null) to type string -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 18, 2013 [Issue 10842] auto return function not executed depending on how it's called | ||||
---|---|---|---|---|
| ||||
Posted in reply to thelastmammoth@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10842 --- Comment #2 from thelastmammoth@gmail.com 2013-08-17 18:58:29 PDT --- > If you change the return to an explicit expression, e.g. `return ""`, then the assert is triggered. In my case I want to make it work with arbitrary types, not just strings, do you have a suggestion for this? ( I just posted a suggestion here: http://forum.dlang.org/thread/mailman.160.1376790770.1719.digitalmars-d-learn@puremagic.com "how to get enclosing function as symbol ? (eg: __function__.stringof ==__FUNCTION__)" which would allow this among other things. ) -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
August 18, 2013 [Issue 10842] auto return function not executed depending on how it's called | ||||
---|---|---|---|---|
| ||||
Posted in reply to thelastmammoth@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10842 --- Comment #3 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-08-17 19:09:05 PDT --- (In reply to comment #2) > Reduced: Actually the bug is unrelated to auto, but instead related to typeof(null): ----- typeof(null) ret1() { assert(0); // not thrown return null; } string test1() { return ret1(); } void main() { test1(); } ----- -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
September 29, 2013 [Issue 10842] Some integer casts wrongly remove side-effect of the operand. | ||||
---|---|---|---|---|
| ||||
Posted in reply to thelastmammoth@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10842 Kenji Hara <k.hara.pg@gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull Summary|auto return function not |Some integer casts wrongly |executed depending on how |remove side-effect of the |it's called |operand. --- Comment #4 from Kenji Hara <k.hara.pg@gmail.com> 2013-09-28 23:12:47 PDT --- https://github.com/D-Programming-Language/dmd/pull/2597 The problem is in CastExp::toElem, it sometimes remove the side effect of the cast operand. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
October 09, 2013 [Issue 10842] Some integer casts wrongly remove side-effect of the operand. | ||||
---|---|---|---|---|
| ||||
Posted in reply to thelastmammoth@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10842 --- Comment #5 from github-bugzilla@puremagic.com 2013-10-08 20:55:26 PDT --- Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/7123433d77bde06769d9227df8f5b3814117b1e6 fix Issue 10842 - Some integer casts wrongly remove side-effect of the operand https://github.com/D-Programming-Language/dmd/commit/175c85bc5658aae266c061d2c3c42a0607325676 Merge pull request #2597 from 9rnsr/fix10842 Issue 10842 - Some integer casts wrongly remove side-effect of the operand. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- |
October 09, 2013 [Issue 10842] Some integer casts wrongly remove side-effect of the operand. | ||||
---|---|---|---|---|
| ||||
Posted in reply to thelastmammoth@gmail.com | http://d.puremagic.com/issues/show_bug.cgi?id=10842 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: ------- |
Copyright © 1999-2021 by the D Language Foundation