summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/FindTarget.cpp4
-rw-r--r--clang-tools-extra/clangd/unittests/FindTargetTests.cpp7
2 files changed, 11 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/FindTarget.cpp b/clang-tools-extra/clangd/FindTarget.cpp
index 5bdb1a63b87..5912464b0ed 100644
--- a/clang-tools-extra/clangd/FindTarget.cpp
+++ b/clang-tools-extra/clangd/FindTarget.cpp
@@ -374,6 +374,10 @@ public:
Outer.add(TT->getAsTagDecl(), Flags);
}
+ void VisitElaboratedType(const ElaboratedType *ET) {
+ Outer.add(ET->desugar(), Flags);
+ }
+
void VisitInjectedClassNameType(const InjectedClassNameType *ICNT) {
Outer.add(ICNT->getDecl(), Flags);
}
diff --git a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
index bbba007d242..9c1020b7a18 100644
--- a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
+++ b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
@@ -242,6 +242,13 @@ TEST_F(TargetDeclTest, Types) {
)cpp";
EXPECT_DECLS("TypedefTypeLoc", {"typedef S X", Rel::Alias},
{"struct S", Rel::Underlying});
+ Code = R"cpp(
+ namespace ns { struct S{}; }
+ typedef ns::S X;
+ [[X]] x;
+ )cpp";
+ EXPECT_DECLS("TypedefTypeLoc", {"typedef ns::S X", Rel::Alias},
+ {"struct S", Rel::Underlying});
// FIXME: Auto-completion in a template requires disabling delayed template
// parsing.
OpenPOWER on IntegriCloud