[clangd] Index UsingDecls

Summary:
D58340 enables indexing of USRs, this makes sure test in clangd are
aligned with the change

Reviewers: hokein

Subscribers: ilya-biryukov, ioeric, MaskRay, jkorous, arphaman, jdoerfert, cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D58341

llvm-svn: 354879
This commit is contained in:
Kadir Cetinkaya 2019-02-26 14:23:47 +00:00
parent a87ada0dad
commit 60ec08f067
4 changed files with 35 additions and 8 deletions

View File

@ -17,6 +17,7 @@
#include "SyncAPI.h"
#include "TestFS.h"
#include "TestIndex.h"
#include "TestTU.h"
#include "index/MemIndex.h"
#include "clang/Sema/CodeCompleteConsumer.h"
#include "llvm/Support/Error.h"
@ -2314,6 +2315,26 @@ TEST(CompletionTest, WorksWithNullType) {
EXPECT_THAT(R.Completions, ElementsAre(Named("loopVar")));
}
TEST(CompletionTest, UsingDecl) {
const char *Header(R"cpp(
void foo(int);
namespace std {
using ::foo;
})cpp");
const char *Source(R"cpp(
void bar() {
std::^;
})cpp");
auto Index = TestTU::withHeaderCode(Header).index();
clangd::CodeCompleteOptions Opts;
Opts.Index = Index.get();
Opts.AllScopes = true;
auto R = completions(Source, {}, Opts);
EXPECT_THAT(R.Completions,
ElementsAre(AllOf(Scope("std::"), Named("foo"),
Kind(CompletionItemKind::Reference))));
}
} // namespace
} // namespace clangd
} // namespace clang

View File

@ -368,9 +368,6 @@ TEST_F(DocumentSymbolsTest, BasicSymbols) {
// Namespace alias
namespace baz = bar;
// FIXME: using declaration is not supported as the IndexAction will ignore
// implicit declarations (the implicit using shadow declaration) by default,
// and there is no way to customize this behavior at the moment.
using bar::v2;
} // namespace foo
)");
@ -415,7 +412,7 @@ TEST_F(DocumentSymbolsTest, BasicSymbols) {
Children()))),
AllOf(WithName("baz"), WithKind(SymbolKind::Namespace),
Children()),
AllOf(WithName("v2"), WithKind(SymbolKind::Variable))))}));
AllOf(WithName("v2"), WithKind(SymbolKind::Namespace))))}));
}
TEST_F(DocumentSymbolsTest, DeclarationDefinition) {

View File

@ -331,9 +331,6 @@ TEST_F(SymbolCollectorTest, CollectSymbols) {
// Namespace alias
namespace baz = bar;
// FIXME: using declaration is not supported as the IndexAction will ignore
// implicit declarations (the implicit using shadow declaration) by default,
// and there is no way to customize this behavior at the moment.
using bar::v2;
} // namespace foo
)";
@ -360,6 +357,7 @@ TEST_F(SymbolCollectorTest, CollectSymbols) {
AllOf(QName("foo::int32_t"), ForCodeCompletion(true)),
AllOf(QName("foo::v1"), ForCodeCompletion(true)),
AllOf(QName("foo::bar::v2"), ForCodeCompletion(true)),
AllOf(QName("foo::v2"), ForCodeCompletion(true)),
AllOf(QName("foo::baz"), ForCodeCompletion(true))}));
}
@ -1149,6 +1147,16 @@ TEST_F(SymbolCollectorTest, ImplementationDetail) {
AllOf(QName("Public"), Not(ImplementationDetail()))));
}
TEST_F(SymbolCollectorTest, UsingDecl) {
const char *Header = R"(
void foo();
namespace std {
using ::foo;
})";
runSymbolCollector(Header, /**/ "");
EXPECT_THAT(Symbols, Contains(QName("std::foo")));
}
} // namespace
} // namespace clangd
} // namespace clang

View File

@ -167,7 +167,8 @@ TEST(SymbolInfoTests, All) {
)cpp",
{CreateExpectedSymbolDetails("foo", "", "c:@F@foo#"),
CreateExpectedSymbolDetails("foo", "", "c:@F@foo#b#"),
CreateExpectedSymbolDetails("foo", "", "c:@F@foo#I#")}},
CreateExpectedSymbolDetails("foo", "", "c:@F@foo#I#"),
CreateExpectedSymbolDetails("foo", "bar::", "c:@N@bar@UD@foo")}},
{
R"cpp( // Multiple symbols returned - implicit conversion
struct foo {};