// https://issues.dlang.org/show_bug.cgi?id=21403 /***********************************************/ int[] cat11ret3(ref int[] s) { s ~= 11; return [3]; } int[] doit1(int[] val) { (val ~= cat11ret3(val)) ~= 7; return val; } void test1() { static assert(doit1([2]) == [2, 11, 3, 7]); assert(doit1([2]) == [2, 11, 3, 7]); } /***********************************************/ char catbretc(ref char[] s) { s ~= 'b'; return 'c'; } char[] doit2(char[] val) { (val ~= catbretc(val)) ~= 'd'; return val; } void test2() { static assert(doit2(['a']) == ['a', 'b', 'c', 'd']); assert(doit2(['a']) == ['a', 'b', 'c', 'd']); } /***********************************************/ int cat2ret3(ref int[] s) { s ~= 2; return 3; } int[] doit2(int[] val) { (val ~= cat2ret3(val)) ~= 4; return val; } void test3() { static assert(doit2([1]) == [1, 2, 3, 4]); assert(doit2([1]) == [1, 2, 3, 4]); } /***********************************************/ int main() { test1(); test2(); test3(); return 0; }