Skip to content

Commit ab4ec2b

Browse files
committed
[AST] Remove trailing pack elements from PackExpansionExpr.
This wasn't used, and callers can instead use getExpandedPacks, which also includes TypeReprs.
1 parent 9a7555c commit ab4ec2b

File tree

3 files changed

+4
-42
lines changed

3 files changed

+4
-42
lines changed

include/swift/AST/Expr.h

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -350,11 +350,6 @@ class alignas(8) Expr : public ASTAllocated<Expr> {
350350
IsObjC : 1
351351
);
352352

353-
SWIFT_INLINE_BITFIELD_FULL(PackExpansionExpr, Expr, 32,
354-
: NumPadBits,
355-
NumBindings : 32
356-
);
357-
358353
SWIFT_INLINE_BITFIELD_FULL(SequenceExpr, Expr, 32,
359354
: NumPadBits,
360355
NumElements : 32
@@ -3599,38 +3594,21 @@ class PackElementExpr final : public Expr {
35993594
/// that naturally accept a comma-separated list of values, including
36003595
/// call argument lists, the elements of a tuple value, and the source
36013596
/// of a for-in loop.
3602-
class PackExpansionExpr final : public Expr,
3603-
private llvm::TrailingObjects<PackExpansionExpr, PackElementExpr *> {
3604-
friend TrailingObjects;
3605-
3597+
class PackExpansionExpr final : public Expr {
36063598
Expr *PatternExpr;
36073599
SourceLoc DotsLoc;
36083600
GenericEnvironment *Environment;
36093601

36103602
PackExpansionExpr(Expr *patternExpr,
3611-
ArrayRef<PackElementExpr *> packElements,
36123603
SourceLoc dotsLoc,
36133604
GenericEnvironment *environment,
36143605
bool implicit, Type type)
36153606
: Expr(ExprKind::PackExpansion, implicit, type),
3616-
PatternExpr(patternExpr), DotsLoc(dotsLoc), Environment(environment) {
3617-
Bits.PackExpansionExpr.NumBindings = packElements.size();
3618-
std::uninitialized_copy(packElements.begin(), packElements.end(),
3619-
getTrailingObjects<PackElementExpr *>());
3620-
}
3621-
3622-
size_t numTrailingObjects(OverloadToken<PackElementExpr *>) const {
3623-
return getNumBindings();
3624-
}
3625-
3626-
MutableArrayRef<PackElementExpr *> getMutableBindings() {
3627-
return {getTrailingObjects<PackElementExpr *>(), getNumBindings()};
3628-
}
3607+
PatternExpr(patternExpr), DotsLoc(dotsLoc), Environment(environment) {}
36293608

36303609
public:
36313610
static PackExpansionExpr *create(ASTContext &ctx,
36323611
Expr *patternExpr,
3633-
ArrayRef<PackElementExpr *> packElements,
36343612
SourceLoc dotsLoc,
36353613
GenericEnvironment *environment,
36363614
bool implicit = false,
@@ -3642,14 +3620,6 @@ class PackExpansionExpr final : public Expr,
36423620
PatternExpr = patternExpr;
36433621
}
36443622

3645-
unsigned getNumBindings() const {
3646-
return Bits.PackExpansionExpr.NumBindings;
3647-
}
3648-
3649-
ArrayRef<PackElementExpr *> getPackElements() {
3650-
return {getTrailingObjects<PackElementExpr *>(), getNumBindings()};
3651-
}
3652-
36533623
void getExpandedPacks(SmallVectorImpl<ASTNode> &packs);
36543624

36553625
GenericEnvironment *getGenericEnvironment() {

lib/AST/Expr.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,15 +1251,10 @@ VarargExpansionExpr *VarargExpansionExpr::createArrayExpansion(ASTContext &ctx,
12511251

12521252
PackExpansionExpr *
12531253
PackExpansionExpr::create(ASTContext &ctx, Expr *patternExpr,
1254-
ArrayRef<PackElementExpr *> packElements,
12551254
SourceLoc dotsLoc, GenericEnvironment *environment,
12561255
bool implicit, Type type) {
1257-
size_t size =
1258-
totalSizeToAlloc<PackElementExpr *>(packElements.size());
1259-
void *mem = ctx.Allocate(size, alignof(PackExpansionExpr));
1260-
return ::new (mem) PackExpansionExpr(patternExpr, packElements,
1261-
dotsLoc, environment,
1262-
implicit, type);
1256+
return new (ctx) PackExpansionExpr(patternExpr, dotsLoc, environment,
1257+
implicit, type);
12631258
}
12641259

12651260
void PackExpansionExpr::getExpandedPacks(SmallVectorImpl<ASTNode> &packs) {

lib/Sema/PreCheckExpr.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,6 @@ static Expr *getPackExpansion(DeclContext *dc, Expr *expr, SourceLoc opLoc) {
406406
// PackElementOf constraints.
407407
struct PackReferenceFinder : public ASTWalker {
408408
DeclContext *dc;
409-
llvm::SmallVector<PackElementExpr *, 2> packElements;
410409
GenericEnvironment *environment;
411410

412411
PackReferenceFinder(DeclContext *dc)
@@ -431,7 +430,6 @@ static Expr *getPackExpansion(DeclContext *dc, Expr *expr, SourceLoc opLoc) {
431430
return Action::Continue(E);
432431

433432
createElementEnvironment();
434-
packElements.push_back(packElement);
435433
return Action::Continue(packElement);
436434
}
437435

@@ -448,7 +446,6 @@ static Expr *getPackExpansion(DeclContext *dc, Expr *expr, SourceLoc opLoc) {
448446

449447
if (packReferenceFinder.environment != nullptr) {
450448
return PackExpansionExpr::create(dc->getASTContext(), pattern,
451-
packReferenceFinder.packElements,
452449
opLoc, packReferenceFinder.environment);
453450
}
454451

0 commit comments

Comments
 (0)