Skip to content

Commit 9ac33d5

Browse files
committed
Some fixes wrt generic coroutines
1 parent 9da796c commit 9ac33d5

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
@@ -2412,9 +2412,10 @@ static CanSILFunctionType getSILFunctionType(
24122412
}
24132413
} else if (substFnInterfaceType->isCoroutine()) { // Derive yield type for function type
24142414
coroutineKind = SILCoroutineKind::YieldOnce;
2415+
auto sig = origType.hasGenericSignature() ? origType.getGenericSignature() : genericSig;
24152416
auto origYieldType = origType.getFunctionResultType().getType()->castTo<YieldResultType>();
2416-
auto reducedYieldType = genericSig.getReducedType(origYieldType->getResultType());
2417-
coroutineOrigYieldType = AbstractionPattern(genericSig, reducedYieldType);
2417+
auto reducedYieldType = sig.getReducedType(origYieldType->getResultType());
2418+
coroutineOrigYieldType = AbstractionPattern(sig, reducedYieldType);
24182419

24192420
auto yieldType = substFnInterfaceType->getResult()->castTo<YieldResultType>();
24202421
auto valueType = yieldType->getResultType();

lib/Sema/TypeCheckType.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5689,6 +5689,7 @@ NeverNullType TypeResolver::resolveTupleType(TupleTypeRepr *repr,
56895689
inStage(TypeResolutionStage::Interface) &&
56905690
!moveOnlyElementIndex.has_value() &&
56915691
!ty->hasUnboundGenericType() &&
5692+
!ty->is<YieldResultType>() &&
56925693
!isa<TupleTypeRepr>(tyR)) {
56935694
auto contextTy = GenericEnvironment::mapTypeIntoContext(
56945695
resolution.getGenericSignature().getGenericEnvironment(), ty);

0 commit comments

Comments
 (0)