# HG changeset patch # User thomask # Date 1177351692 0 # Node ID f0259cabdf782609fc5ae1acefaa58dc3bcbd3a4 # Parent fba3b66d02769fcc123131cd4d0b50aacaba2e62 [Issue 1140] ICE casting tuple member to tuple struct Don Clugston 2007-04-03 http://d.puremagic.com/issues/show_bug.cgi?id=1140 diff -r fba3b66d0276 -r f0259cabdf78 run/t/template_struct_09_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/t/template_struct_09_A.d Mon Apr 23 18:08:12 2007 +0000 @@ -0,0 +1,23 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Don Clugston +// @date@ 2007-04-03 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1140 +// @desc@ [Issue 1140] ICE casting tuple member to tuple struct + +module dstress.run.t.template_struct_09_A; + +struct Dog(B...){ + B values; + + static Dog!(B) create(B x) { + return *cast(Dog!(B)*)(&x[1]); + } +} + +int main(){ + auto c = Dog!(int, int).create(7, 5); + return 0; +} diff -r fba3b66d0276 -r f0259cabdf78 run/t/template_struct_09_B.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/t/template_struct_09_B.d Mon Apr 23 18:08:12 2007 +0000 @@ -0,0 +1,27 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Don Clugston +// @date@ 2007-04-03 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1140 +// @desc@ [Issue 1140] ICE casting tuple member to tuple struct + +module dstress.run.t.template_struct_09_B; + +struct Cat{ + int i; +} + +struct Dog(B...){ + B values; + + static Cat create(B x) { + return *cast(Cat*)(&x[1]); + } +} + +int main(){ + auto c = Dog!(int, int).create(7, 5); + return 0; +} diff -r fba3b66d0276 -r f0259cabdf78 run/t/template_struct_09_C.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/t/template_struct_09_C.d Mon Apr 23 18:08:12 2007 +0000 @@ -0,0 +1,23 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Don Clugston +// @date@ 2007-04-03 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1140 +// @desc@ [Issue 1140] ICE casting tuple member to tuple struct + +module dstress.run.t.template_struct_09_C; + +class Dog(B...){ + B values; + + static Dog!(B) create(B x) { + return *cast(Dog!(B)*)(&x[1]); + } +} + +int main(){ + auto c = Dog!(int, int).create(7, 5); + return 0; +}