[llvm-branch-commits] [clang] release/22.x: [Clang] Ensure a lambda DeclContext in BuildLambdaExpr (#176319) (PR #176848)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Jan 19 18:04:03 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: None (llvmbot)
<details>
<summary>Changes</summary>
Backport be40637a8
Requested by: @<!-- -->zyn0217
---
Full diff: https://github.com/llvm/llvm-project/pull/176848.diff
2 Files Affected:
- (modified) clang/lib/Sema/SemaLambda.cpp (+6-1)
- (modified) clang/test/SemaCXX/cxx2b-consteval-propagate.cpp (+14)
``````````diff
diff --git a/clang/lib/Sema/SemaLambda.cpp b/clang/lib/Sema/SemaLambda.cpp
index c864a47e022bd..e1b1cd3e04946 100644
--- a/clang/lib/Sema/SemaLambda.cpp
+++ b/clang/lib/Sema/SemaLambda.cpp
@@ -2165,7 +2165,12 @@ ExprResult Sema::BuildLambdaExpr(SourceLocation StartLoc,
// set as CurContext seems more faithful to the source.
TemplateOrNonTemplateCallOperatorDecl->setLexicalDeclContext(Class);
- PopExpressionEvaluationContext();
+ {
+ // TreeTransform of immediate functions may call getCurLambda, which
+ // requires both the paired LSI and the lambda DeclContext.
+ ContextRAII SavedContext(*this, CallOperator, /*NewThisContext=*/false);
+ PopExpressionEvaluationContext();
+ }
sema::AnalysisBasedWarnings::Policy WP =
AnalysisWarnings.getPolicyInEffectAt(EndLoc);
diff --git a/clang/test/SemaCXX/cxx2b-consteval-propagate.cpp b/clang/test/SemaCXX/cxx2b-consteval-propagate.cpp
index 6da589dcf1b25..39097d17441f7 100644
--- a/clang/test/SemaCXX/cxx2b-consteval-propagate.cpp
+++ b/clang/test/SemaCXX/cxx2b-consteval-propagate.cpp
@@ -629,6 +629,20 @@ void fn() {
}
+namespace GH176045 {
+
+template <int NumArgs> struct MessageFormat {
+ template <int N> consteval MessageFormat(const char (&)[N]) {}
+};
+template <typename... Ts> void format(MessageFormat<sizeof...(Ts)>, Ts ...args);
+
+auto message = [] {
+ format("");
+ format("");
+};
+
+}
+
namespace GH109096 {
consteval void undefined();
``````````
</details>
https://github.com/llvm/llvm-project/pull/176848
More information about the llvm-branch-commits
mailing list