@@ -557,47 +557,6 @@ bool GenericSignatureImpl::isCanonicalTypeInContext(
557
557
});
558
558
}
559
559
560
- CanType GenericSignatureImpl::getCanonicalTypeInContext (
561
- Type type, GenericSignatureBuilder &builder) const {
562
- type = type->getCanonicalType ();
563
-
564
- // All the contextual canonicality rules apply to type parameters, so if the
565
- // type doesn't involve any type parameters, it's already canonical.
566
- if (!type->hasTypeParameter ())
567
- return CanType (type);
568
-
569
- // Replace non-canonical type parameters.
570
- type = type.transformRec ([&](TypeBase *component) -> Optional<Type> {
571
- if (!isa<GenericTypeParamType>(component) &&
572
- !isa<DependentMemberType>(component))
573
- return None;
574
-
575
- // Find the equivalence class for this dependent type.
576
- auto resolved = builder.maybeResolveEquivalenceClass (
577
- Type (component),
578
- ArchetypeResolutionKind::CompleteWellFormed,
579
- /* wantExactPotentialArchetype=*/ false );
580
- if (!resolved) return None;
581
-
582
- if (auto concrete = resolved.getAsConcreteType ())
583
- return getCanonicalTypeInContext (concrete, builder);
584
-
585
- auto equivClass = resolved.getEquivalenceClass (builder);
586
- if (!equivClass) return None;
587
-
588
- if (equivClass->concreteType ) {
589
- return getCanonicalTypeInContext (equivClass->concreteType , builder);
590
- }
591
-
592
- return equivClass->getAnchor (builder, getGenericParams ());
593
- });
594
-
595
- auto result = type->getCanonicalType ();
596
-
597
- assert (isCanonicalTypeInContext (result, builder));
598
- return result;
599
- }
600
-
601
560
CanType GenericSignatureImpl::getCanonicalTypeInContext (Type type) const {
602
561
type = type->getCanonicalType ();
603
562
@@ -607,7 +566,7 @@ CanType GenericSignatureImpl::getCanonicalTypeInContext(Type type) const {
607
566
return CanType (type);
608
567
609
568
auto &builder = *getGenericSignatureBuilder ();
610
- return getCanonicalTypeInContext (type, builder );
569
+ return builder. getCanonicalTypeInContext (type, { })-> getCanonicalType ( );
611
570
}
612
571
613
572
ArrayRef<CanTypeWrapper<GenericTypeParamType>>
0 commit comments