@@ -3042,7 +3042,7 @@ ResolveWitnessResult ConformanceChecker::resolveWitnessViaDerivation(
30423042 // Find the declaration that derives the protocol conformance.
30433043 NominalTypeDecl *derivingTypeDecl = nullptr ;
30443044 auto *nominal = Adoptee->getAnyNominal ();
3045- if (DerivedConformance::derivesProtocolConformance (TC, DC, nominal, Proto))
3045+ if (DerivedConformance::derivesProtocolConformance (DC, nominal, Proto))
30463046 derivingTypeDecl = nominal;
30473047
30483048 if (!derivingTypeDecl) {
@@ -3386,7 +3386,7 @@ void ConformanceChecker::ensureRequirementsAreSatisfied(
33863386 { Type (proto->getProtocolSelfType ()) },
33873387 proto->getRequirementSignature (),
33883388 QuerySubstitutionMap{substitutions},
3389- TypeChecker::LookUpConformance (TC, DC),
3389+ TypeChecker::LookUpConformance (DC),
33903390 ConformanceCheckFlags::Used, &listener);
33913391
33923392 switch (result) {
@@ -3692,7 +3692,7 @@ void ConformanceChecker::checkConformance(MissingWitnessDiagnosisKind Kind) {
36923692 }
36933693}
36943694
3695- static void diagnoseConformanceFailure (TypeChecker &TC, Type T,
3695+ static void diagnoseConformanceFailure (Type T,
36963696 ProtocolDecl *Proto,
36973697 DeclContext *DC,
36983698 SourceLoc ComplainLoc) {
@@ -3705,7 +3705,7 @@ static void diagnoseConformanceFailure(TypeChecker &TC, Type T,
37053705 // If we're checking conformance of an existential type to a protocol,
37063706 // do a little bit of extra work to produce a better diagnostic.
37073707 if (T->isExistentialType () &&
3708- TC. containsProtocol (T, Proto, DC, None)) {
3708+ TypeChecker:: containsProtocol (T, Proto, DC, None)) {
37093709
37103710 if (!T->isObjCExistentialType ()) {
37113711 diags.diagnose (ComplainLoc, diag::protocol_does_not_conform_objc,
@@ -3729,7 +3729,7 @@ static void diagnoseConformanceFailure(TypeChecker &TC, Type T,
37293729 // conformance to RawRepresentable was inferred.
37303730 if (auto enumDecl = T->getEnumOrBoundGenericEnum ()) {
37313731 if (Proto->isSpecificProtocol (KnownProtocolKind::RawRepresentable) &&
3732- DerivedConformance::derivesProtocolConformance (TC, DC, enumDecl,
3732+ DerivedConformance::derivesProtocolConformance (DC, enumDecl,
37333733 Proto) &&
37343734 enumDecl->hasRawType () &&
37353735 !enumDecl->getRawType ()->is <ErrorType>()) {
@@ -3746,7 +3746,8 @@ static void diagnoseConformanceFailure(TypeChecker &TC, Type T,
37463746 if (!equatableProto)
37473747 return ;
37483748
3749- if (!TC.conformsToProtocol (rawType, equatableProto, enumDecl, None)) {
3749+ if (!TypeChecker::conformsToProtocol (rawType, equatableProto, enumDecl,
3750+ None)) {
37503751 SourceLoc loc = enumDecl->getInherited ()[0 ].getSourceRange ().Start ;
37513752 diags.diagnose (loc, diag::enum_raw_type_not_equatable, rawType);
37523753 return ;
@@ -3780,7 +3781,7 @@ void ConformanceChecker::diagnoseOrDefer(
37803781
37813782 // Complain that the type does not conform, once.
37823783 if (isError && !AlreadyComplained) {
3783- diagnoseConformanceFailure (TC, Adoptee, Proto, DC, Loc);
3784+ diagnoseConformanceFailure (Adoptee, Proto, DC, Loc);
37843785 AlreadyComplained = true ;
37853786 }
37863787
@@ -3865,7 +3866,7 @@ Optional<ProtocolConformanceRef> TypeChecker::conformsToProtocol(
38653866 auto lookupResult = M->lookupConformance (T, Proto);
38663867 if (!lookupResult) {
38673868 if (ComplainLoc.isValid ())
3868- diagnoseConformanceFailure (* this , T, Proto, DC, ComplainLoc);
3869+ diagnoseConformanceFailure (T, Proto, DC, ComplainLoc);
38693870 else
38703871 recordDependency ();
38713872
@@ -3881,7 +3882,8 @@ Optional<ProtocolConformanceRef> TypeChecker::conformsToProtocol(
38813882
38823883 // If we're using this conformance, note that.
38833884 if (options.contains (ConformanceCheckFlags::Used)) {
3884- markConformanceUsed (*lookupResult, DC);
3885+ if (auto lazyResolver = DC->getASTContext ().getLazyResolver ())
3886+ lazyResolver->markConformanceUsed (*lookupResult, DC);
38853887 }
38863888
38873889 auto condReqs = lookupResult->getConditionalRequirementsIfAvailable ();
@@ -3909,7 +3911,7 @@ Optional<ProtocolConformanceRef> TypeChecker::conformsToProtocol(
39093911 {Type (lookupResult->getRequirement ()->getProtocolSelfType ())},
39103912 *condReqs,
39113913 [](SubstitutableType *dependentType) { return Type (dependentType); },
3912- LookUpConformance (* this , DC), options);
3914+ LookUpConformance (DC), options);
39133915 switch (conditionalCheckResult) {
39143916 case RequirementCheckResult::Success:
39153917 break ;
@@ -3922,7 +3924,8 @@ Optional<ProtocolConformanceRef> TypeChecker::conformsToProtocol(
39223924
39233925 // When requested, print the conformance access path used to find this
39243926 // conformance.
3925- if (Context.LangOpts .DebugGenericSignatures &&
3927+ ASTContext &ctx = Proto->getASTContext ();
3928+ if (ctx.LangOpts .DebugGenericSignatures &&
39263929 InExpression && T->is <ArchetypeType>() && lookupResult->isAbstract () &&
39273930 !T->castTo <ArchetypeType>()->isOpenedExistential () &&
39283931 !T->castTo <ArchetypeType>()->requiresClass () &&
@@ -3972,7 +3975,7 @@ TypeChecker::LookUpConformance::operator()(
39723975 if (conformingReplacementType->isTypeParameter ())
39733976 return ProtocolConformanceRef (conformedProtocol);
39743977
3975- return tc. conformsToProtocol (
3978+ return TypeChecker:: conformsToProtocol (
39763979 conformingReplacementType,
39773980 conformedProtocol,
39783981 dc,
@@ -4780,7 +4783,7 @@ void TypeChecker::checkConformancesInContext(DeclContext *dc,
47804783 if (auto enumDecl = dyn_cast<EnumDecl>(existingDecl)) {
47814784 if (diag.Protocol ->isSpecificProtocol (
47824785 KnownProtocolKind::RawRepresentable) &&
4783- DerivedConformance::derivesProtocolConformance (* this , dc, enumDecl,
4786+ DerivedConformance::derivesProtocolConformance (dc, enumDecl,
47844787 diag.Protocol ) &&
47854788 enumDecl->hasRawType () &&
47864789 enumDecl->getInherited ()[0 ].getSourceRange ().isValid ()) {
0 commit comments