# HG changeset patch # User thomask # Date 1175768316 0 # Node ID a4dc53fd9f2e76a8109adba345fbd12b408dfe79 # Parent 0c9905dc4158c6d1a5e52db651572c81bb10d223 [Issue 1087] Scope classes not destroyed in labeled statements in switches Jarrett Billingsley 2007-03-30 http://d.puremagic.com/issues/show_bug.cgi?id=1087 diff -r 0c9905dc4158 -r a4dc53fd9f2e run/s/scope_17_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/s/scope_17_A.d Thu Apr 05 10:18:36 2007 +0000 @@ -0,0 +1,37 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Jarrett Billingsley +// @date@ 2007-03-30 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1087 +// @desc@ [Issue 1087] Scope classes not destroyed in labeled statements in switches + +module dstress.run.s.scope_17_A; + +int i[]; + +scope class A{ + ~this(){ + i ~= 3; + } +} + +int main(){ + i ~= 0; + + goto L1; + { + L1: + scope a = new A(); + scope(exit) i ~= 2; + i ~= 1; + } + i ~= 4; + + if([0, 1, 2, 3, 4] != i){ + assert(0); + } + + return 0; +} diff -r 0c9905dc4158 -r a4dc53fd9f2e run/s/scope_17_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/s/scope_17_B.d Thu Apr 05 10:18:36 2007 +0000 @@ -0,0 +1,38 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Jarrett Billingsley +// @date@ 2007-03-30 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1087 +// @desc@ [Issue 1087] Scope classes not destroyed in labeled statements in switches + +module dstress.run.s.scope_17_B; + +int i[]; + +scope class A{ + ~this(){ + i ~= 3; + } +} + +int main(){ + i ~= 0; + + switch(i.length) + { + case 1: + scope a = new A(); + scope(exit) i ~= 2; + i ~= 1; + break; + } + i ~= 4; + + if([0, 1, 2, 3, 4] != i){ + assert(0); + } + + return 0; +} diff -r 0c9905dc4158 -r a4dc53fd9f2e run/s/scope_17_C.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/s/scope_17_C.d Thu Apr 05 10:18:36 2007 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Jarrett Billingsley +// @date@ 2007-03-30 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1087 +// @desc@ [Issue 1087] Scope classes not destroyed in labeled statements in switches + +module dstress.run.s.scope_17_C; + +int i[]; + +scope class A{ + ~this(){ + i ~= 3; + } +} + +int main(){ + i ~= 0; + + switch(i.length) + { + case 1: + goto L2; + L2: + scope a = new A(); + scope(exit) i ~= 2; + i ~= 1; + break; + } + i ~= 4; + + if([0, 1, 2, 3, 4] != i){ + assert(0); + } + + return 0; +} diff -r 0c9905dc4158 -r a4dc53fd9f2e run/s/scope_17_D.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/s/scope_17_D.d Thu Apr 05 10:18:36 2007 +0000 @@ -0,0 +1,40 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Jarrett Billingsley +// @date@ 2007-03-30 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1087 +// @desc@ [Issue 1087] Scope classes not destroyed in labeled statements in switches + +module dstress.run.s.scope_17_D; + +int i[]; + +scope class A{ + ~this(){ + i ~= 3; + } +} + +int main(){ + i ~= 0; + + switch(i.length) + { + L2: + scope a = new A(); + scope(exit) i ~= 2; + i ~= 1; + break; + case 1: + goto L2; + } + i ~= 4; + + if([0, 1, 2, 3, 4] != i){ + assert(0); + } + + return 0; +}