[Issue 1765] New: foreach scope does not call destructor
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jan 2 10:59:51 PST 2008
http://d.puremagic.com/issues/show_bug.cgi?id=1765
Summary: foreach scope does not call destructor
Product: D
Version: 2.008
Platform: All
OS/Version: All
Status: NEW
Keywords: wrong-code
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: gide at nwawudu.com
Foreach statement (without braces '{}') and scoping objects, prevents the call
to the object's destructor. The code below outlines the problem.
Code
----
module main;
import std.stdio;
class MyClass {
public:
this() {
writefln("Constructor");
}
~this() {
writefln("Destructor");
}
private:
int myNumber;
};
int main() {
writefln("1 - Start: OK dtor called");
foreach (a; new int[1]) {
scope x = new MyClass;
}
writefln("1 - End: OK dtor called\n");
writefln("2 - Start: dtor NOT called");
foreach (a; new int[1])
scope x = new MyClass;
writefln("2 - End: dtor NOT called\n");
return 0;
};
Output
------
1 - Start: OK dtor called
Constructor
Destructor
1 - End: OK dtor called
2 - Start: dtor NOT called
Constructor
2 - End: dtor NOT called
--
More information about the Digitalmars-d-bugs
mailing list