summaryrefslogtreecommitdiff
path: root/clang-tools-extra/clangd
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2018-09-18 09:08:28 +0000
committerSam McCall <sam.mccall@gmail.com>2018-09-18 09:08:28 +0000
commit0e33f869cef152c7c4344cb5fb7c9b83a6397fc3 (patch)
tree8af12ba16b40331b64614f86e8d0b5cfc3f1996b /clang-tools-extra/clangd
parent1feab46e272111969228bf4da6d65781b8b4c43f (diff)
[clangd] Update code completion for #include completions in r342449
Diffstat (limited to 'clang-tools-extra/clangd')
-rw-r--r--clang-tools-extra/clangd/CodeComplete.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/clang-tools-extra/clangd/CodeComplete.cpp b/clang-tools-extra/clangd/CodeComplete.cpp
index 0f3dab83ac3..ca083964e9c 100644
--- a/clang-tools-extra/clangd/CodeComplete.cpp
+++ b/clang-tools-extra/clangd/CodeComplete.cpp
@@ -116,9 +116,12 @@ CompletionItemKind toCompletionItemKind(index::SymbolKind Kind) {
CompletionItemKind
toCompletionItemKind(CodeCompletionResult::ResultKind ResKind,
- const NamedDecl *Decl) {
+ const NamedDecl *Decl,
+ CodeCompletionContext::Kind CtxKind) {
if (Decl)
return toCompletionItemKind(index::getSymbolInfo(Decl).Kind);
+ if (CtxKind == CodeCompletionContext::CCC_IncludedFile)
+ return CompletionItemKind::File;
switch (ResKind) {
case CodeCompletionResult::RK_Declaration:
llvm_unreachable("RK_Declaration without Decl");
@@ -328,6 +331,7 @@ struct CodeCompletionBuilder {
CodeCompletionBuilder(ASTContext &ASTCtx, const CompletionCandidate &C,
CodeCompletionString *SemaCCS,
const IncludeInserter &Includes, StringRef FileName,
+ CodeCompletionContext::Kind ContextKind,
const CodeCompleteOptions &Opts)
: ASTCtx(ASTCtx), ExtractDocumentation(Opts.IncludeComments),
EnableFunctionArgSnippets(Opts.EnableFunctionArgSnippets) {
@@ -343,8 +347,8 @@ struct CodeCompletionBuilder {
Completion.Scope =
splitQualifiedName(printQualifiedName(*ND)).first;
}
- Completion.Kind =
- toCompletionItemKind(C.SemaResult->Kind, C.SemaResult->Declaration);
+ Completion.Kind = toCompletionItemKind(
+ C.SemaResult->Kind, C.SemaResult->Declaration, ContextKind);
for (const auto &FixIt : C.SemaResult->FixIts) {
Completion.FixIts.push_back(
toTextEdit(FixIt, ASTCtx.getSourceManager(), ASTCtx.getLangOpts()));
@@ -653,6 +657,7 @@ bool contextAllowsIndex(enum CodeCompletionContext::Kind K) {
case CodeCompletionContext::CCC_TypeQualifiers:
case CodeCompletionContext::CCC_ObjCInstanceMessage:
case CodeCompletionContext::CCC_ObjCClassMessage:
+ case CodeCompletionContext::CCC_IncludedFile:
case CodeCompletionContext::CCC_Recovery:
return false;
}
@@ -1547,7 +1552,8 @@ private:
: nullptr;
if (!Builder)
Builder.emplace(Recorder->CCSema->getASTContext(), Item, SemaCCS,
- *Inserter, FileName, Opts);
+ *Inserter, FileName, Recorder->CCContext.getKind(),
+ Opts);
else
Builder->add(Item, SemaCCS);
}