1 // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97889
2 // { dg-additional-options "-fmain -funittest" }
3 // { dg-do run }
4 // { dg-skip-if "needs gcc/config.d" { ! d_runtime } }
5
cat11ret3(T)6 auto cat11ret3(T)(ref T s)
7 {
8 s ~= 11;
9 return [3];
10 }
11
12 unittest
13 {
test1(int[]val)14 static auto test1(int[] val) { val ~= cat11ret3(val); return val; }
15 assert(test1([1]) == [1, 11, 3]);
16 static assert(test1([1]) == [1, 11, 3]);
17
test2(int[]val)18 static auto test2(int[] val) { val = val ~ cat11ret3(val); return val; }
19 // FIXME: assert(test2([1]) == [1, 3]);
20 static assert(test2([1]) == [1, 3]);
21
test3(int[]val)22 static auto test3(int[] val) { (val ~= 7) ~= cat11ret3(val); return val; }
23 assert(test3([2]) == [2, 7, 11, 3]);
24 static assert(test3([2]) == [2, 7, 11, 3]);
25
test4(int[]val)26 static auto test4(int[] val) { (val ~= cat11ret3(val)) ~= 7; return val; }
27 assert(test4([2]) == [2, 11, 3, 7]);
28 static assert(test4([2]) == [2, 11, 3, 7]);
29 }
30