Skip to content

Commit 8ac8633

Browse files
committed
[NFC] Hide VarargExpansionExpr's Constructor
1 parent 9c6acbe commit 8ac8633

File tree

4 files changed

+13
-17
lines changed

4 files changed

+13
-17
lines changed

include/swift/AST/Expr.h

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3429,10 +3429,13 @@ class InOutExpr : public Expr {
34293429
class VarargExpansionExpr : public Expr {
34303430
Expr *SubExpr;
34313431

3432-
public:
34333432
VarargExpansionExpr(Expr *subExpr, bool implicit, Type type = Type())
34343433
: Expr(ExprKind::VarargExpansion, implicit, type), SubExpr(subExpr) {}
34353434

3435+
public:
3436+
static VarargExpansionExpr *createParamExpansion(ASTContext &ctx, Expr *E);
3437+
static VarargExpansionExpr *createArrayExpansion(ASTContext &ctx, ArrayExpr *AE);
3438+
34363439
SWIFT_FORWARD_SOURCE_LOCS_TO(SubExpr)
34373440

34383441
Expr *getSubExpr() const { return SubExpr; }
@@ -5823,6 +5826,7 @@ class PackExpr final : public Expr,
58235826

58245827
static bool classof(const Expr *E) { return E->getKind() == ExprKind::Pack; }
58255828
};
5829+
58265830
inline bool Expr::isInfixOperator() const {
58275831
return isa<BinaryExpr>(this) || isa<IfExpr>(this) ||
58285832
isa<AssignExpr>(this) || isa<ExplicitCastExpr>(this);

lib/AST/Expr.cpp

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1132,11 +1132,6 @@ VarargExpansionExpr *VarargExpansionExpr::createArrayExpansion(ASTContext &ctx,
11321132
return new (ctx) VarargExpansionExpr(AE, /*implicit*/ true, AE->getType());
11331133
}
11341134

1135-
VarargExpansionExpr *VarargExpansionExpr::createTupleExpansion(ASTContext &ctx, TupleExpr *TE) {
1136-
assert(TE->getType() && "Expansion must have fully-resolved type!");
1137-
return new (ctx) VarargExpansionExpr(TE, /*implicit*/ true, TE->getType());
1138-
}
1139-
11401135
SequenceExpr *SequenceExpr::create(ASTContext &ctx, ArrayRef<Expr*> elements) {
11411136
assert(elements.size() & 1 && "even number of elements in sequence");
11421137
size_t bytes = totalSizeToAlloc<Expr *>(elements.size());

lib/Sema/CSApply.cpp

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,9 +1144,8 @@ namespace {
11441144
paramRef = new (context) InOutExpr(SourceLoc(), paramRef,
11451145
outerParamType, /*implicit=*/true);
11461146
} else if (innerParam->isVariadic()) {
1147-
paramRef = new (context) VarargExpansionExpr(paramRef,
1148-
/*implicit=*/ true,
1149-
outerParamType);
1147+
assert(outerParamType->isEqual(paramRef->getType()));
1148+
paramRef = VarargExpansionExpr::createParamExpansion(context, paramRef);
11501149
}
11511150
cs.cacheType(paramRef);
11521151

@@ -1317,9 +1316,8 @@ namespace {
13171316
/*implicit=*/true);
13181317
cs.cacheType(paramRef);
13191318
} else if (param->isVariadic()) {
1320-
paramRef =
1321-
new (context) VarargExpansionExpr(paramRef, /*implicit*/ true);
1322-
paramRef->setType(calleeParamType);
1319+
assert(calleeParamType->isEqual(paramRef->getType()));
1320+
paramRef = VarargExpansionExpr::createParamExpansion(context, paramRef);
13231321
cs.cacheType(paramRef);
13241322
}
13251323

@@ -5717,9 +5715,8 @@ ArgumentList *ExprRewriter::coerceCallArguments(
57175715
cs.cacheType(arrayExpr);
57185716

57195717
// Wrap the ArrayExpr in a VarargExpansionExpr.
5720-
auto *varargExpansionExpr = new (ctx)
5721-
VarargExpansionExpr(arrayExpr,
5722-
/*implicit=*/true, arrayExpr->getType());
5718+
auto *varargExpansionExpr =
5719+
VarargExpansionExpr::createArrayExpansion(ctx, arrayExpr);
57235720
cs.cacheType(varargExpansionExpr);
57245721

57255722
newArgs.push_back(Argument(labelLoc, paramLabel, varargExpansionExpr));

lib/Sema/CodeSynthesis.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,8 @@ ArgumentList *swift::buildForwardingArgumentList(ArrayRef<ParamDecl *> params,
109109
if (param->isInOut()) {
110110
ref = new (ctx) InOutExpr(SourceLoc(), ref, type, /*isImplicit=*/true);
111111
} else if (param->isVariadic()) {
112-
ref = new (ctx) VarargExpansionExpr(ref, /*implicit*/ true);
113-
ref->setType(type);
112+
assert(ref->getType()->isEqual(type));
113+
ref = VarargExpansionExpr::createParamExpansion(ctx, ref);
114114
}
115115
args.emplace_back(SourceLoc(), param->getArgumentName(), ref);
116116
}

0 commit comments

Comments
 (0)