@@ -580,6 +580,10 @@ class GenericSignatureBuilder::ExplicitRequirement {
580580 return sourceAndKind.getInt ();
581581 }
582582
583+ Type getSubjectType () const {
584+ return getSource ()->getStoredType ();
585+ }
586+
583587 const RequirementSource *getSource () const {
584588 return sourceAndKind.getPointer ();
585589 }
@@ -7179,7 +7183,7 @@ void GenericSignatureBuilder::diagnoseRedundantRequirements() const {
71797183 }))
71807184 continue ;
71817185
7182- auto subjectType = getSugaredDependentType (source-> getStoredType (),
7186+ auto subjectType = getSugaredDependentType (req. getSubjectType (),
71837187 getGenericParams ());
71847188
71857189 switch (req.getKind ()) {
@@ -7321,7 +7325,7 @@ void GenericSignatureBuilder::diagnoseConflictingConcreteTypeRequirements() cons
73217325 if (loc.isInvalid () && otherLoc.isInvalid ())
73227326 continue ;
73237327
7324- auto subjectType = pair.concreteTypeRequirement .getSource ()-> getStoredType ();
7328+ auto subjectType = pair.concreteTypeRequirement .getSubjectType ();
73257329 SourceLoc subjectLoc = (loc.isInvalid () ? otherLoc : loc);
73267330
73277331 Impl->HadAnyError = true ;
@@ -8292,7 +8296,7 @@ void GenericSignatureBuilder::enumerateRequirements(
82928296 continue ;
82938297
82948298 auto depTy = getCanonicalTypeInContext (
8295- req.getSource ()-> getStoredType (), { });
8299+ req.getSubjectType (), { });
82968300
82978301 // FIXME: This should be an assert once we ensure that concrete
82988302 // same-type requirements always mark other requirements on the
@@ -8561,7 +8565,7 @@ GenericSignature GenericSignatureBuilder::rebuildSignatureWithoutRedundantRequir
85618565 Impl->ExplicitConformancesImpliedByConcrete .count (req))
85628566 continue ;
85638567
8564- auto subjectType = req.getSource ()-> getStoredType ();
8568+ auto subjectType = req.getSubjectType ();
85658569 subjectType = stripBoundDependentMemberTypes (subjectType);
85668570 auto resolvedSubjectType =
85678571 resolveDependentMemberTypes (*this , subjectType,
0 commit comments