[ASTImporter][NFC] Dump decl name at assertion violation

Sometimes it would be useful to see which Decl kind caused some issue,
along with the name of the concrete instance of the Decl in the source
code.

Reviewed By: martong

Differential Revision: https://reviews.llvm.org/D113668
This commit is contained in:
Balazs Benics 2021-11-19 11:31:01 +01:00
parent 8c18719bae
commit f3753ad774
1 changed files with 12 additions and 2 deletions

View File

@ -14,6 +14,7 @@
#include "clang/AST/ASTImporterLookupTable.h" #include "clang/AST/ASTImporterLookupTable.h"
#include "clang/AST/Decl.h" #include "clang/AST/Decl.h"
#include "clang/AST/RecursiveASTVisitor.h" #include "clang/AST/RecursiveASTVisitor.h"
#include "llvm/Support/FormatVariadic.h"
namespace clang { namespace clang {
@ -93,10 +94,19 @@ void ASTImporterLookupTable::add(DeclContext *DC, NamedDecl *ND) {
} }
void ASTImporterLookupTable::remove(DeclContext *DC, NamedDecl *ND) { void ASTImporterLookupTable::remove(DeclContext *DC, NamedDecl *ND) {
DeclList &Decls = LookupTable[DC][ND->getDeclName()]; const DeclarationName Name = ND->getDeclName();
DeclList &Decls = LookupTable[DC][Name];
bool EraseResult = Decls.remove(ND); bool EraseResult = Decls.remove(ND);
(void)EraseResult; (void)EraseResult;
assert(EraseResult == true && "Trying to remove not contained Decl"); #ifndef NDEBUG
if (!EraseResult) {
std::string Message =
llvm::formatv("Trying to remove not contained Decl '{0}' of type {1}",
Name.getAsString(), DC->getDeclKindName())
.str();
llvm_unreachable(Message.c_str());
}
#endif
} }
void ASTImporterLookupTable::add(NamedDecl *ND) { void ASTImporterLookupTable::add(NamedDecl *ND) {