@@ -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