# HG changeset patch # User Leandro Lucarella # Date 1287526703 10800 # Node ID d402aa53926c85592ad857923e84d04c80a437d3 # Parent 8f6d65d2b129d03b5da7c14402b6716d476b2604 Add test for bug 3092 written by Manuel K?nig diff -r 8f6d65d2b129 -r d402aa53926c compile/t/tuple_27_A.d --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/compile/t/tuple_27_A.d Tue Oct 19 19:18:23 2010 -0300 @@ -0,0 +1,52 @@ +// $HeadURL$ +// $Date$ +// $Author$ + +// @author@ Manuel König +// @date@ 2010-10-11 +// @uri@ http://d.puremagic.com/issues/show_bug.cgi?id=3092 +// @desc@ [Issue 3092] Indexing a tuple produces a tuple containing the indexed element (only happens when indexing type items in a non-type-tuple) + +module dstress.compile.t.tuple_27_A; + +template TupleBug(values...) +{ + alias values[0] v0; + alias values[0][0][0][0][0] chain; + + /* for debugging this test case + pragma(msg, "values: ", values); + pragma(msg, "v0: ", v0); + pragma(msg, "values[0]: ", values[0]); + pragma(msg, "chain: ", chain); + + eg. for TupleBug!(int, 1, char) this should print + + values: tuple(int, 1, char) + v0: int + values[0]: int + chain: int[0][0][0][0] + + When v0, values[0 and chain are printed correct, but values + looks like + + values: tuple((int), 1, (char)) + + this is most likely only a formatting bug in expToCBuffer in expression.c. + */ + + static assert(is(v0 == int)); + static assert(is(chain == int[0][0][0][0])); + + v0 i; + chain c; + + static assert(is(typeof(i) == int)); + static assert(is(typeof(c) == int[0][0][0][0])); +} + +alias TupleBug!(int) _0; +alias TupleBug!(int, "foo") _1; +alias TupleBug!(int, 1, char) _2; +alias TupleBug!(int, ulong, char[], void*) _3; +