[PATCH] D73369: [clangd] Simplify "preferred" vs "definition" logic a bit in XRefs AST code.
Sam McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 25 15:44:10 PDT 2020
sammccall updated this revision to Diff 252690.
sammccall added a comment.
clang-format
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73369/new/
https://reviews.llvm.org/D73369
Files:
clang-tools-extra/clangd/XRefs.cpp
clang-tools-extra/clangd/unittests/XRefsTests.cpp
Index: clang-tools-extra/clangd/unittests/XRefsTests.cpp
===================================================================
--- clang-tools-extra/clangd/unittests/XRefsTests.cpp
+++ clang-tools-extra/clangd/unittests/XRefsTests.cpp
@@ -358,15 +358,15 @@
)cpp",
R"cpp(// Forward class declaration
- class Foo;
- class [[Foo]] {};
+ class $decl[[Foo]];
+ class $def[[Foo]] {};
F^oo* foo();
)cpp",
R"cpp(// Function declaration
- void foo();
+ void $decl[[foo]]();
void g() { f^oo(); }
- void [[foo]]() {}
+ void $def[[foo]]() {}
)cpp",
R"cpp(
Index: clang-tools-extra/clangd/XRefs.cpp
===================================================================
--- clang-tools-extra/clangd/XRefs.cpp
+++ clang-tools-extra/clangd/XRefs.cpp
@@ -226,23 +226,21 @@
llvm::DenseMap<SymbolID, size_t> ResultIndex;
auto AddResultDecl = [&](const NamedDecl *D) {
- const NamedDecl *Def = getDefinition(D);
- const NamedDecl *Preferred = Def ? Def : D;
-
- auto Loc = makeLocation(AST.getASTContext(), nameLocation(*Preferred, SM),
- MainFilePath);
+ D = llvm::cast<NamedDecl>(D->getCanonicalDecl());
+ auto Loc =
+ makeLocation(AST.getASTContext(), nameLocation(*D, SM), MainFilePath);
if (!Loc)
return;
Result.emplace_back();
- Result.back().Name = printName(AST.getASTContext(), *Preferred);
+ Result.back().Name = printName(AST.getASTContext(), *D);
Result.back().PreferredDeclaration = *Loc;
- // Preferred is always a definition if possible, so this check works.
- if (Def == Preferred)
- Result.back().Definition = *Loc;
+ if (const NamedDecl *Def = getDefinition(D))
+ Result.back().Definition = makeLocation(
+ AST.getASTContext(), nameLocation(*Def, SM), MainFilePath);
// Record SymbolID for index lookup later.
- if (auto ID = getSymbolID(Preferred))
+ if (auto ID = getSymbolID(D))
ResultIndex[*ID] = Result.size() - 1;
};
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73369.252690.patch
Type: text/x-patch
Size: 2079 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200325/ea26476c/attachment-0001.bin>
More information about the cfe-commits
mailing list