[ConstraintSystem] openOpaqueType: remove logic that duplicates bindArchetypesFromContext

`openGenericParameters` calls `bindArchetypesFromContext` which would bind all of the
external generic parameters in the opaque type signature.

Resolves: rdar://107280056
This commit is contained in:
Pavel Yaskevich
2023-03-28 10:06:05 -07:00
parent a9491f6bfe
commit fb574c8cc4
2 changed files with 17 additions and 13 deletions

View File

@@ -1009,22 +1009,11 @@ Type ConstraintSystem::openOpaqueType(OpaqueTypeArchetypeType *opaque,
// underlying return type.
auto opaqueLocator = locator.withPathElement(
LocatorPathElt::OpenedOpaqueArchetype(opaqueDecl));
OpenedTypeMap replacements;
openGeneric(DC, opaqueDecl->getOpaqueInterfaceGenericSignature(),
opaqueLocator, replacements);
// If there is an outer generic signature, bind the outer parameters based
// on the substitutions in the opaque type.
auto subs = opaque->getSubstitutions();
if (auto genericSig = subs.getGenericSignature()) {
for (auto *genericParamPtr : genericSig.getGenericParams()) {
Type genericParam(genericParamPtr);
addConstraint(
ConstraintKind::Bind, openType(genericParam, replacements),
genericParam.subst(subs), opaqueLocator);
}
}
recordOpenedTypes(opaqueLocatorKey, replacements);
return openType(opaque->getInterfaceType(), replacements);