File tree Expand file tree Collapse file tree 4 files changed +11
-10
lines changed Expand file tree Collapse file tree 4 files changed +11
-10
lines changed Original file line number Diff line number Diff line change @@ -193,9 +193,9 @@ Provider::fromAncestorRelativeYAMLFiles(llvm::StringRef RelPath,
193
193
}
194
194
195
195
std::unique_ptr<Provider>
196
- Provider::combine (std::vector<std::unique_ptr< Provider> > Providers) {
196
+ Provider::combine (std::vector<const Provider * > Providers) {
197
197
struct CombinedProvider : Provider {
198
- std::vector<std::unique_ptr< Provider> > Providers;
198
+ std::vector<const Provider * > Providers;
199
199
200
200
std::vector<CompiledFragment>
201
201
getFragments (const Params &P, DiagnosticCallback DC) const override {
Original file line number Diff line number Diff line change @@ -76,8 +76,7 @@ class Provider {
76
76
77
77
// / A provider that includes fragments from all the supplied providers.
78
78
// / Order is preserved; later providers take precedence over earlier ones.
79
- static std::unique_ptr<Provider>
80
- combine (std::vector<std::unique_ptr<Provider>>);
79
+ static std::unique_ptr<Provider> combine (std::vector<const Provider *>);
81
80
82
81
// / Build a config based on this provider.
83
82
Config getConfig (const Params &, DiagnosticCallback) const ;
Original file line number Diff line number Diff line change @@ -703,9 +703,9 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
703
703
CCOpts.RunParser = CodeCompletionParse;
704
704
705
705
RealThreadsafeFS TFS;
706
+ std::vector<std::unique_ptr<config::Provider>> ProviderStack;
706
707
std::unique_ptr<config::Provider> Config;
707
708
if (EnableConfig) {
708
- std::vector<std::unique_ptr<config::Provider>> ProviderStack;
709
709
ProviderStack.push_back (
710
710
config::Provider::fromAncestorRelativeYAMLFiles (" .clangd" , TFS));
711
711
llvm::SmallString<256 > UserConfig;
@@ -716,7 +716,10 @@ clangd accepts flags on the commandline, and in the CLANGD_FLAGS environment var
716
716
} else {
717
717
elog (" Couldn't determine user config file, not loading" );
718
718
}
719
- Config = config::Provider::combine (std::move (ProviderStack));
719
+ std::vector<const config::Provider *> ProviderPointers;
720
+ for (const auto & P : ProviderStack)
721
+ ProviderPointers.push_back (P.get ());
722
+ Config = config::Provider::combine (std::move (ProviderPointers));
720
723
Opts.ConfigProvider = Config.get ();
721
724
}
722
725
Original file line number Diff line number Diff line change @@ -57,10 +57,9 @@ std::vector<std::string> getAddedArgs(Config &C) {
57
57
// cache their results.
58
58
TEST (ProviderTest, Combine) {
59
59
CapturedDiags Diags;
60
- std::vector<std::unique_ptr<Provider>> Providers;
61
- Providers.push_back (std::make_unique<FakeProvider>(" foo" ));
62
- Providers.push_back (std::make_unique<FakeProvider>(" bar" ));
63
- auto Combined = Provider::combine (std::move (Providers));
60
+ FakeProvider Foo (" foo" );
61
+ FakeProvider Bar (" bar" );
62
+ auto Combined = Provider::combine ({&Foo, &Bar});
64
63
Config Cfg = Combined->getConfig (Params (), Diags.callback ());
65
64
EXPECT_THAT (Diags.Diagnostics ,
66
65
ElementsAre (DiagMessage (" foo" ), DiagMessage (" bar" )));
You can’t perform that action at this time.
0 commit comments