@@ -1695,20 +1695,21 @@ static bool isRequirementOrWitness(const ConstraintLocatorBuilder &locator) {
1695
1695
locator.endsWith <LocatorPathElt::Witness>();
1696
1696
}
1697
1697
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,
1701
1701
ConstraintLocatorBuilder locator) {
1702
1702
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) {
1707
1706
if (replacements.empty ())
1708
1707
return type;
1709
1708
1710
1709
return openType (type, replacements, locator);
1711
1710
});
1711
+
1712
+ return adjustedTy->castTo <FunctionType>();
1712
1713
}
1713
1714
1714
1715
// / For every parameter in \p type that has an error type, replace that
@@ -1781,9 +1782,9 @@ ConstraintSystem::getTypeOfReference(ValueDecl *value,
1781
1782
auto origOpenedType = openedType;
1782
1783
if (!isRequirementOrWitness (locator)) {
1783
1784
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);
1787
1788
}
1788
1789
1789
1790
// The reference implicitly binds 'self'.
@@ -1818,9 +1819,9 @@ ConstraintSystem::getTypeOfReference(ValueDecl *value,
1818
1819
if (!isRequirementOrWitness (locator)) {
1819
1820
unsigned numApplies = getNumApplications (
1820
1821
funcDecl, false , functionRefKind);
1821
- openedType = cast<FunctionType>( adjustFunctionTypeForConcurrency (
1822
+ openedType = adjustFunctionTypeForConcurrency (
1822
1823
origOpenedType->castTo <FunctionType>(), funcDecl, useDC, numApplies,
1823
- false , replacements, locator)) ;
1824
+ false , replacements, locator);
1824
1825
}
1825
1826
1826
1827
if (isForCodeCompletion () && openedType->hasError ()) {
@@ -2819,11 +2820,11 @@ ConstraintSystem::getTypeOfMemberReference(
2819
2820
unsigned numApplies = getNumApplications (
2820
2821
value, hasAppliedSelf, functionRefKind);
2821
2822
openedType = adjustFunctionTypeForConcurrency (
2822
- origOpenedType->castTo <AnyFunctionType >(), value, useDC, numApplies,
2823
+ origOpenedType->castTo <FunctionType >(), value, useDC, numApplies,
2823
2824
isMainDispatchQueueMember (locator), replacements, locator);
2824
2825
} else if (auto subscript = dyn_cast<SubscriptDecl>(value)) {
2825
2826
openedType = adjustFunctionTypeForConcurrency (
2826
- origOpenedType->castTo <AnyFunctionType >(), subscript, useDC,
2827
+ origOpenedType->castTo <FunctionType >(), subscript, useDC,
2827
2828
/* numApplies=*/ 2 , /* isMainDispatchQueue=*/ false , replacements, locator);
2828
2829
} else if (auto var = dyn_cast<VarDecl>(value)) {
2829
2830
// Adjust the function's result type, since that's the Var's actual type.
0 commit comments