[PATCH] D73109: [clang][index] Index the injected class name types.
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Jan 22 00:51:36 PST 2020
hokein updated this revision to Diff 239504.
hokein added a comment.
clang-format the code.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73109/new/
https://reviews.llvm.org/D73109
Files:
clang/lib/Index/IndexTypeSourceInfo.cpp
clang/unittests/Index/IndexTests.cpp
Index: clang/unittests/Index/IndexTests.cpp
===================================================================
--- clang/unittests/Index/IndexTests.cpp
+++ clang/unittests/Index/IndexTests.cpp
@@ -293,6 +293,27 @@
WrittenAt(Position(4, 8)))));
}
+TEST(IndexTest, InjecatedNameClass) {
+ std::string Code = R"cpp(
+ template <typename T>
+ class Foo {
+ void f(Foo x);
+ };
+ )cpp";
+ auto Index = std::make_shared<Indexer>();
+ IndexingOptions Opts;
+ tooling::runToolOnCode(std::make_unique<IndexAction>(Index, Opts), Code);
+ EXPECT_THAT(Index->Symbols,
+ UnorderedElementsAre(AllOf(QName("Foo"), Kind(SymbolKind::Class),
+ WrittenAt(Position(3, 11))),
+ AllOf(QName("Foo::f"),
+ Kind(SymbolKind::InstanceMethod),
+ WrittenAt(Position(4, 12))),
+ AllOf(QName("Foo"), Kind(SymbolKind::Class),
+ HasRole(SymbolRole::Reference),
+ WrittenAt(Position(4, 14)))));
+}
+
} // namespace
} // namespace index
} // namespace clang
Index: clang/lib/Index/IndexTypeSourceInfo.cpp
===================================================================
--- clang/lib/Index/IndexTypeSourceInfo.cpp
+++ clang/lib/Index/IndexTypeSourceInfo.cpp
@@ -170,6 +170,11 @@
return true;
}
+ bool VisitInjectedClassNameTypeLoc(InjectedClassNameTypeLoc TL) {
+ return IndexCtx.handleReference(TL.getDecl(), TL.getNameLoc(), Parent,
+ ParentDC, SymbolRoleSet(), Relations);
+ }
+
bool VisitDependentNameTypeLoc(DependentNameTypeLoc TL) {
const DependentNameType *DNT = TL.getTypePtr();
const NestedNameSpecifier *NNS = DNT->getQualifier();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D73109.239504.patch
Type: text/x-patch
Size: 1898 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200122/317712a4/attachment.bin>
More information about the cfe-commits
mailing list