[clang-tools-extra] r343221 - Tell whether file/folder for include completions.
Kadir Cetinkaya via cfe-commits
cfe-commits at lists.llvm.org
Thu Sep 27 07:21:08 PDT 2018
Author: kadircet
Date: Thu Sep 27 07:21:07 2018
New Revision: 343221
URL: http://llvm.org/viewvc/llvm-project?rev=343221&view=rev
Log:
Tell whether file/folder for include completions.
Reviewers: sammccall
Reviewed By: sammccall
Subscribers: ilya-biryukov, ioeric, jkorous, arphaman, cfe-commits
Differential Revision: https://reviews.llvm.org/D52547
Modified:
clang-tools-extra/trunk/clangd/CodeComplete.cpp
clang-tools-extra/trunk/clangd/Protocol.h
clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp
Modified: clang-tools-extra/trunk/clangd/CodeComplete.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/CodeComplete.cpp?rev=343221&r1=343220&r2=343221&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/CodeComplete.cpp (original)
+++ clang-tools-extra/trunk/clangd/CodeComplete.cpp Thu Sep 27 07:21:07 2018
@@ -349,6 +349,11 @@ struct CodeCompletionBuilder {
}
Completion.Kind = toCompletionItemKind(
C.SemaResult->Kind, C.SemaResult->Declaration, ContextKind);
+ // Sema could provide more info on whether the completion was a file or
+ // folder.
+ if (Completion.Kind == CompletionItemKind::File &&
+ Completion.Name.back() == '/')
+ Completion.Kind = CompletionItemKind::Folder;
for (const auto &FixIt : C.SemaResult->FixIts) {
Completion.FixIts.push_back(
toTextEdit(FixIt, ASTCtx.getSourceManager(), ASTCtx.getLangOpts()));
Modified: clang-tools-extra/trunk/clangd/Protocol.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/Protocol.h?rev=343221&r1=343220&r2=343221&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/Protocol.h (original)
+++ clang-tools-extra/trunk/clangd/Protocol.h Thu Sep 27 07:21:07 2018
@@ -704,6 +704,13 @@ enum class CompletionItemKind {
Color = 16,
File = 17,
Reference = 18,
+ Folder = 19,
+ EnumMember = 20,
+ Constant = 21,
+ Struct = 22,
+ Event = 23,
+ Operator = 24,
+ TypeParameter = 25,
};
/// Defines whether the insert text in a completion item should be interpreted
Modified: clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp?rev=343221&r1=343220&r2=343221&view=diff
==============================================================================
--- clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp (original)
+++ clang-tools-extra/trunk/unittests/clangd/CodeCompleteTests.cpp Thu Sep 27 07:21:07 2018
@@ -2073,6 +2073,27 @@ TEST(SignatureHelpTest, ConstructorIniti
}
}
+TEST(CompletionTest, IncludedCompletionKinds) {
+ MockFSProvider FS;
+ MockCompilationDatabase CDB;
+ std::string Subdir = testPath("sub");
+ std::string SearchDirArg = (llvm::Twine("-I") + Subdir).str();
+ CDB.ExtraClangFlags = {SearchDirArg.c_str()};
+ std::string BarHeader = testPath("sub/bar.h");
+ FS.Files[BarHeader] = "";
+ IgnoreDiagnostics DiagConsumer;
+ ClangdServer Server(CDB, FS, DiagConsumer, ClangdServer::optsForTest());
+ auto Results = completions(Server,
+ R"cpp(
+ #include "^"
+ )cpp"
+ );
+ EXPECT_THAT(Results.Completions,
+ AllOf(Has("sub/", CompletionItemKind::Folder),
+ Has("bar.h\"", CompletionItemKind::File)));
+}
+
+
} // namespace
} // namespace clangd
} // namespace clang
More information about the cfe-commits
mailing list