digitalmars.D.bugs - [Bug 29] New: undefined behaviour of: scope(...){ return X; }
- d-bugmail puremagic.com (32/32) Mar 09 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
- d-bugmail puremagic.com (10/10) Mar 09 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
- d-bugmail puremagic.com (19/19) Mar 09 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
- d-bugmail puremagic.com (20/22) Mar 09 2006 http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
Summary: undefined behaviour of: scope(...){ return X; }
Product: D
Version: 0.149
Platform: PC
OS/Version: Linux
Status: NEW
Keywords: accepts-invalid, EH
Severity: normal
Priority: P2
Component: DMD
AssignedTo: walter digitalmars.com
ReportedBy: thomas-dloop kuehne.cn
void main(){
scope(exit){
return 0; // should fail to compile
}
}
int main(){
scope(exit){
return 0; // undefined behaviour
}
return 1;
}
test cases:
http://dstress.kuehne.cn/nocompile/s/scope_08_A.d
http://dstress.kuehne.cn/nocompile/s/scope_08_C.d
http://dstress.kuehne.cn/nocompile/s/scope_08_B.d
http://dstress.kuehne.cn/undefined/scope_08_D.d
http://dstress.kuehne.cn/undefined/scope_08_E.d
http://dstress.kuehne.cn/undefined/scope_08_F.d
--
Mar 09 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
walter digitalmars.com changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
It shouldn't fail to compile. It means the same thing as a return inside a
finally block. Not a bug.
--
Mar 09 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
But it *does* fail to compile now. For example, this program ...
-------------------
import std.stdio;
int Foo(int x)
{
scope(exit) if (x < 5) return x+9;
return x;
}
void main()
{
for(int i = 0; i < 10; i++)
writefln("IN %s OUT %s", i, Foo(i));
}
-------------------
gives this compiler message ...
"test.d(4): return statements cannot be in finally bodies"
--
Mar 09 2006
http://d.puremagic.com/bugzilla/show_bug.cgi?id=29
thomas-dloop kuehne.cn changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|RESOLVED |REOPENED
Resolution|INVALID |
It shouldn't fail to compile. It means the same thing as a return inside a
finally block. Not a bug.
The correlation wiht finally isn't documented.
http://www.digitalmars.com/d/statement.html#try
Thus the code below is illegal, yet compiles:
--
Mar 09 2006









d-bugmail puremagic.com 