@@ -46,7 +46,7 @@ class DotClangTidyCache : private FileCache {
4646 [this ](std::optional<llvm::StringRef> Data) {
4747 Value.reset ();
4848 if (Data && !Data->empty ()) {
49- tidy::DiagCallback Diagnostics = [](const llvm::SMDiagnostic &D) {
49+ auto Diagnostics = [](const llvm::SMDiagnostic &D) {
5050 switch (D.getKind ()) {
5151 case llvm::SourceMgr::DK_Error:
5252 elog (" tidy-config error at {0}:{1}:{2}: {3}" , D.getFilename (),
@@ -159,12 +159,15 @@ TidyProviderRef provideEnvironment() {
159159 return Ret;
160160 }();
161161
162- if (User)
163- return
164- [](tidy::ClangTidyOptions &Opts, llvm::StringRef) { Opts.User = User; };
162+ if (User) {
163+ static const auto Provider = [](tidy::ClangTidyOptions &Opts, llvm::StringRef) { Opts.User = User; };
164+ return Provider;
165+ }
165166 // FIXME: Once function_ref and unique_function operator= operators handle
166167 // null values, this can return null.
167- return [](tidy::ClangTidyOptions &, llvm::StringRef) {};
168+ static const auto EmptyProvider = [](tidy::ClangTidyOptions &,
169+ llvm::StringRef) {};
170+ return EmptyProvider;
168171}
169172
170173TidyProviderRef provideDefaultChecks () {
@@ -178,10 +181,11 @@ TidyProviderRef provideDefaultChecks() {
178181 " bugprone-suspicious-missing-comma" , " bugprone-unused-raii" ,
179182 " bugprone-unused-return-value" , " misc-unused-using-decls" ,
180183 " misc-unused-alias-decls" , " misc-definitions-in-headers" );
181- return [](tidy::ClangTidyOptions &Opts, llvm::StringRef) {
184+ static auto Provider = [](tidy::ClangTidyOptions &Opts, llvm::StringRef) {
182185 if (!Opts.Checks || Opts.Checks ->empty ())
183186 Opts.Checks = DefaultChecks;
184187 };
188+ return Provider;
185189}
186190
187191TidyProvider addTidyChecks (llvm::StringRef Checks,
@@ -252,7 +256,7 @@ TidyProvider disableUnusableChecks(llvm::ArrayRef<std::string> ExtraBadChecks) {
252256}
253257
254258TidyProviderRef provideClangdConfig () {
255- return [](tidy::ClangTidyOptions &Opts, llvm::StringRef) {
259+ static const auto Provider = [](tidy::ClangTidyOptions &Opts, llvm::StringRef) {
256260 const auto &CurTidyConfig = Config::current ().Diagnostics .ClangTidy ;
257261 if (!CurTidyConfig.Checks .empty ())
258262 mergeCheckList (Opts.Checks , CurTidyConfig.Checks );
@@ -262,6 +266,7 @@ TidyProviderRef provideClangdConfig() {
262266 tidy::ClangTidyOptions::ClangTidyValue (
263267 CheckOption.getValue (), 10000U ));
264268 };
269+ return Provider;
265270}
266271
267272TidyProvider provideClangTidyFiles (ThreadsafeFS &TFS) {
0 commit comments