diff --git a/clang-tools-extra/clangd/ConfigCompile.cpp b/clang-tools-extra/clangd/ConfigCompile.cpp --- a/clang-tools-extra/clangd/ConfigCompile.cpp +++ b/clang-tools-extra/clangd/ConfigCompile.cpp @@ -371,7 +371,7 @@ } void compile(Fragment::DiagnosticsBlock &&F) { - std::vector Normalized; + std::vector Normalized; for (const auto &Suppressed : F.Suppress) { if (*Suppressed == "*") { Out.Apply.push_back([&](const Params &, Config &C) { @@ -380,15 +380,16 @@ }); return; } - Normalized.push_back(normalizeSuppressedCode(*Suppressed)); + Normalized.push_back(normalizeSuppressedCode(*Suppressed).str()); } if (!Normalized.empty()) - Out.Apply.push_back([Normalized](const Params &, Config &C) { - if (C.Diagnostics.SuppressAll) - return; - for (llvm::StringRef N : Normalized) - C.Diagnostics.Suppress.insert(N); - }); + Out.Apply.push_back( + [Normalized(std::move(Normalized))](const Params &, Config &C) { + if (C.Diagnostics.SuppressAll) + return; + for (llvm::StringRef N : Normalized) + C.Diagnostics.Suppress.insert(N); + }); compile(std::move(F.ClangTidy)); }