Skip to content

Commit cd1fb77

Browse files
committed
Some fixes wrt generic coroutines
1 parent f42b107 commit cd1fb77

File tree

2 files changed

+4
-2
lines changed

2 files changed

+4
-2
lines changed

lib/SIL/IR/SILFunctionType.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2548,9 +2548,10 @@ static CanSILFunctionType getSILFunctionType(
25482548
}
25492549
} else if (substFnInterfaceType->isCoroutine()) { // Derive yield type for function type
25502550
coroutineKind = SILCoroutineKind::YieldOnce;
2551+
auto sig = origType.hasGenericSignature() ? origType.getGenericSignature() : genericSig;
25512552
auto origYieldType = origType.getFunctionResultType().getType()->castTo<YieldResultType>();
2552-
auto reducedYieldType = genericSig.getReducedType(origYieldType->getResultType());
2553-
coroutineOrigYieldType = AbstractionPattern(genericSig, reducedYieldType);
2553+
auto reducedYieldType = sig.getReducedType(origYieldType->getResultType());
2554+
coroutineOrigYieldType = AbstractionPattern(sig, reducedYieldType);
25542555

25552556
auto yieldType = substFnInterfaceType->getResult()->castTo<YieldResultType>();
25562557
auto valueType = yieldType->getResultType();

lib/Sema/TypeCheckType.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5915,6 +5915,7 @@ NeverNullType TypeResolver::resolveTupleType(TupleTypeRepr *repr,
59155915
!moveOnlyElementIndex.has_value() &&
59165916
!ty->hasUnboundGenericType() &&
59175917
!ty->hasTypeVariable() &&
5918+
!ty->is<YieldResultType>() &&
59185919
!isa<TupleTypeRepr>(tyR)) {
59195920
auto contextTy = GenericEnvironment::mapTypeIntoContext(
59205921
resolution.getGenericSignature().getGenericEnvironment(), ty);

0 commit comments

Comments
 (0)