This revision was automatically updated to reflect the committed changes. Closed by commit rL363568: [clangd] Perform merge for main file symbols. (authored by hokein, committed by ). Herald added a project: LLVM. Herald added a subscriber: llvm-commits.
Changed prior to commit: https://reviews.llvm.org/D63425?vs=205053&id=205072#toc Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D63425/new/ https://reviews.llvm.org/D63425 Files: clang-tools-extra/trunk/clangd/index/FileIndex.cpp clang-tools-extra/trunk/clangd/unittests/FileIndexTests.cpp Index: clang-tools-extra/trunk/clangd/unittests/FileIndexTests.cpp =================================================================== --- clang-tools-extra/trunk/clangd/unittests/FileIndexTests.cpp +++ clang-tools-extra/trunk/clangd/unittests/FileIndexTests.cpp @@ -46,6 +46,7 @@ } MATCHER_P(QName, N, "") { return (arg.Scope + arg.Name).str() == N; } MATCHER_P(NumReferences, N, "") { return arg.References == N; } +MATCHER_P(hasOrign, O, "") { return bool(arg.Origin & O); } namespace clang { namespace clangd { @@ -386,6 +387,27 @@ RefsAre({RefRange(Main.range())})); } +TEST(FileIndexTest, MergeMainFileSymbols) { + const char* CommonHeader = "void foo();"; + TestTU Header = TestTU::withCode(CommonHeader); + TestTU Cpp = TestTU::withCode("void foo() {}"); + Cpp.Filename = "foo.cpp"; + Cpp.HeaderFilename = "foo.h"; + Cpp.HeaderCode = CommonHeader; + + FileIndex Index; + auto HeaderAST = Header.build(); + auto CppAST = Cpp.build(); + Index.updateMain(testPath("foo.h"), HeaderAST); + Index.updateMain(testPath("foo.cpp"), CppAST); + + auto Symbols = runFuzzyFind(Index, ""); + // Check foo is merged, foo in Cpp wins (as we see the definition there). + EXPECT_THAT(Symbols, ElementsAre(AllOf(DeclURI("unittest:///foo.h"), + DefURI("unittest:///foo.cpp"), + hasOrign(SymbolOrigin::Merge)))); +} + TEST(FileSymbolsTest, CountReferencesNoRefSlabs) { FileSymbols FS; FS.update("f1", numSlab(1, 3), nullptr, nullptr, true); Index: clang-tools-extra/trunk/clangd/index/FileIndex.cpp =================================================================== --- clang-tools-extra/trunk/clangd/index/FileIndex.cpp +++ clang-tools-extra/trunk/clangd/index/FileIndex.cpp @@ -260,7 +260,7 @@ llvm::make_unique<RelationSlab>(std::move(std::get<2>(Contents))), /*CountReferences=*/true); MainFileIndex.reset( - MainFileSymbols.buildIndex(IndexType::Light, DuplicateHandling::PickOne)); + MainFileSymbols.buildIndex(IndexType::Light, DuplicateHandling::Merge)); } } // namespace clangd
Index: clang-tools-extra/trunk/clangd/unittests/FileIndexTests.cpp =================================================================== --- clang-tools-extra/trunk/clangd/unittests/FileIndexTests.cpp +++ clang-tools-extra/trunk/clangd/unittests/FileIndexTests.cpp @@ -46,6 +46,7 @@ } MATCHER_P(QName, N, "") { return (arg.Scope + arg.Name).str() == N; } MATCHER_P(NumReferences, N, "") { return arg.References == N; } +MATCHER_P(hasOrign, O, "") { return bool(arg.Origin & O); } namespace clang { namespace clangd { @@ -386,6 +387,27 @@ RefsAre({RefRange(Main.range())})); } +TEST(FileIndexTest, MergeMainFileSymbols) { + const char* CommonHeader = "void foo();"; + TestTU Header = TestTU::withCode(CommonHeader); + TestTU Cpp = TestTU::withCode("void foo() {}"); + Cpp.Filename = "foo.cpp"; + Cpp.HeaderFilename = "foo.h"; + Cpp.HeaderCode = CommonHeader; + + FileIndex Index; + auto HeaderAST = Header.build(); + auto CppAST = Cpp.build(); + Index.updateMain(testPath("foo.h"), HeaderAST); + Index.updateMain(testPath("foo.cpp"), CppAST); + + auto Symbols = runFuzzyFind(Index, ""); + // Check foo is merged, foo in Cpp wins (as we see the definition there). + EXPECT_THAT(Symbols, ElementsAre(AllOf(DeclURI("unittest:///foo.h"), + DefURI("unittest:///foo.cpp"), + hasOrign(SymbolOrigin::Merge)))); +} + TEST(FileSymbolsTest, CountReferencesNoRefSlabs) { FileSymbols FS; FS.update("f1", numSlab(1, 3), nullptr, nullptr, true); Index: clang-tools-extra/trunk/clangd/index/FileIndex.cpp =================================================================== --- clang-tools-extra/trunk/clangd/index/FileIndex.cpp +++ clang-tools-extra/trunk/clangd/index/FileIndex.cpp @@ -260,7 +260,7 @@ llvm::make_unique<RelationSlab>(std::move(std::get<2>(Contents))), /*CountReferences=*/true); MainFileIndex.reset( - MainFileSymbols.buildIndex(IndexType::Light, DuplicateHandling::PickOne)); + MainFileSymbols.buildIndex(IndexType::Light, DuplicateHandling::Merge)); } } // namespace clangd
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits