@@ -2488,28 +2488,17 @@ ConstraintResult GenericSignatureBuilder::handleUnresolvedRequirement(
2488
2488
llvm_unreachable (" unhandled handling" );
2489
2489
}
2490
2490
2491
- bool GenericSignatureBuilder::addConditionalRequirements (
2492
- ProtocolConformanceRef conformance, ModuleDecl *inferForModule,
2493
- SourceLoc loc) {
2491
+ void GenericSignatureBuilder::addConditionalRequirements (
2492
+ ProtocolConformanceRef conformance, ModuleDecl *inferForModule) {
2494
2493
// Abstract conformances don't have associated decl-contexts/modules, but also
2495
2494
// don't have conditional requirements.
2496
2495
if (conformance.isConcrete ()) {
2497
- if (auto condReqs = conformance.getConditionalRequirementsIfAvailable ()) {
2498
- auto source = FloatingRequirementSource::forInferred (nullptr );
2499
- for (auto requirement : *condReqs) {
2500
- addRequirement (requirement, source, inferForModule);
2501
- ++NumConditionalRequirementsAdded;
2502
- }
2503
- } else {
2504
- if (loc.isValid ())
2505
- Diags.diagnose (loc, diag::unsupported_recursive_requirements);
2506
-
2507
- Impl->HadAnyError = true ;
2508
- return true ;
2496
+ auto source = FloatingRequirementSource::forInferred (nullptr );
2497
+ for (auto requirement : conformance.getConditionalRequirements ()) {
2498
+ addRequirement (requirement, source, inferForModule);
2499
+ ++NumConditionalRequirementsAdded;
2509
2500
}
2510
2501
}
2511
-
2512
- return false ;
2513
2502
}
2514
2503
2515
2504
const RequirementSource *
@@ -2576,9 +2565,7 @@ GenericSignatureBuilder::resolveConcreteConformance(ResolvedType type,
2576
2565
});
2577
2566
2578
2567
if (hasExplicitSource) {
2579
- if (addConditionalRequirements (conformance, /* inferForModule=*/ nullptr ,
2580
- concreteSource->getLoc ()))
2581
- return nullptr ;
2568
+ addConditionalRequirements (conformance, /* inferForModule=*/ nullptr );
2582
2569
}
2583
2570
2584
2571
return concreteSource;
@@ -2619,9 +2606,7 @@ const RequirementSource *GenericSignatureBuilder::resolveSuperConformance(
2619
2606
});
2620
2607
2621
2608
if (hasExplicitSource) {
2622
- if (addConditionalRequirements (conformance, /* inferForModule=*/ nullptr ,
2623
- superclassSource->getLoc ()))
2624
- return nullptr ;
2609
+ addConditionalRequirements (conformance, /* inferForModule=*/ nullptr );
2625
2610
}
2626
2611
2627
2612
return superclassSource;
@@ -4833,9 +4818,7 @@ ConstraintResult GenericSignatureBuilder::addTypeRequirement(
4833
4818
if (conformance) {
4834
4819
// Only infer conditional requirements from explicit sources.
4835
4820
if (!source.isDerived ()) {
4836
- if (addConditionalRequirements (conformance, inferForModule,
4837
- source.getLoc ()))
4838
- return ConstraintResult::Conflicting;
4821
+ addConditionalRequirements (conformance, inferForModule);
4839
4822
}
4840
4823
}
4841
4824
}
0 commit comments