@@ -333,9 +333,9 @@ StmtResult Sema::BuildNonEnumeratingCXXExpansionStmtPattern(
333333
334334 if (ExpansionInitializer->isTypeDependent ()) {
335335 ActOnDependentForRangeInitializer (ExpansionVar, BFRK_Build);
336- return new (Context) CXXDependentExpansionStmtPattern (
337- ESD, Init, ExpansionVarStmt, ExpansionInitializer, LParenLoc, ColonLoc ,
338- RParenLoc);
336+ return CXXExpansionStmtPattern::CreateDependent (
337+ Context, ESD, Init, ExpansionVarStmt, ExpansionInitializer, LParenLoc,
338+ ColonLoc, RParenLoc);
339339 }
340340
341341 if (RequireCompleteType (ExpansionInitializer->getExprLoc (),
@@ -363,8 +363,8 @@ StmtResult Sema::BuildNonEnumeratingCXXExpansionStmtPattern(
363363 if (FinaliseExpansionVar (*this , ExpansionVar, Data.Initializer ))
364364 return StmtError ();
365365
366- return new (Context) CXXIteratingExpansionStmtPattern (
367- ESD, Init, ExpansionVarStmt, Data.RangeDecl , Data.BeginDecl ,
366+ return CXXExpansionStmtPattern::CreateIterating (
367+ Context, ESD, Init, ExpansionVarStmt, Data.RangeDecl , Data.BeginDecl ,
368368 Data.EndDecl , LParenLoc, ColonLoc, RParenLoc);
369369 }
370370
@@ -392,8 +392,7 @@ StmtResult Sema::FinishCXXExpansionStmt(Stmt *Exp, Stmt *Body) {
392392 // Even if the size isn't technically dependent, delay expansion until
393393 // we're no longer in a template if this is an iterating expansion statement
394394 // since evaluating a lambda declared in a template doesn't work too well.
395- if (CurContext->isDependentContext () &&
396- isa<CXXIteratingExpansionStmtPattern>(Expansion))
395+ if (CurContext->isDependentContext () && Expansion->isIterating ())
397396 return Expansion;
398397
399398 // This can fail if this is an iterating expansion statement.
@@ -491,7 +490,7 @@ Sema::ComputeExpansionSize(CXXExpansionStmtPattern *Expansion) {
491490 // for (; b != e; ++b) ++result;
492491 // return result;
493492 // }()
494- if (auto *Iterating = dyn_cast<CXXIteratingExpansionStmtPattern>(Expansion )) {
493+ if (Expansion-> isIterating ( )) {
495494 SourceLocation Loc = Expansion->getColonLoc ();
496495 EnterExpressionEvaluationContext ExprEvalCtx (
497496 *this , ExpressionEvaluationContext::ConstantEvaluated);
@@ -556,7 +555,7 @@ Sema::ComputeExpansionSize(CXXExpansionStmtPattern *Expansion) {
556555 // auto b = begin-expr;
557556 // auto e = end-expr;
558557 ForRangeBeginEndInfo Info = BuildCXXForRangeBeginEndVars (
559- getCurScope (), Iterating ->getRangeVar (), Loc,
558+ getCurScope (), Expansion ->getRangeVar (), Loc,
560559 /* CoawaitLoc=*/ {},
561560 /* LifetimeExtendTemps=*/ {}, BFRK_Build, /* Constexpr=*/ false );
562561 if (!Info.isValid ())
0 commit comments