[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
Thu Mar 26 02:08:02 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rG6324912592a1: [clangd] Simplify "preferred" vs "definition" logic a bit in XRefs AST code. (authored by sammccall).
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.252771.patch
Type: text/x-patch
Size: 2079 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200326/688efc4f/attachment-0001.bin>
More information about the cfe-commits
mailing list