@@ -795,8 +795,7 @@ static Type formProtocolRelativeType(ProtocolDecl *proto,
795
795
}
796
796
797
797
const RequirementSource *FloatingRequirementSource::getSource (
798
- PotentialArchetype *pa,
799
- Type dependentType) const {
798
+ PotentialArchetype *pa) const {
800
799
switch (kind) {
801
800
case Resolved:
802
801
return storage.get <const RequirementSource *>();
@@ -818,11 +817,11 @@ const RequirementSource *FloatingRequirementSource::getSource(
818
817
auto baseSourcePA =
819
818
baseSource->getAffectedPotentialArchetype (*pa->getBuilder ());
820
819
821
- auto newDependentType =
820
+ auto dependentType =
822
821
formProtocolRelativeType (protocolReq.protocol , baseSourcePA, pa);
823
822
824
823
return storage.get <const RequirementSource *>()
825
- ->viaProtocolRequirement (*pa->getBuilder (), newDependentType ,
824
+ ->viaProtocolRequirement (*pa->getBuilder (), dependentType ,
826
825
protocolReq.protocol , protocolReq.written );
827
826
}
828
827
}
@@ -2135,9 +2134,7 @@ bool GenericSignatureBuilder::addGenericParameterRequirements(
2135
2134
2136
2135
// Add the requirements from the declaration.
2137
2136
llvm::SmallPtrSet<ProtocolDecl *, 8 > visited;
2138
- return addInheritedRequirements (GenericParam, PA,
2139
- GenericParam->getDeclaredInterfaceType (),
2140
- nullptr , visited);
2137
+ return addInheritedRequirements (GenericParam, PA, nullptr , visited);
2141
2138
}
2142
2139
2143
2140
void GenericSignatureBuilder::addGenericParameter (GenericTypeParamType *GenericParam) {
@@ -2248,8 +2245,7 @@ bool GenericSignatureBuilder::addConformanceRequirement(PotentialArchetype *PAT,
2248
2245
if (auto resolver = getLazyResolver ())
2249
2246
resolver->resolveInheritedProtocols (Proto);
2250
2247
2251
- if (addInheritedRequirements (Proto, PAT, Proto->getSelfInterfaceType (),
2252
- Source, Visited))
2248
+ if (addInheritedRequirements (Proto, PAT, Source, Visited))
2253
2249
return true ;
2254
2250
2255
2251
// Add any requirements in the where clause on the protocol.
@@ -2268,9 +2264,7 @@ bool GenericSignatureBuilder::addConformanceRequirement(PotentialArchetype *PAT,
2268
2264
auto AssocPA = T->getNestedType (AssocType, *this );
2269
2265
2270
2266
if (AssocPA != T) {
2271
- if (addInheritedRequirements (AssocType, AssocPA,
2272
- AssocType->getDeclaredInterfaceType (),
2273
- Source, Visited))
2267
+ if (addInheritedRequirements (AssocType, AssocPA, Source, Visited))
2274
2268
return true ;
2275
2269
}
2276
2270
if (auto WhereClause = AssocType->getTrailingWhereClause ()) {
@@ -2320,8 +2314,7 @@ bool GenericSignatureBuilder::addLayoutRequirementDirect(
2320
2314
bool GenericSignatureBuilder::addLayoutRequirement (
2321
2315
UnresolvedType subject,
2322
2316
LayoutConstraint layout,
2323
- FloatingRequirementSource source,
2324
- Type dependentType) {
2317
+ FloatingRequirementSource source) {
2325
2318
// Resolve the subject.
2326
2319
auto resolvedSubject = resolve (subject, source);
2327
2320
if (!resolvedSubject) {
@@ -2347,8 +2340,7 @@ bool GenericSignatureBuilder::addLayoutRequirement(
2347
2340
}
2348
2341
2349
2342
auto pa = resolvedSubject->getPotentialArchetype ();
2350
- return addLayoutRequirementDirect (pa, layout,
2351
- source.getSource (pa, dependentType));
2343
+ return addLayoutRequirementDirect (pa, layout, source.getSource (pa));
2352
2344
}
2353
2345
2354
2346
bool GenericSignatureBuilder::updateSuperclass (
@@ -2446,7 +2438,6 @@ bool GenericSignatureBuilder::addTypeRequirement(
2446
2438
UnresolvedType subject,
2447
2439
UnresolvedType constraint,
2448
2440
FloatingRequirementSource source,
2449
- Type dependentType,
2450
2441
llvm::SmallPtrSetImpl<ProtocolDecl *> *visited) {
2451
2442
// Make sure we always have a "visited" set to pass down.
2452
2443
SmallPtrSet<ProtocolDecl *, 4 > visitedSet;
@@ -2525,7 +2516,7 @@ bool GenericSignatureBuilder::addTypeRequirement(
2525
2516
auto subjectPA = resolvedSubject->getPotentialArchetype ();
2526
2517
assert (subjectPA && " No potential archetype?" );
2527
2518
2528
- auto resolvedSource = source.getSource (subjectPA, dependentType );
2519
+ auto resolvedSource = source.getSource (subjectPA);
2529
2520
2530
2521
// Protocol requirements.
2531
2522
if (constraintType->isExistentialType ()) {
@@ -2835,15 +2826,12 @@ bool GenericSignatureBuilder::addSameTypeRequirementDirect(
2835
2826
// If both sides of the requirement are type parameters, equate them.
2836
2827
if (pa1 && pa2) {
2837
2828
return addSameTypeRequirementBetweenArchetypes (pa1, pa2,
2838
- source.getSource (pa1,
2839
- Type ()));
2829
+ source.getSource (pa1));
2840
2830
// If just one side is a type parameter, map it to a concrete type.
2841
2831
} else if (pa1) {
2842
- return addSameTypeRequirementToConcrete (pa1, t2,
2843
- source.getSource (pa1, Type ()));
2832
+ return addSameTypeRequirementToConcrete (pa1, t2, source.getSource (pa1));
2844
2833
} else if (pa2) {
2845
- return addSameTypeRequirementToConcrete (pa2, t1,
2846
- source.getSource (pa2, Type ()));
2834
+ return addSameTypeRequirementToConcrete (pa2, t1, source.getSource (pa2));
2847
2835
} else {
2848
2836
return addSameTypeRequirementBetweenConcrete (t1, t2, source,
2849
2837
diagnoseMismatch);
@@ -2875,7 +2863,6 @@ void GenericSignatureBuilder::markPotentialArchetypeRecursive(
2875
2863
bool GenericSignatureBuilder::addInheritedRequirements (
2876
2864
TypeDecl *decl,
2877
2865
PotentialArchetype *pa,
2878
- Type dependentType,
2879
2866
const RequirementSource *parentSource,
2880
2867
llvm::SmallPtrSetImpl<ProtocolDecl *> &visited) {
2881
2868
if (isa<AssociatedTypeDecl>(decl) &&
@@ -2913,8 +2900,7 @@ bool GenericSignatureBuilder::addInheritedRequirements(
2913
2900
};
2914
2901
2915
2902
// Protocol requirement.
2916
- return addTypeRequirement (pa, inheritedType, getFloatingSource (),
2917
- dependentType, &visited);
2903
+ return addTypeRequirement (pa, inheritedType, getFloatingSource (), &visited);
2918
2904
});
2919
2905
}
2920
2906
@@ -2938,12 +2924,12 @@ bool GenericSignatureBuilder::addRequirement(const RequirementRepr *Req,
2938
2924
case RequirementReprKind::LayoutConstraint:
2939
2925
return addLayoutRequirement (subst (Req->getSubject ()),
2940
2926
Req->getLayoutConstraint (),
2941
- source, Req-> getSubject () );
2927
+ source);
2942
2928
2943
2929
case RequirementReprKind::TypeConstraint:
2944
2930
return addTypeRequirement (subst (Req->getSubject ()),
2945
2931
subst (Req->getConstraint ()),
2946
- source, Req-> getSubject () );
2932
+ source);
2947
2933
2948
2934
case RequirementReprKind::SameType:
2949
2935
// Require that at least one side of the requirement contain a type
@@ -2995,14 +2981,12 @@ bool GenericSignatureBuilder::addRequirement(
2995
2981
case RequirementKind::Conformance:
2996
2982
return addTypeRequirement (subst (req.getFirstType ()),
2997
2983
subst (req.getSecondType ()),
2998
- source, req.getFirstType (),
2999
- &Visited);
2984
+ source, &Visited);
3000
2985
3001
2986
case RequirementKind::Layout:
3002
2987
return addLayoutRequirement (subst (req.getFirstType ()),
3003
2988
req.getLayoutConstraint (),
3004
- source,
3005
- req.getFirstType ());
2989
+ source);
3006
2990
3007
2991
case RequirementKind::SameType:
3008
2992
return addSameTypeRequirement (
0 commit comments