Skip to content

Commit 97db603

Browse files
committed
Merge all pattern kinds into a single AST node
1 parent e66c77b commit 97db603

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

clang/lib/Sema/SemaExpand.cpp

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)