@@ -5138,21 +5138,21 @@ void ConformanceChecker::ensureRequirementsAreSatisfied() {
5138
5138
5139
5139
const auto result = TypeChecker::checkGenericArgumentsForDiagnostics (
5140
5140
module, reqSig, QuerySubstitutionMap{substitutions});
5141
- switch (result) {
5142
- case CheckGenericArgumentsResult ::Success:
5141
+ switch (result. getKind () ) {
5142
+ case CheckRequirementsResult ::Success:
5143
5143
// Go on to check exportability.
5144
5144
break ;
5145
5145
5146
- case CheckGenericArgumentsResult ::RequirementFailure:
5147
- case CheckGenericArgumentsResult ::SubstitutionFailure:
5146
+ case CheckRequirementsResult ::RequirementFailure:
5147
+ case CheckRequirementsResult ::SubstitutionFailure:
5148
5148
// Diagnose the failure generically.
5149
5149
// FIXME: Would be nice to give some more context here!
5150
5150
if (!Conformance->isInvalid ()) {
5151
5151
diags.diagnose (Loc, diag::type_does_not_conform,
5152
5152
Adoptee,
5153
5153
Proto->getDeclaredInterfaceType ());
5154
5154
5155
- if (result == CheckGenericArgumentsResult ::RequirementFailure) {
5155
+ if (result. getKind () == CheckRequirementsResult ::RequirementFailure) {
5156
5156
TypeChecker::diagnoseRequirementFailure (
5157
5157
result.getRequirementFailureInfo (), Loc, Loc,
5158
5158
proto->getDeclaredInterfaceType (),
@@ -5795,27 +5795,21 @@ ProtocolConformanceRef
5795
5795
TypeChecker::conformsToProtocol (Type T, ProtocolDecl *Proto, ModuleDecl *M,
5796
5796
bool allowMissing) {
5797
5797
// Look up conformance in the module.
5798
- auto lookupResult = M->lookupConformance (
5799
- T, Proto, allowMissing);
5800
-
5798
+ auto lookupResult = M->lookupConformance (T, Proto, allowMissing);
5801
5799
if (lookupResult.isInvalid ()) {
5802
5800
return ProtocolConformanceRef::forInvalid ();
5803
5801
}
5804
5802
5805
- auto condReqs = lookupResult.getConditionalRequirementsIfAvailable ();
5806
- assert (condReqs &&
5807
- " unhandled recursion: missing conditional requirements when they're "
5808
- " required" );
5803
+ auto condReqs = lookupResult.getConditionalRequirements ();
5809
5804
5810
5805
// If we have a conditional requirements that we need to check, do so now.
5811
- if (!condReqs->empty ()) {
5812
- auto conditionalCheckResult = checkGenericArguments (*condReqs);
5813
- switch (conditionalCheckResult) {
5814
- case CheckGenericArgumentsResult::Success:
5806
+ if (!condReqs.empty ()) {
5807
+ switch (checkRequirements (condReqs)) {
5808
+ case CheckRequirementsResult::Success:
5815
5809
break ;
5816
5810
5817
- case CheckGenericArgumentsResult ::RequirementFailure:
5818
- case CheckGenericArgumentsResult ::SubstitutionFailure:
5811
+ case CheckRequirementsResult ::RequirementFailure:
5812
+ case CheckRequirementsResult ::SubstitutionFailure:
5819
5813
return ProtocolConformanceRef::forInvalid ();
5820
5814
}
5821
5815
}
0 commit comments