diff --git a/clang-tools-extra/clangd/XRefs.cpp b/clang-tools-extra/clangd/XRefs.cpp --- a/clang-tools-extra/clangd/XRefs.cpp +++ b/clang-tools-extra/clangd/XRefs.cpp @@ -857,7 +857,6 @@ struct Reference { syntax::Token SpelledTok; index::SymbolRoleSet Role; - SymbolID Target; Range range(const SourceManager &SM) const { return halfOpenToRange(SM, SpelledTok.range(SM).toCharRange(SM)); @@ -868,10 +867,8 @@ const llvm::ArrayRef Targets, bool PerToken) : PerToken(PerToken), AST(AST) { - for (const NamedDecl *ND : Targets) { - const Decl *CD = ND->getCanonicalDecl(); - TargetDeclToID[CD] = getSymbolID(CD); - } + for (const NamedDecl *ND : Targets) + TargetDecls.insert(ND->getCanonicalDecl()); } std::vector take() && { @@ -897,8 +894,7 @@ llvm::ArrayRef Relations, SourceLocation Loc, index::IndexDataConsumer::ASTNodeInfo ASTNode) override { - auto DeclID = TargetDeclToID.find(D->getCanonicalDecl()); - if (DeclID == TargetDeclToID.end()) + if (!TargetDecls.contains(D->getCanonicalDecl())) return true; const SourceManager &SM = AST.getSourceManager(); if (!isInsideMainFile(Loc, SM)) @@ -926,7 +922,7 @@ for (SourceLocation L : Locs) { L = SM.getFileLoc(L); if (const auto *Tok = TB.spelledTokenAt(L)) - References.push_back({*Tok, Roles, DeclID->getSecond()}); + References.push_back({*Tok, Roles}); } return true; } @@ -935,7 +931,7 @@ bool PerToken; // If true, report 3 references for split ObjC selector names. std::vector References; const ParsedAST * - llvm::DenseMap TargetDeclToID; + llvm::DenseSet TargetDecls; }; std::vector