@@ -684,16 +684,14 @@ class TypeVariableStep final : public BindingStep<TypeVarBindingProducer> {
684684class DisjunctionStep final : public BindingStep<DisjunctionChoiceProducer> {
685685 Constraint *Disjunction;
686686 SmallVector<Constraint *, 4 > DisabledChoices;
687- ConstraintList::iterator AfterDisjunction;
688687
689688 std::optional<Score> BestNonGenericScore;
690689 std::optional<std::pair<Constraint *, Score>> LastSolvedChoice;
691690
692691public:
693692 DisjunctionStep (ConstraintSystem &cs, Constraint *disjunction,
694693 SmallVectorImpl<Solution> &solutions)
695- : BindingStep(cs, {cs, disjunction}, solutions), Disjunction(disjunction),
696- AfterDisjunction (erase(disjunction)) {
694+ : BindingStep(cs, {cs, disjunction}, solutions), Disjunction(disjunction) {
697695 assert (Disjunction->getKind () == ConstraintKind::Disjunction);
698696 pruneOverloadSet (Disjunction);
699697 ++cs.solverState ->NumDisjunctions ;
@@ -702,8 +700,6 @@ class DisjunctionStep final : public BindingStep<DisjunctionChoiceProducer> {
702700 ~DisjunctionStep () override {
703701 // Rewind back any changes left after attempting last choice.
704702 ActiveChoice.reset ();
705- // Return disjunction constraint back to the system.
706- restore (AfterDisjunction, Disjunction);
707703 // Re-enable previously disabled overload choices.
708704 for (auto *choice : DisabledChoices)
709705 choice->setEnabled ();
0 commit comments