Skip to content

Commit 96259e8

Browse files
committed
Fix deletion before final_touch
1 parent def69e1 commit 96259e8

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

src/Bridges/Constraint/bridges/IntegerToZeroOneBridge.jl

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ function MOI.get(::MOI.ModelLike, ::MOI.ConstraintSet, ::IntegerToZeroOneBridge)
103103
end
104104

105105
function MOI.delete(model::MOI.ModelLike, bridge::IntegerToZeroOneBridge)
106+
if isnothing(bridge.last_bounds)
107+
# Final touch not called yet, so we don't need to delete anything.
108+
return
109+
end
106110
MOI.delete(model, bridge.ci)
107111
MOI.delete(model, bridge.y)
108112
return

test/Bridges/Constraint/test_IntegerToZeroOneBridge.jl

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,18 @@ function test_final_touch_twice()
9494
return
9595
end
9696

97+
function test_delete_before_final_touch()
98+
inner = MOI.Utilities.Model{Int}()
99+
model = MOI.Bridges.Constraint.IntegerToZeroOne{Int}(inner)
100+
x, cx = MOI.add_constrained_variable(model, MOI.Integer())
101+
MOI.add_constraint(model, x, MOI.Interval(1, 3))
102+
MOI.delete(model, x)
103+
@test !MOI.is_valid(model, x)
104+
@test !MOI.is_valid(model, cx)
105+
MOI.Bridges.final_touch(model)
106+
return
107+
end
108+
97109
end # module
98110

99111
TestConstraintIntegerToZeroOne.runtests()

0 commit comments

Comments
 (0)