[llvm-branch-commits] [clang] [Clang] [C++26] Expansion Statements (Part 2: Parsing and Parser Tests) (PR #169681)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon May 4 08:36:15 PDT 2026
================
@@ -1895,8 +1937,56 @@ bool Parser::isForRangeIdentifier() {
return false;
}
-StmtResult Parser::ParseForStatement(SourceLocation *TrailingElseLoc,
- LabelDecl *PrecedingLabel) {
+void Parser::ParseForRangeInitializerAfterColon(ForRangeInit &FRI,
+ ParsingDeclSpec *VarDeclSpec) {
+ // Use an immediate function context if this is the initializer for a
+ // constexpr variable in an expansion statement.
+ auto Ctx = Sema::ExpressionEvaluationContext::PotentiallyEvaluated;
+ if (FRI.ExpansionStmt && VarDeclSpec && VarDeclSpec->hasConstexprSpecifier())
+ Ctx = Sema::ExpressionEvaluationContext::ImmediateFunctionContext;
+
----------------
Sirraide wrote:
Yeah; Dan’s fork was using `ImmediateFunctionContext` for this; I’m not quite sure why candidly
https://github.com/llvm/llvm-project/pull/169681
More information about the llvm-branch-commits
mailing list