sammccall updated this revision to Diff 252689.
sammccall marked 3 inline comments as done.
sammccall added a comment.
address comments, rebase
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),
+ 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;
};
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),
+ 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;
};
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits