AST: Generalize Requirement::isSatisfied() to Requirement::checkRequirement()

This commit is contained in:
Slava Pestov
2023-03-16 21:33:49 -04:00
parent 2e925426c3
commit d27231a91c
5 changed files with 139 additions and 79 deletions

View File

@@ -405,10 +405,19 @@ bool GenericSignatureImpl::isRequirementSatisfied(
LookUpConformanceInSignature(this));
}
// FIXME: Need to check conditional requirements here.
ArrayRef<Requirement> conditionalRequirements;
SmallVector<Requirement, 2> subReqs;
switch (requirement.checkRequirement(subReqs, allowMissing)) {
case CheckRequirementResult::Success:
return true;
return requirement.isSatisfied(conditionalRequirements, allowMissing);
case CheckRequirementResult::ConditionalConformance:
// FIXME: Need to check conditional requirements here.
return true;
case CheckRequirementResult::RequirementFailure:
case CheckRequirementResult::SubstitutionFailure:
return false;
}
}
SmallVector<Requirement, 4>