From f3753ad774506804ef5df065b48268712bdaa554 Mon Sep 17 00:00:00 2001 From: Balazs Benics Date: Fri, 19 Nov 2021 11:31:01 +0100 Subject: [PATCH] [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 --- clang/lib/AST/ASTImporterLookupTable.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/clang/lib/AST/ASTImporterLookupTable.cpp b/clang/lib/AST/ASTImporterLookupTable.cpp index bf772c2..ef42561 100644 --- a/clang/lib/AST/ASTImporterLookupTable.cpp +++ b/clang/lib/AST/ASTImporterLookupTable.cpp @@ -14,6 +14,7 @@ #include "clang/AST/ASTImporterLookupTable.h" #include "clang/AST/Decl.h" #include "clang/AST/RecursiveASTVisitor.h" +#include "llvm/Support/FormatVariadic.h" namespace clang { @@ -93,10 +94,19 @@ void ASTImporterLookupTable::add(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); (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) { -- 2.7.4