[clang-tools-extra] f88ce07 - [clangd] Make config::Provider::combine non-owning. NFC
Sam McCall via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 14 11:45:28 PDT 2020
Author: Sam McCall
Date: 2020-07-14T20:45:02+02:00
New Revision: f88ce078f778886d8dc0408c4ed6344f3332bdd1
URL: https://github.com/llvm/llvm-project/commit/f88ce078f778886d8dc0408c4ed6344f3332bdd1
DIFF: https://github.com/llvm/llvm-project/commit/f88ce078f778886d8dc0408c4ed6344f3332bdd1.diff
LOG: [clangd] Make config::Provider::combine non-owning. NFC
This is a prerequisite for having ClangdLSPServer inject its own.
Added:
Modified:
clang-tools-extra/clangd/ConfigProvider.cpp
clang-tools-extra/clangd/ConfigProvider.h
clang-tools-extra/clangd/tool/ClangdMain.cpp
clang-tools-extra/clangd/unittests/ConfigProviderTests.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clangd/ConfigProvider.cpp b/clang-tools-extra/clangd/ConfigProvider.cpp
index 1f0f727998e3..eec1ae992194 100644
--- a/clang-tools-extra/clangd/ConfigProvider.cpp
+++ b/clang-tools-extra/clangd/ConfigProvider.cpp
@@ -193,9 +193,9 @@ Provider::fromAncestorRelativeYAMLFiles(llvm::StringRef RelPath,
}
std::unique_ptr<Provider>
-Provider::combine(std::vector<std::unique_ptr<Provider>> Providers) {
+Provider::combine(std::vector<const Provider *> Providers) {
struct CombinedProvider : Provider {
- std::vector<std::unique_ptr<Provider>> Providers;
+ std::vector<const Provider *> Providers;
std::vector<CompiledFragment>
getFragments(const Params &P, DiagnosticCallback DC) const override {
diff --git a/clang-tools-extra/clangd/ConfigProvider.h b/clang-tools-extra/clangd/ConfigProvider.h
index f6c26bde9e0f..1ef33c79c1e8 100644
--- a/clang-tools-extra/clangd/ConfigProvider.h
+++ b/clang-tools-extra/clangd/ConfigProvider.h
@@ -76,8 +76,7 @@ class Provider {
/// A provider that includes fragments from all the supplied providers.
/// Order is preserved; later providers take precedence over earlier ones.
- static std::unique_ptr<Provider>
- combine(std::vector<std::unique_ptr<Provider>>);
+ static std::unique_ptr<Provider> combine(std::vector<const Provider *>);
/// Build a config based on this provider.
Config getConfig(const Params &, DiagnosticCallback) const;
diff --git a/clang-tools-extra/clangd/tool/ClangdMain.cpp b/clang-tools-extra/clangd/tool/ClangdMain.cpp
index 12d3e299868e..780495530856 100644
--- a/clang-tools-extra/clangd/tool/ClangdMain.cpp
+++ b/clang-tools-extra/clangd/tool/ClangdMain.cpp
@@ -703,9 +703,9 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
CCOpts.RunParser = CodeCompletionParse;
RealThreadsafeFS TFS;
+ std::vector<std::unique_ptr<config::Provider>> ProviderStack;
std::unique_ptr<config::Provider> Config;
if (EnableConfig) {
- std::vector<std::unique_ptr<config::Provider>> ProviderStack;
ProviderStack.push_back(
config::Provider::fromAncestorRelativeYAMLFiles(".clangd", TFS));
llvm::SmallString<256> UserConfig;
@@ -716,7 +716,10 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
} else {
elog("Couldn't determine user config file, not loading");
}
- Config = config::Provider::combine(std::move(ProviderStack));
+ std::vector<const config::Provider *> ProviderPointers;
+ for (const auto& P : ProviderStack)
+ ProviderPointers.push_back(P.get());
+ Config = config::Provider::combine(std::move(ProviderPointers));
Opts.ConfigProvider = Config.get();
}
diff --git a/clang-tools-extra/clangd/unittests/ConfigProviderTests.cpp b/clang-tools-extra/clangd/unittests/ConfigProviderTests.cpp
index ff3198e8d335..0cf582410ff8 100644
--- a/clang-tools-extra/clangd/unittests/ConfigProviderTests.cpp
+++ b/clang-tools-extra/clangd/unittests/ConfigProviderTests.cpp
@@ -57,10 +57,9 @@ std::vector<std::string> getAddedArgs(Config &C) {
// cache their results.
TEST(ProviderTest, Combine) {
CapturedDiags Diags;
- std::vector<std::unique_ptr<Provider>> Providers;
- Providers.push_back(std::make_unique<FakeProvider>("foo"));
- Providers.push_back(std::make_unique<FakeProvider>("bar"));
- auto Combined = Provider::combine(std::move(Providers));
+ FakeProvider Foo("foo");
+ FakeProvider Bar("bar");
+ auto Combined = Provider::combine({&Foo, &Bar});
Config Cfg = Combined->getConfig(Params(), Diags.callback());
EXPECT_THAT(Diags.Diagnostics,
ElementsAre(DiagMessage("foo"), DiagMessage("bar")));
More information about the cfe-commits
mailing list