Sema: Record pack expansion environments in the trail

This commit is contained in:
Slava Pestov
2024-10-01 14:44:26 -04:00
parent 9afb1a960b
commit f51bf3cf9d
5 changed files with 47 additions and 10 deletions

View File

@@ -201,6 +201,14 @@ SolverTrail::Change::recordedOpenedPackExpansionType(PackExpansionType *expansio
return result;
}
SolverTrail::Change
SolverTrail::Change::recordedPackExpansionEnvironment(ConstraintLocator *locator) {
Change result;
result.Kind = ChangeKind::RecordedPackExpansionEnvironment;
result.Locator = locator;
return result;
}
void SolverTrail::Change::undo(ConstraintSystem &cs) const {
auto &cg = cs.getConstraintGraph();
@@ -277,6 +285,10 @@ void SolverTrail::Change::undo(ConstraintSystem &cs) const {
case ChangeKind::RecordedOpenedPackExpansionType:
cs.removeOpenedPackExpansionType(ExpansionTy);
break;
case ChangeKind::RecordedPackExpansionEnvironment:
cs.removePackExpansionEnvironment(Locator);
break;
}
}
@@ -424,6 +436,12 @@ void SolverTrail::Change::dump(llvm::raw_ostream &out,
ExpansionTy->print(out, PO);
out << ")\n";
break;
case ChangeKind::RecordedPackExpansionEnvironment:
out << "(recorded pack expansion environment at ";
Locator->dump(&cs.getASTContext().SourceMgr, out);
out << ")\n";
break;
}
}