This revision was automatically updated to reflect the committed changes. Closed by commit rG7730599c4164: [clangd] FindTarget resolves base specifier (authored by njames93).
Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D95338/new/ https://reviews.llvm.org/D95338 Files: clang-tools-extra/clangd/FindTarget.cpp clang-tools-extra/clangd/unittests/FindTargetTests.cpp Index: clang-tools-extra/clangd/unittests/FindTargetTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/FindTargetTests.cpp +++ clang-tools-extra/clangd/unittests/FindTargetTests.cpp @@ -230,6 +230,24 @@ {"void waldo()"}); } +TEST_F(TargetDeclTest, BaseSpecifier) { + Code = R"cpp( + struct X {}; + struct Y : [[private]] X {}; + )cpp"; + EXPECT_DECLS("CXXBaseSpecifier", "struct X"); + Code = R"cpp( + struct X {}; + struct Y : [[private X]] {}; + )cpp"; + EXPECT_DECLS("CXXBaseSpecifier", "struct X"); + Code = R"cpp( + struct X {}; + struct Y : private [[X]] {}; + )cpp"; + EXPECT_DECLS("RecordTypeLoc", "struct X"); +} + TEST_F(TargetDeclTest, ConstructorInitList) { Code = R"cpp( struct X { Index: clang-tools-extra/clangd/FindTarget.cpp =================================================================== --- clang-tools-extra/clangd/FindTarget.cpp +++ clang-tools-extra/clangd/FindTarget.cpp @@ -710,7 +710,8 @@ Finder.add(CCI, Flags); else if (const TemplateArgumentLoc *TAL = N.get<TemplateArgumentLoc>()) Finder.add(TAL->getArgument(), Flags); - + else if (const CXXBaseSpecifier *CBS = N.get<CXXBaseSpecifier>()) + Finder.add(CBS->getTypeSourceInfo()->getType(), Flags); return Finder.takeDecls(); }
Index: clang-tools-extra/clangd/unittests/FindTargetTests.cpp =================================================================== --- clang-tools-extra/clangd/unittests/FindTargetTests.cpp +++ clang-tools-extra/clangd/unittests/FindTargetTests.cpp @@ -230,6 +230,24 @@ {"void waldo()"}); } +TEST_F(TargetDeclTest, BaseSpecifier) { + Code = R"cpp( + struct X {}; + struct Y : [[private]] X {}; + )cpp"; + EXPECT_DECLS("CXXBaseSpecifier", "struct X"); + Code = R"cpp( + struct X {}; + struct Y : [[private X]] {}; + )cpp"; + EXPECT_DECLS("CXXBaseSpecifier", "struct X"); + Code = R"cpp( + struct X {}; + struct Y : private [[X]] {}; + )cpp"; + EXPECT_DECLS("RecordTypeLoc", "struct X"); +} + TEST_F(TargetDeclTest, ConstructorInitList) { Code = R"cpp( struct X { Index: clang-tools-extra/clangd/FindTarget.cpp =================================================================== --- clang-tools-extra/clangd/FindTarget.cpp +++ clang-tools-extra/clangd/FindTarget.cpp @@ -710,7 +710,8 @@ Finder.add(CCI, Flags); else if (const TemplateArgumentLoc *TAL = N.get<TemplateArgumentLoc>()) Finder.add(TAL->getArgument(), Flags); - + else if (const CXXBaseSpecifier *CBS = N.get<CXXBaseSpecifier>()) + Finder.add(CBS->getTypeSourceInfo()->getType(), Flags); return Finder.takeDecls(); }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits