diff options
| author | Haojian Wu <hokein@google.com> | 2018-01-10 14:44:34 +0000 |
|---|---|---|
| committer | Haojian Wu <hokein@google.com> | 2018-01-10 14:44:34 +0000 |
| commit | ba28e9ac5dfce8535fbe137207bd6c7aa1560db3 (patch) | |
| tree | b78fa19ab229f2e21974ff50e7ed8a4e44a3d638 /clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp | |
| parent | 7da84753a347bb9b335b0a7106b1930c68953726 (diff) | |
| download | bcm5719-llvm-ba28e9ac5dfce8535fbe137207bd6c7aa1560db3.tar.gz bcm5719-llvm-ba28e9ac5dfce8535fbe137207bd6c7aa1560db3.zip | |
[clangd] Add static index for the global code completion.
Summary:
Use the YAML-format symbols (generated by the global-symbol-builder tool) to
do the global code completion.
It is **experimental** only , but it allows us to experience global code
completion on a relatively small project.
Tested with LLVM project.
Reviewers: sammccall, ioeric
Reviewed By: sammccall, ioeric
Subscribers: klimek, ilya-biryukov, cfe-commits
Differential Revision: https://reviews.llvm.org/D41668
llvm-svn: 322191
Diffstat (limited to 'clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp')
| -rw-r--r-- | clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp b/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp index 942a87abae0..497263959e9 100644 --- a/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp +++ b/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp @@ -455,12 +455,6 @@ TEST(SignatureHelpTest, ActiveArg) { std::unique_ptr<SymbolIndex> simpleIndexFromSymbols( std::vector<std::pair<std::string, index::SymbolKind>> Symbols) { - auto I = llvm::make_unique<MemIndex>(); - struct Snapshot { - SymbolSlab Slab; - std::vector<const Symbol *> Pointers; - }; - auto Snap = std::make_shared<Snapshot>(); SymbolSlab::Builder Slab; for (const auto &Pair : Symbols) { Symbol Sym; @@ -478,13 +472,7 @@ std::unique_ptr<SymbolIndex> simpleIndexFromSymbols( Sym.SymInfo.Kind = Pair.second; Slab.insert(Sym); } - Snap->Slab = std::move(Slab).build(); - for (auto &Iter : Snap->Slab) - Snap->Pointers.push_back(&Iter); - auto S = std::shared_ptr<std::vector<const Symbol *>>(std::move(Snap), - &Snap->Pointers); - I->build(std::move(S)); - return std::move(I); + return MemIndex::build(std::move(Slab).build()); } TEST(CompletionTest, NoIndex) { @@ -499,6 +487,23 @@ TEST(CompletionTest, NoIndex) { EXPECT_THAT(Results.items, Has("No")); } +TEST(CompletionTest, StaticAndDynamicIndex) { + clangd::CodeCompleteOptions Opts; + auto StaticIdx = + simpleIndexFromSymbols({{"ns::XYZ", index::SymbolKind::Class}}); + Opts.StaticIndex = StaticIdx.get(); + auto DynamicIdx = + simpleIndexFromSymbols({{"ns::foo", index::SymbolKind::Function}}); + Opts.Index = DynamicIdx.get(); + + auto Results = completions(R"cpp( + void f() { ::ns::^ } + )cpp", + Opts); + EXPECT_THAT(Results.items, Contains(Labeled("[G]XYZ"))); + EXPECT_THAT(Results.items, Contains(Labeled("foo"))); +} + TEST(CompletionTest, SimpleIndexBased) { clangd::CodeCompleteOptions Opts; auto I = simpleIndexFromSymbols({{"ns::XYZ", index::SymbolKind::Class}, |

