summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang-tools-extra/clangd/FindTarget.cpp5
-rw-r--r--clang-tools-extra/clangd/unittests/FindTargetTests.cpp8
2 files changed, 13 insertions, 0 deletions
diff --git a/clang-tools-extra/clangd/FindTarget.cpp b/clang-tools-extra/clangd/FindTarget.cpp
index 71bb9d3d506..5bdb1a63b87 100644
--- a/clang-tools-extra/clangd/FindTarget.cpp
+++ b/clang-tools-extra/clangd/FindTarget.cpp
@@ -373,6 +373,11 @@ public:
void VisitTagType(const TagType *TT) {
Outer.add(TT->getAsTagDecl(), Flags);
}
+
+ void VisitInjectedClassNameType(const InjectedClassNameType *ICNT) {
+ Outer.add(ICNT->getDecl(), Flags);
+ }
+
void VisitDecltypeType(const DecltypeType *DTT) {
Outer.add(DTT->getUnderlyingType(), Flags | Rel::Underlying);
}
diff --git a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
index 408ebe24e77..bbba007d242 100644
--- a/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
+++ b/clang-tools-extra/clangd/unittests/FindTargetTests.cpp
@@ -286,6 +286,14 @@ TEST_F(TargetDeclTest, Types) {
)cpp";
// FIXME: We don't do a good job printing TemplateTypeParmDecls, apparently!
EXPECT_DECLS("SizeOfPackExpr", "");
+
+ Code = R"cpp(
+ template <typename T>
+ class Foo {
+ void f([[Foo]] x);
+ };
+ )cpp";
+ EXPECT_DECLS("InjectedClassNameTypeLoc", "class Foo");
}
TEST_F(TargetDeclTest, ClassTemplate) {
OpenPOWER on IntegriCloud