summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.test/runnable/test23181.d
blob: b961690a2bc12bff91a9a61515ae9dbbcd9c615e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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);
}