Index: clang/lib/Sema/SemaTemplateInstantiate.cpp =================================================================== --- clang/lib/Sema/SemaTemplateInstantiate.cpp +++ clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -1230,8 +1230,10 @@ // We recreated a local declaration, but not by instantiating it. There // may be pending dependent diagnostics to produce. - if (auto *DC = dyn_cast(Old)) - SemaRef.PerformDependentDiagnostics(DC, TemplateArgs); + if (auto *DC = dyn_cast(Old)) { + if (DC->isDependentContext()) + SemaRef.PerformDependentDiagnostics(DC, TemplateArgs); + } } /// Transform the definition of the given declaration by Index: clang/test/SemaCXX/lambda-unevaluated.cpp =================================================================== --- clang/test/SemaCXX/lambda-unevaluated.cpp +++ clang/test/SemaCXX/lambda-unevaluated.cpp @@ -122,6 +122,22 @@ static_assert(!__is_same(decltype(foo), void)); } // namespace GH51641 +namespace GH57155 { +auto foo(int t) { + int(*f)(int) = [](auto t) -> decltype([=] { return t; } ()) { return t; }; + return f; +} +} // namespace GH57155 + +namespace GH57170 { +int(*f)(int) = [](auto t) -> decltype([] { + return 0; + } () +){ + return t; +}; +} // namespace GH57170 + namespace StaticLambdas { template struct Nothing {}; Nothing<[]() static { return 0; }()> nothing;