Skip to content

Commit 0cbd3d7

Browse files
committed
[CSTail] Add AddedLiteral change that tracks addition of literal requirements
1 parent 0cea274 commit 0cbd3d7

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

include/swift/Sema/CSTrail.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,7 @@ GRAPH_NODE_CHANGE(AddedConstraint)
7676
GRAPH_NODE_CHANGE(RemovedConstraint)
7777
GRAPH_NODE_CHANGE(InferredBindings)
7878
GRAPH_NODE_CHANGE(RetractedBindings)
79+
GRAPH_NODE_CHANGE(AddedLiteral)
7980
GRAPH_NODE_CHANGE(RetractedLiteral)
8081
GRAPH_NODE_CHANGE(RetractedDelayedBy)
8182
GRAPH_NODE_CHANGE(RetractedProtocol)

lib/Sema/CSTrail.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,18 @@ void SolverTrail::Change::undo(ConstraintSystem &cs) const {
563563
.Defaults.push_back(TheConstraint.Constraint);
564564
break;
565565

566+
case ChangeKind::AddedLiteral: {
567+
auto &bindings = cg[TheConstraint.TypeVar].getPotentialBindings();
568+
bindings.Literals.erase(
569+
llvm::remove_if(bindings.Literals,
570+
[&](const LiteralRequirement &literal) {
571+
return literal.getSource() ==
572+
TheConstraint.Constraint;
573+
}),
574+
bindings.Literals.end());
575+
break;
576+
}
577+
566578
case ChangeKind::RetractedLiteral:
567579
cg[TheConstraint.TypeVar].getPotentialBindings()
568580
.inferFromLiteral(cs, TheConstraint.TypeVar,

0 commit comments

Comments
 (0)