llvm-project/clang/lib/AST
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
..
Interp [c++20] P1959R0: Remove support for std::*_equality. 2019-12-16 17:49:45 -08:00
APValue.cpp Silence static analyzer getAs<RecordType> null dereference warnings. NFCI. 2019-10-03 11:22:48 +00:00
ASTConcept.cpp [Concepts] Transform constraints of non-template functions to ConstantEvaluated 2020-01-25 23:00:24 +02:00
ASTConsumer.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ASTContext.cpp [Concept] Fix incorrect check for containsUnexpandedParameterPack in CSE 2020-01-30 20:45:44 +02:00
ASTDiagnostic.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
ASTDumper.cpp When dumping the AST to JSON, dump the type information from a typeid expression with a type operand. 2019-05-27 14:34:31 +00:00
ASTImporter.cpp Avoid many std::tie/tuple instantiations in ASTImporter 2020-02-04 15:30:08 -08:00
ASTImporterLookupTable.cpp [ASTImporter] Fix unhandled cases in ASTImporterLookupTable 2019-06-11 13:35:25 +00:00
ASTStructuralEquivalence.cpp [Concepts] Placeholder constraints and abbreviated templates 2020-01-23 19:39:43 +02:00
ASTTypeTraits.cpp Remove Expr.h include from ASTContext.h, NFC 2019-12-06 15:30:49 -08:00
AttrImpl.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CMakeLists.txt [AST] Split parent map traversal logic into ParentMapContext.h 2020-01-24 13:42:28 -08:00
CXXABI.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CXXInheritance.cpp Fix wrong devirtualization when the final overrider in one base class 2020-01-31 17:06:48 -08:00
Comment.cpp Fix "pointer is null" static analyzer warning. NFCI. 2020-01-07 13:41:52 +00:00
CommentBriefParser.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CommentCommandTraits.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
CommentLexer.cpp [AST] CommentLexer - Remove (optional) Invalid parameter from getSpelling. 2019-09-18 12:11:16 +00:00
CommentParser.cpp Adds a warning when an inline Doxygen comment has no argument 2019-08-05 08:05:16 +00:00
CommentSema.cpp [Wdocumentation] Implement \anchor 2019-12-21 14:52:21 +01:00
ComparisonCategories.cpp [c++20] P1959R0: Remove support for std::*_equality. 2019-12-16 17:49:45 -08:00
DataCollection.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Decl.cpp [clang] Fix linkage of nested lambdas. 2020-02-07 13:24:21 -05:00
DeclBase.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
DeclCXX.cpp Don't assume a reference refers to at least sizeof(T) bytes. 2020-01-31 19:08:17 -08:00
DeclFriend.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DeclGroup.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DeclObjC.cpp [objc_direct] Tigthen checks for direct methods 2019-12-20 10:57:36 -08:00
DeclOpenMP.cpp [OPENMP 5.0]Initial support for 'allocator' clause. 2019-03-12 18:52:33 +00:00
DeclPrinter.cpp [Concepts] Type Constraints 2020-01-15 04:02:39 +02:00
DeclTemplate.cpp [Concepts] Deprecate -fconcepts-ts, enable Concepts under -std=c++2a 2020-01-24 00:48:59 +02:00
DeclarationName.cpp [AST] Let DeclarationNameInfo printing use PrintingPolicy, and fix const-correctness 2019-11-15 19:19:41 +01:00
Expr.cpp PR44684: Look through parens and similar constructs when determining 2020-02-06 12:21:54 -08:00
ExprCXX.cpp [Concepts] Requires Expressions 2020-01-19 00:23:26 +02:00
ExprClassification.cpp [Concepts] Requires Expressions 2020-01-19 00:23:26 +02:00
ExprConcepts.cpp [Concept] Fix incorrect check for containsUnexpandedParameterPack in CSE 2020-01-30 20:45:44 +02:00
ExprConstant.cpp C++ DR2026: static storage duration variables are not zeroed before 2020-02-06 16:37:22 -08:00
ExprObjC.cpp [AST][NFC] Add const children() accessors to all AST nodes 2019-04-12 15:36:02 +00:00
ExternalASTMerger.cpp Modernize llvm::Error handling in ExternalASTMerger 2019-11-14 13:58:32 +01:00
ExternalASTSource.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
FormatString.cpp Revert "[Clang] Warn about 'z' printf modifier in old MSVC." 2020-01-28 09:27:54 -05:00
FormatStringParsing.h Add a missing header comment, NFC 2019-08-13 22:01:39 +00:00
InheritViz.cpp Silence static analyzer getAs<RecordType> null dereference warnings. NFCI. 2019-10-03 11:22:48 +00:00
ItaniumCXXABI.cpp [c++20] Fix some ambiguities in our mangling of lambdas with explicit 2019-09-05 01:23:47 +00:00
ItaniumMangle.cpp [Concepts] Requires Expressions 2020-01-19 00:23:26 +02:00
JSONNodeDumper.cpp [Wdocumentation] Implement \anchor 2019-12-21 14:52:21 +01:00
Linkage.h [AST] Split parent map traversal logic into ParentMapContext.h 2020-01-24 13:42:28 -08:00
Mangle.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
MicrosoftCXXABI.cpp Separate the MS inheritance model enum from the attribute, NFC 2019-11-22 16:06:30 -08:00
MicrosoftMangle.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
NSAPI.cpp Removed dead code from clang/AST/NSAPI.h 2019-08-29 06:30:12 +00:00
NestedNameSpecifier.cpp PR12350: Handle remaining cases permitted by CWG DR 244. 2020-02-07 18:40:41 -08:00
ODRHash.cpp [Concepts] Placeholder constraints and abbreviated templates 2020-01-23 19:39:43 +02:00
OSLog.cpp os_log: Allow specifying mask type in format string. 2018-11-06 07:05:14 +00:00
OpenMPClause.cpp [OPENMP50]Add parsing/sema for acq_rel clause. 2020-02-07 09:21:10 -05:00
ParentMap.cpp [OPENMP]Fix PR42632: crash on the analysis of the OpenMP constructs. 2019-07-17 18:03:39 +00:00
ParentMapContext.cpp [ASTMatchers] Fix parent traversal with InitListExpr 2020-01-27 11:19:59 +00:00
PrintfFormatString.cpp [Sema][ObjC] Fix a -Wformat false positive with localizedStringForKey 2019-08-14 16:57:11 +00:00
QualTypeNames.cpp Fix crash in getFullyQualifiedName for inline namespace 2019-12-28 16:35:51 +03:00
RawCommentList.cpp [clang] Refactor doc comments to Decls attribution 2019-08-13 18:11:44 +00:00
RecordLayout.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
RecordLayoutBuilder.cpp Move vtordisp mode from Attr class to LangOptions.h, NFC 2019-11-22 15:47:46 -08:00
ScanfFormatString.cpp Fix parameter name comments using clang-tidy. NFC. 2019-07-16 04:46:31 +00:00
SelectorLocationsKind.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Stmt.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
StmtCXX.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StmtIterator.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StmtObjC.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
StmtOpenMP.cpp [OpenMP][NFCI] Introduce llvm/IR/OpenMPConstants.h 2019-12-10 00:10:09 -06:00
StmtPrinter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
StmtProfile.cpp [OPENMP50]Add parsing/sema for acq_rel clause. 2020-02-07 09:21:10 -05:00
StmtViz.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
TemplateBase.cpp [Concepts] Placeholder constraints and abbreviated templates 2020-01-23 19:39:43 +02:00
TemplateName.cpp [c++20] Implement P0846R0: allow (ADL-only) calls to template-ids whose 2019-05-09 03:31:27 +00:00
TextNodeDumper.cpp [Concepts] Placeholder constraints and abbreviated templates 2020-01-23 19:39:43 +02:00
Type.cpp [Concepts] Placeholder constraints and abbreviated templates 2020-01-23 19:39:43 +02:00
TypeLoc.cpp [Concepts] Placeholder constraints and abbreviated templates 2020-01-23 19:39:43 +02:00
TypePrinter.cpp Make llvm::StringRef to std::string conversions explicit. 2020-01-28 23:25:25 +01:00
VTTBuilder.cpp Silence static analyzer getAs<RecordType> null dereference warnings. NFCI. 2019-10-03 11:22:48 +00:00
VTableBuilder.cpp List implicit operator== after implicit destructors in a vtable. 2020-01-21 15:54:40 -08:00