Skip to content

Commit eb97553

Browse files
committed
[ConstraintSystem] NFC: Switch adjustFunctionTypeForConcurrency to use FunctionType
This method is always called after the type is opened by the solver which means that we never end up with `GenericFunctionType`.
1 parent 8e72a01 commit eb97553

File tree

2 files changed

+17
-16
lines changed

2 files changed

+17
-16
lines changed

include/swift/Sema/ConstraintSystem.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4370,8 +4370,8 @@ class ConstraintSystem {
43704370

43714371
/// Wrapper over swift::adjustFunctionTypeForConcurrency that passes along
43724372
/// the appropriate closure-type and opening extraction functions.
4373-
AnyFunctionType *adjustFunctionTypeForConcurrency(
4374-
AnyFunctionType *fnType, ValueDecl *decl, DeclContext *dc,
4373+
FunctionType *adjustFunctionTypeForConcurrency(
4374+
FunctionType *fnType, ValueDecl *decl, DeclContext *dc,
43754375
unsigned numApplies, bool isMainDispatchQueue,
43764376
OpenedTypeMap &replacements, ConstraintLocatorBuilder locator);
43774377

lib/Sema/ConstraintSystem.cpp

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1695,20 +1695,21 @@ static bool isRequirementOrWitness(const ConstraintLocatorBuilder &locator) {
16951695
locator.endsWith<LocatorPathElt::Witness>();
16961696
}
16971697

1698-
AnyFunctionType *ConstraintSystem::adjustFunctionTypeForConcurrency(
1699-
AnyFunctionType *fnType, ValueDecl *decl, DeclContext *dc,
1700-
unsigned numApplies, bool isMainDispatchQueue, OpenedTypeMap &replacements,
1698+
FunctionType *ConstraintSystem::adjustFunctionTypeForConcurrency(
1699+
FunctionType *fnType, ValueDecl *decl, DeclContext *dc, unsigned numApplies,
1700+
bool isMainDispatchQueue, OpenedTypeMap &replacements,
17011701
ConstraintLocatorBuilder locator) {
17021702

1703-
return swift::adjustFunctionTypeForConcurrency(
1704-
fnType, decl, dc, numApplies, isMainDispatchQueue,
1705-
GetClosureType{*this}, ClosureIsolatedByPreconcurrency{*this},
1706-
[&](Type type) {
1703+
auto *adjustedTy = swift::adjustFunctionTypeForConcurrency(
1704+
fnType, decl, dc, numApplies, isMainDispatchQueue, GetClosureType{*this},
1705+
ClosureIsolatedByPreconcurrency{*this}, [&](Type type) {
17071706
if (replacements.empty())
17081707
return type;
17091708

17101709
return openType(type, replacements, locator);
17111710
});
1711+
1712+
return adjustedTy->castTo<FunctionType>();
17121713
}
17131714

17141715
/// For every parameter in \p type that has an error type, replace that
@@ -1781,9 +1782,9 @@ ConstraintSystem::getTypeOfReference(ValueDecl *value,
17811782
auto origOpenedType = openedType;
17821783
if (!isRequirementOrWitness(locator)) {
17831784
unsigned numApplies = getNumApplications(value, false, functionRefKind);
1784-
openedType = cast<FunctionType>(adjustFunctionTypeForConcurrency(
1785-
origOpenedType, func, useDC, numApplies, false, replacements,
1786-
locator));
1785+
openedType = adjustFunctionTypeForConcurrency(origOpenedType, func, useDC,
1786+
numApplies, false,
1787+
replacements, locator);
17871788
}
17881789

17891790
// The reference implicitly binds 'self'.
@@ -1818,9 +1819,9 @@ ConstraintSystem::getTypeOfReference(ValueDecl *value,
18181819
if (!isRequirementOrWitness(locator)) {
18191820
unsigned numApplies = getNumApplications(
18201821
funcDecl, false, functionRefKind);
1821-
openedType = cast<FunctionType>(adjustFunctionTypeForConcurrency(
1822+
openedType = adjustFunctionTypeForConcurrency(
18221823
origOpenedType->castTo<FunctionType>(), funcDecl, useDC, numApplies,
1823-
false, replacements, locator));
1824+
false, replacements, locator);
18241825
}
18251826

18261827
if (isForCodeCompletion() && openedType->hasError()) {
@@ -2819,11 +2820,11 @@ ConstraintSystem::getTypeOfMemberReference(
28192820
unsigned numApplies = getNumApplications(
28202821
value, hasAppliedSelf, functionRefKind);
28212822
openedType = adjustFunctionTypeForConcurrency(
2822-
origOpenedType->castTo<AnyFunctionType>(), value, useDC, numApplies,
2823+
origOpenedType->castTo<FunctionType>(), value, useDC, numApplies,
28232824
isMainDispatchQueueMember(locator), replacements, locator);
28242825
} else if (auto subscript = dyn_cast<SubscriptDecl>(value)) {
28252826
openedType = adjustFunctionTypeForConcurrency(
2826-
origOpenedType->castTo<AnyFunctionType>(), subscript, useDC,
2827+
origOpenedType->castTo<FunctionType>(), subscript, useDC,
28272828
/*numApplies=*/2, /*isMainDispatchQueue=*/false, replacements, locator);
28282829
} else if (auto var = dyn_cast<VarDecl>(value)) {
28292830
// Adjust the function's result type, since that's the Var's actual type.

0 commit comments

Comments
 (0)