Skip to content

Commit 49b1811

Browse files
committed
[AST] Augment ArgumentList::createImplicit to accept first trailing closure index
1 parent 73e0670 commit 49b1811

File tree

4 files changed

+20
-16
lines changed

4 files changed

+20
-16
lines changed

include/swift/AST/ArgumentList.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,13 @@ class alignas(Argument) ArgumentList final
249249
static ArgumentList *
250250
createImplicit(ASTContext &ctx, SourceLoc lParenLoc, ArrayRef<Argument> args,
251251
SourceLoc rParenLoc,
252+
Optional<unsigned> firstTrailingClosureIndex = None,
252253
AllocationArena arena = AllocationArena::Permanent);
253254

254255
/// Create a new implicit ArgumentList with a set of \p args.
255256
static ArgumentList *
256257
createImplicit(ASTContext &ctx, ArrayRef<Argument> args,
258+
Optional<unsigned> firstTrailingClosureIndex = None,
257259
AllocationArena arena = AllocationArena::Permanent);
258260

259261
/// Create a new implicit ArgumentList with a single labeled argument

lib/AST/ArgumentList.cpp

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -108,19 +108,22 @@ ArgumentList *ArgumentList::createTypeChecked(ASTContext &ctx,
108108
originalArgs->isImplicit(), originalArgs);
109109
}
110110

111-
ArgumentList *ArgumentList::createImplicit(ASTContext &ctx, SourceLoc lParenLoc,
112-
ArrayRef<Argument> args,
113-
SourceLoc rParenLoc,
114-
AllocationArena arena) {
115-
return create(ctx, lParenLoc, args, rParenLoc,
116-
/*firstTrailingClosureIdx*/ None, /*implicit*/ true,
111+
ArgumentList *
112+
ArgumentList::createImplicit(ASTContext &ctx, SourceLoc lParenLoc,
113+
ArrayRef<Argument> args, SourceLoc rParenLoc,
114+
Optional<unsigned> firstTrailingClosureIndex,
115+
AllocationArena arena) {
116+
return create(ctx, lParenLoc, args, rParenLoc, firstTrailingClosureIndex,
117+
/*implicit*/ true,
117118
/*originalArgs*/ nullptr, arena);
118119
}
119120

120-
ArgumentList *ArgumentList::createImplicit(ASTContext &ctx,
121-
ArrayRef<Argument> args,
122-
AllocationArena arena) {
123-
return createImplicit(ctx, SourceLoc(), args, SourceLoc(), arena);
121+
ArgumentList *
122+
ArgumentList::createImplicit(ASTContext &ctx, ArrayRef<Argument> args,
123+
Optional<unsigned> firstTrailingClosureIndex,
124+
AllocationArena arena) {
125+
return createImplicit(ctx, SourceLoc(), args, SourceLoc(),
126+
firstTrailingClosureIndex, arena);
124127
}
125128

126129
ArgumentList *ArgumentList::forImplicitSingle(ASTContext &ctx, Identifier label,

lib/Sema/CSSimplify.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10736,12 +10736,9 @@ ConstraintSystem::simplifyApplicableFnConstraint(
1073610736
if (matchCallResult != SolutionKind::Solved)
1073710737
return SolutionKind::Error;
1073810738

10739-
// Note that `createImplicit` cannot be used here because it
10740-
// doesn't allow us to specify trailing closure index.
10741-
auto *implicitCallArgumentList = ArgumentList::createParsed(
10742-
ctx, /*LParen=*/SourceLoc(), trailingClosures,
10743-
/*RParen=*/SourceLoc(),
10744-
/*firstTrailingClosureIndex=*/0);
10739+
auto *implicitCallArgumentList =
10740+
ArgumentList::createImplicit(ctx, trailingClosures,
10741+
/*firstTrailingClosureIndex=*/0);
1074510742

1074610743
auto *implicitRef = createImplicitRootForCallAsFunction(
1074710744
*this, callAsFunctionResultTy, implicitCallArgumentList, calleeLoc);
@@ -11720,6 +11717,7 @@ ConstraintSystem::simplifyRestrictedConstraintImpl(
1172011717
if (!ArgumentLists.count(memberLoc)) {
1172111718
auto *argList = ArgumentList::createImplicit(
1172211719
getASTContext(), {Argument(SourceLoc(), Identifier(), nullptr)},
11720+
/*firstTrailingClosureIndex=*/None,
1172311721
AllocationArena::ConstraintSolver);
1172411722
ArgumentLists.insert({memberLoc, argList});
1172511723
}

lib/Sema/ConstraintSystem.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2714,6 +2714,7 @@ void ConstraintSystem::bindOverloadType(
27142714
if (!argList) {
27152715
argList = ArgumentList::createImplicit(
27162716
ctx, {Argument(SourceLoc(), ctx.Id_dynamicMember, /*expr*/ nullptr)},
2717+
/*firstTrailingClosureIndex=*/None,
27172718
AllocationArena::ConstraintSolver);
27182719
}
27192720

0 commit comments

Comments
 (0)