Mercurial > projects > dstress
changeset 1451:623963e374c5
[Issue 1088] structs allocated with a struct allocator will not have default initializer values assigned
Mark Guidarelli <guido@grumpy-cat.com>
2007-03-31
http://d.puremagic.com/issues/show_bug.cgi?id=1088
author | thomask |
---|---|
date | Wed, 04 Apr 2007 20:34:04 +0000 |
parents | 2322c29c00be |
children | a3141f24cfac |
files | run/l/lazy_03_A.d run/l/lazy_03_B.d run/l/lazy_03_C.d run/l/lazy_03_D.d |
diffstat | 4 files changed, 181 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/l/lazy_03_A.d Wed Apr 04 20:34:04 2007 +0000 @@ -0,0 +1,46 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Mark Guidarelli <guido@grumpy-cat.com> +// @date@ 2007-03-31 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1088 +// @desc@ [Issue 1088] structs allocated with a struct allocator will not have default initializer values assigned + +module dstress.run.l.lazy_03_A; + +int step; +int[] master = [0x12_34_56_78, 0x12_34_56_78, 0xAB_CD_EF_00, 0xAB_CD_EF_00]; + +void test(...){ + if(1 != _arguments.length){ + assert(0); + } + if(typeid(int) != _arguments[0]){ + assert(0); + } + int i = va_arg!(int)(_argptr); + if(master[step] != i){ + assert(0); + } + step++; +} + +int foo() { + test(0x12_34_56_78); + return 0xAB_CD_EF_00; +} + +void bar(lazy int[] bla ...) { + foreach (elem; bla){ + test(elem); + } +} + +int main() { + bar(foo(), foo()); + if(step != master.length){ + assert(0); + } + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/l/lazy_03_B.d Wed Apr 04 20:34:04 2007 +0000 @@ -0,0 +1,39 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Mark Guidarelli <guido@grumpy-cat.com> +// @date@ 2007-03-31 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1088 +// @desc@ [Issue 1088] structs allocated with a struct allocator will not have default initializer values assigned + +module dstress.run.l.lazy_03_B; + +int step; +int[] master = [0x12_34_56_78, 0x12_34_56_78, 0xAB_CD_EF_00, 0xAB_CD_EF_00]; + +void test(int i){ + if(master[step] != i){ + assert(0); + } + step++; +} + +int foo() { + test(0x12_34_56_78); + return 0xAB_CD_EF_00; +} + +void bar(lazy int[] bla ...) { + foreach (elem; bla){ + test(elem); + } +} + +int main() { + bar(foo(), foo()); + if(step != master.length){ + assert(0); + } + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/l/lazy_03_C.d Wed Apr 04 20:34:04 2007 +0000 @@ -0,0 +1,48 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Mark Guidarelli <guido@grumpy-cat.com> +// @date@ 2007-03-31 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1088 +// @desc@ [Issue 1088] structs allocated with a struct allocator will not have default initializer values assigned + +module dstress.run.l.lazy_03_C; + +import std.stdarg; + +int step; +int[] master = [0x12_34_56_78, 0x12_34_56_78, 0xAB_CD_EF_00, 0xAB_CD_EF_00]; + +void test(...){ + if(1 != _arguments.length){ + assert(0); + } + if(typeid(int) != _arguments[0]){ + assert(0); + } + int i = va_arg!(int)(_argptr); + if(master[step] != i){ + assert(0); + } + step++; +} + +int foo() { + test(0x12_34_56_78); + return 0xAB_CD_EF_00; +} + +void bar(lazy int[] bla ...) { + foreach (elem; bla){ + test(elem); + } +} + +int main() { + bar([foo(), foo()]); + if(step != master.length){ + assert(0); + } + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/run/l/lazy_03_D.d Wed Apr 04 20:34:04 2007 +0000 @@ -0,0 +1,48 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Mark Guidarelli <guido@grumpy-cat.com> +// @date@ 2007-03-31 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=1088 +// @desc@ [Issue 1088] structs allocated with a struct allocator will not have default initializer values assigned + +module dstress.run.l.lazy_03_D; + +import std.stdarg; + +int step; +int[] master = [0x12_34_56_78, 0x12_34_56_78, 0xAB_CD_EF_00, 0xAB_CD_EF_00]; + +void test(...){ + if(1 != _arguments.length){ + assert(0); + } + if(typeid(int) != _arguments[0]){ + assert(0); + } + int i = va_arg!(int)(_argptr); + if(master[step] != i){ + assert(0); + } + step++; +} + +int foo() { + test(0x12_34_56_78); + return 0xAB_CD_EF_00; +} + +void bar(lazy int[] bla) { + foreach (elem; bla){ + test(elem); + } +} + +int main() { + bar([foo(), foo()]); + if(step != master.length){ + assert(0); + } + return 0; +}