[llvm-branch-commits] [clang] [Clang] [C++26] Expansion Statements (Part 6: Destructuring Expansion Statements) (PR #169685)

via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Mar 31 13:51:41 PDT 2026


================
@@ -274,6 +274,51 @@ static IterableExpansionStmtData TryBuildIterableExpansionStmtInitializer(
   return Data;
 }
 
+static StmtResult BuildDestructuringDecompositionDecl(
+    Sema &S, Expr *ExpansionInitializer, SourceLocation ColonLoc,
+    bool VarIsConstexpr,
+    ArrayRef<MaterializeTemporaryExpr *> LifetimeExtendTemps) {
+  auto Ctx = Sema::ExpressionEvaluationContext::PotentiallyEvaluated;
+  if (VarIsConstexpr)
+    Ctx = Sema::ExpressionEvaluationContext::ImmediateFunctionContext;
----------------
Sirraide wrote:

So at least when it comes to this file, `VarIsConstexpr` is used for more than just deciding what expression evaluation context to push (e.g. it’s used to make the `__range` variable `constexpr` iff it is declared `constexpr`), and I feel like passing the expression evaluation context enum as a parameter would make it a lot less obvious as to what’s going on there

https://github.com/llvm/llvm-project/pull/169685


More information about the llvm-branch-commits mailing list