| // 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]); |
| } |