llvm-project/clang/test/CXX/class
Richard Smith 0e3a487784 PR12350: Handle remaining cases permitted by CWG DR 244.
Also add extension warnings for the cases that are disallowed by the
current rules for destructor name lookup, refactor and simplify the
lookup code, and improve the diagnostic quality when lookup fails.

The special case we previously supported for converting
p->N::S<int>::~S() from naming a class template into naming a
specialization thereof is subsumed by a more general rule here (which is
also consistent with Clang's historical behavior and that of other
compilers): if we can't find a suitable S in N, also look in N::S<int>.

The extension warnings are off by default, except for a warning when
lookup for p->N::S::~T() looks for T in scope instead of in N (or N::S).
That seems sufficiently heinous to warn on by default, especially since
we can't support it for a dependent nested-name-specifier.
2020-02-07 18:40:41 -08:00
..
class.base/class.base.init
class.bit Implement DR2229, which prohibits unnamed bit-fields from having qualifiers in C++. 2018-03-17 21:08:40 +00:00
class.compare PR44723: Trigger return type deduction for operator<=>s whose return 2020-01-31 13:06:48 -08:00
class.friend DR674, PR38883, PR40238: Qualified friend lookup should look for a 2019-01-07 06:00:46 +00:00
class.local Implement P1766R1: diagnose giving non-C-compatible classes a typedef name for linkage purposes. 2020-02-07 11:47:37 -08:00
class.mem PR12350: Handle remaining cases permitted by CWG DR 244. 2020-02-07 18:40:41 -08:00
class.mfct/class.mfct.non-static
class.nest
class.nested.type
class.static/class.static.data Don't warn about runtime behavior problems in variable initializers that we 2017-09-23 18:27:11 +00:00
class.union Implement P1766R1: diagnose giving non-C-compatible classes a typedef name for linkage purposes. 2020-02-07 11:47:37 -08:00
p1-0x.cpp
p2-0x.cpp
p6-0x.cpp