// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97843 // { dg-additional-options "-fmain -funittest" } // { dg-do run } // { dg-skip-if "needs gcc/config.d" { ! d_runtime } } struct Sdtor { int value; ~this() { } } Sdtor sum(Sdtor[] sdtors) { int result; foreach (s; sdtors) result += s.value; return Sdtor(result); } uint sum(uint[] ints) { uint result; foreach(i; ints) result += i; return result; } unittest { Sdtor[] sdtors = [Sdtor(0), Sdtor(1)]; sdtors ~= sum(sdtors); assert(sdtors == [Sdtor(0), Sdtor(1), Sdtor(1)]); uint[] ints = [0, 1]; ints ~= ints.sum; assert(ints == [0, 1, 1]); }