summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp
diff options
context:
space:
mode:
authorHaojian Wu <hokein@google.com>2018-01-10 14:44:34 +0000
committerHaojian Wu <hokein@google.com>2018-01-10 14:44:34 +0000
commitba28e9ac5dfce8535fbe137207bd6c7aa1560db3 (patch)
treeb78fa19ab229f2e21974ff50e7ed8a4e44a3d638 /clang-tools-extra/unittests/clangd/CodeCompleteTests.cpp
parent7da84753a347bb9b335b0a7106b1930c68953726 (diff)
downloadbcm5719-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.cpp31
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},
OpenPOWER on IntegriCloud