@@ -4828,14 +4828,18 @@ void GenericSignatureBuilder::addedNestedType(PotentialArchetype *nestedPA) {
4828
4828
}
4829
4829
4830
4830
ConstraintResult
4831
- GenericSignatureBuilder::addSameTypeRequirementBetweenArchetypes (
4832
- PotentialArchetype *OrigT1,
4833
- PotentialArchetype *OrigT2,
4834
- const RequirementSource *Source)
4831
+ GenericSignatureBuilder::addSameTypeRequirementBetweenTypeParameters (
4832
+ ResolvedType type1, ResolvedType type2,
4833
+ const RequirementSource *source)
4835
4834
{
4835
+ // Both sides are type parameters; equate them.
4836
+ // FIXME: Realizes potential archetypes far too early.
4837
+ auto OrigT1 = type1.realizePotentialArchetype (*this );
4838
+ auto OrigT2 = type2.realizePotentialArchetype (*this );
4839
+
4836
4840
// Record the same-type constraint, and bail out if it was already known.
4837
4841
if (!OrigT1->getOrCreateEquivalenceClass (*this )
4838
- ->recordSameTypeConstraint (OrigT1, OrigT2, Source ))
4842
+ ->recordSameTypeConstraint (OrigT1, OrigT2, source ))
4839
4843
return ConstraintResult::Resolved;
4840
4844
4841
4845
// Operate on the representatives
@@ -4913,7 +4917,7 @@ GenericSignatureBuilder::addSameTypeRequirementBetweenArchetypes(
4913
4917
if (t2IsConcrete) {
4914
4918
if (t1IsConcrete) {
4915
4919
(void )addSameTypeRequirement (equivClass->concreteType ,
4916
- equivClass2->concreteType , Source ,
4920
+ equivClass2->concreteType , source ,
4917
4921
UnresolvedHandlingKind::GenerateConstraints,
4918
4922
SameTypeConflictCheckedLater ());
4919
4923
} else {
@@ -5158,15 +5162,9 @@ ConstraintResult GenericSignatureBuilder::addSameTypeRequirementDirect(
5158
5162
source.getSource (*this , type1.getDependentType (*this )));
5159
5163
}
5160
5164
5161
- // Both sides are type parameters; equate them.
5162
- // FIXME: Realizes potential archetypes far too early.
5163
- auto pa1 = type1.realizePotentialArchetype (*this );
5164
- auto pa2 = type2.realizePotentialArchetype (*this );
5165
-
5166
- return addSameTypeRequirementBetweenArchetypes (
5167
- pa1, pa2,
5168
- source.getSource (*this ,
5169
- type2.getDependentType (*this )));
5165
+ return addSameTypeRequirementBetweenTypeParameters (
5166
+ type1, type2,
5167
+ source.getSource (*this , type2.getDependentType (*this )));
5170
5168
}
5171
5169
5172
5170
ConstraintResult GenericSignatureBuilder::addInheritedRequirements (
0 commit comments