@@ -7860,8 +7860,6 @@ void GenericSignatureBuilder::checkConcreteTypeConstraints(
78607860 diag::same_type_conflict,
78617861 diag::redundant_same_type_to_concrete,
78627862 diag::same_type_redundancy_here);
7863-
7864- equivClass->concreteType = resolvedConcreteType;
78657863}
78667864
78677865void GenericSignatureBuilder::checkSuperclassConstraints (
@@ -7898,9 +7896,6 @@ void GenericSignatureBuilder::checkSuperclassConstraints(
78987896 diag::redundant_superclass_constraint,
78997897 diag::superclass_redundancy_here);
79007898
7901- // Record the resolved superclass type.
7902- equivClass->superclass = resolvedSuperclass;
7903-
79047899 // If we have a concrete type, check it.
79057900 // FIXME: Substitute into the concrete type.
79067901 if (equivClass->concreteType ) {
@@ -8097,6 +8092,8 @@ void GenericSignatureBuilder::enumerateRequirements(
80978092 // If this equivalence class is bound to a concrete type, equate the
80988093 // anchor with a concrete type.
80998094 if (Type concreteType = equivClass.concreteType ) {
8095+ concreteType = getCanonicalTypeInContext (concreteType, genericParams);
8096+
81008097 // If the parent of this anchor is also a concrete type, don't
81018098 // create a requirement.
81028099 if (!subjectType->is <GenericTypeParamType>() &&
@@ -8152,14 +8149,15 @@ void GenericSignatureBuilder::enumerateRequirements(
81528149 continue ;
81538150
81548151 // If we have a superclass, produce a superclass requirement
8155- if (equivClass.superclass &&
8156- !equivClass.recursiveSuperclassType &&
8157- !equivClass.superclass ->hasError ()) {
8158- if (hasNonRedundantRequirementSource<Type>(
8152+ if (auto superclass = equivClass.superclass ) {
8153+ superclass = getCanonicalTypeInContext (superclass, genericParams);
8154+
8155+ if (!equivClass.recursiveSuperclassType &&
8156+ hasNonRedundantRequirementSource<Type>(
81598157 equivClass.superclassConstraints ,
81608158 RequirementKind::Superclass, *this )) {
81618159 recordRequirement (RequirementKind::Superclass,
8162- subjectType, equivClass. superclass );
8160+ subjectType, superclass);
81638161 }
81648162 }
81658163
0 commit comments