Skip to content

Commit 0cc5378

Browse files
committed
Use Union with Nothing in optimizer field
1 parent ec0de3c commit 0cc5378

File tree

2 files changed

+4
-6
lines changed

2 files changed

+4
-6
lines changed

src/Utilities/cachingoptimizer.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ A `CachingOptimizer` has two modes of operation (`CachingOptimizerMode`):
2323
- `Automatic`: The `CachingOptimizer` changes its state when necessary. For example, `optimize!` will automatically call `attachoptimizer!` (an optimizer must have been previously set). Attempting to add a constraint or perform a modification not supported by the optimizer results in a drop to `EmptyOptimizer` mode.
2424
"""
2525
mutable struct CachingOptimizer{OptimizerType, ModelType<:MOI.ModelLike} <: MOI.AbstractOptimizer
26-
optimizer::OptimizerType
26+
optimizer::Union{Nothing, OptimizerType}
2727
model_cache::ModelType
2828
state::CachingOptimizerState
2929
mode::CachingOptimizerMode
@@ -35,7 +35,7 @@ mutable struct CachingOptimizer{OptimizerType, ModelType<:MOI.ModelLike} <: MOI.
3535
end
3636

3737
function CachingOptimizer(model_cache::MOI.ModelLike, mode::CachingOptimizerMode)
38-
CachingOptimizer{Union{Nothing,MOI.AbstractOptimizer}, typeof(model_cache)}(nothing, model_cache, NoOptimizer, mode, IndexMap(), IndexMap())
38+
CachingOptimizer{MOI.AbstractOptimizer, typeof(model_cache)}(nothing, model_cache, NoOptimizer, mode, IndexMap(), IndexMap())
3939
end
4040

4141
"""
@@ -76,7 +76,7 @@ mode(m::CachingOptimizer) = m.mode
7676
Sets or resets `m` to have the given empty optimizer. Can be called
7777
from any state. The `CachingOptimizer` will be in state `EmptyOptimizer` after the call.
7878
"""
79-
function resetoptimizer!(m::CachingOptimizer{Union{Nothing,MOI.AbstractOptimizer}}, optimizer::MOI.AbstractOptimizer)
79+
function resetoptimizer!(m::CachingOptimizer, optimizer::MOI.AbstractOptimizer)
8080
@assert MOI.isempty(optimizer)
8181
m.optimizer = optimizer
8282
m.state = EmptyOptimizer
@@ -104,7 +104,7 @@ end
104104
Drops the optimizer, if one is present. Can be called from any state.
105105
The `CachingOptimizer` will be in state `NoOptimizer` after the call.
106106
"""
107-
function dropoptimizer!(m::CachingOptimizer{Union{Nothing,MOI.AbstractOptimizer}})
107+
function dropoptimizer!(m::CachingOptimizer)
108108
m.optimizer = nothing
109109
m.state = NoOptimizer
110110
return

test/cachingoptimizer.jl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,6 @@ end
171171
@test MOI.isempty(m)
172172
@test MOIU.state(m) == MOIU.AttachedOptimizer
173173
@test MOIU.mode(m) == MOIU.Automatic
174-
@test_throws MethodError MOIU.dropoptimizer!(m)
175-
@test_throws MethodError MOIU.resetoptimizer!(m, s)
176174
end
177175
@testset "Non-empty optimizer" begin
178176
s = MOIU.MockOptimizer(ModelForMock{Float64}())

0 commit comments

Comments
 (0)