summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.test/runnable/test23181.d
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gdc.test/runnable/test23181.d')
-rw-r--r--gcc/testsuite/gdc.test/runnable/test23181.d27
1 files changed, 27 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.test/runnable/test23181.d b/gcc/testsuite/gdc.test/runnable/test23181.d
new file mode 100644
index 00000000000..b961690a2bc
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/test23181.d
@@ -0,0 +1,27 @@
+// https://issues.dlang.org/show_bug.cgi?id=23181
+void main()
+{
+ int count;
+ struct HasDtor
+ {
+ ~this() { ++count; }
+ }
+
+ // array[] = elem()
+ // -> creates temporary to construct array and calls destructor.
+ {
+ count = 0;
+ HasDtor[4] dtor1 = HasDtor();
+ assert(count == 1);
+ }
+ assert(count == 5);
+
+ // array[] = array[elem()]
+ // -> constructs array using direct emplacement.
+ {
+ count = 0;
+ HasDtor[2] dtor2 = [HasDtor(), HasDtor()];
+ assert(count == 0);
+ }
+ assert(count == 2);
+}