Skip to content

Commit 59b0649

Browse files
committed
Adding test case that I have to fix still
1 parent 40290a9 commit 59b0649

File tree

1 file changed

+48
-0
lines changed
  • clang/test/CXX/special/class.dtor

1 file changed

+48
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// RUN: %clang_cc1 -verify -std=c++26 %s -Wno-defaulted-function-deleted -triple x86_64-linux-gnu
2+
3+
struct NonTrivial {
4+
NonTrivial(int) { }
5+
~NonTrivial() { }
6+
};
7+
8+
union U0 {
9+
NonTrivial nt;
10+
int i;
11+
};
12+
U0 u0;
13+
14+
// overload resolution to select a constructor to default-initialize an object of type X either fails
15+
union U1 {
16+
U1(int);
17+
NonTrivial nt;
18+
};
19+
U1 u1(1); // expected-error {{deleted destructor}}
20+
21+
// or selects a constructor that is either deleted or not trivial, or
22+
union U2 {
23+
U2() : nt(2) { }
24+
NonTrivial nt;
25+
};
26+
U2 u2; // expected-error {{deleted destructor}}
27+
28+
union U3 {
29+
U3() = delete;
30+
U3(int);
31+
NonTrivial nt;
32+
};
33+
U3 u3(1); // expected-error {{deleted destructor}}
34+
35+
// or X has a variant member V of class type M (or possibly multi-dimensional array thereof) where V has a default member initializer and M has a destructor that is non-trivial,
36+
union U4 {
37+
NonTrivial nt = 1;
38+
};
39+
U4 u4; // expected-error {{deleted destructor}}
40+
41+
union U5 {
42+
NonTrivial nt;
43+
U5* next = nullptr;
44+
};
45+
U5 u5;
46+
47+
48+

0 commit comments

Comments
 (0)