diff options
author | Sam McCall <sam.mccall@gmail.com> | 2018-09-18 09:08:28 +0000 |
---|---|---|
committer | Sam McCall <sam.mccall@gmail.com> | 2018-09-18 09:08:28 +0000 |
commit | 0e33f869cef152c7c4344cb5fb7c9b83a6397fc3 (patch) | |
tree | 8af12ba16b40331b64614f86e8d0b5cfc3f1996b /clang-tools-extra/clangd | |
parent | 1feab46e272111969228bf4da6d65781b8b4c43f (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.cpp | 14 |
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); } |