mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Sema: Record fixed requirements in the trail
This commit is contained in:
@@ -139,6 +139,18 @@ SolverTrail::Change::addedFix(ConstraintFix *fix) {
|
||||
return result;
|
||||
}
|
||||
|
||||
SolverTrail::Change
|
||||
SolverTrail::Change::addedFixedRequirement(GenericTypeParamType *GP,
|
||||
unsigned reqKind,
|
||||
Type reqTy) {
|
||||
Change result;
|
||||
result.Kind = ChangeKind::AddedFixedRequirement;
|
||||
result.FixedRequirement.GP = GP;
|
||||
result.FixedRequirement.ReqTy = reqTy;
|
||||
result.Options = reqKind;
|
||||
return result;
|
||||
}
|
||||
|
||||
void SolverTrail::Change::undo(ConstraintSystem &cs) const {
|
||||
auto &cg = cs.getConstraintGraph();
|
||||
|
||||
@@ -186,6 +198,11 @@ void SolverTrail::Change::undo(ConstraintSystem &cs) const {
|
||||
case ChangeKind::AddedFix:
|
||||
cs.removeFix(Fix);
|
||||
break;
|
||||
|
||||
case ChangeKind::AddedFixedRequirement:
|
||||
cs.removeFixedRequirement(FixedRequirement.GP, Options,
|
||||
FixedRequirement.ReqTy);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -287,6 +304,15 @@ void SolverTrail::Change::dump(llvm::raw_ostream &out,
|
||||
Fix->print(out);
|
||||
out << ")\n";
|
||||
break;
|
||||
|
||||
case ChangeKind::AddedFixedRequirement:
|
||||
out << "(added a fixed requirement ";
|
||||
FixedRequirement.GP->print(out, PO);
|
||||
out << " kind ";
|
||||
out << Options << " ";
|
||||
FixedRequirement.ReqTy->print(out, PO);
|
||||
out << ")\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user