From 24d90e1a934b72ab8768caa2cefca2cd2a8c0af6 Mon Sep 17 00:00:00 2001 From: odow Date: Mon, 18 Aug 2025 11:37:41 +1200 Subject: [PATCH] [Utilities] fix a Utilities.AbstractModel with no constraints --- src/Utilities/model.jl | 6 +++--- src/Utilities/struct_of_constraints.jl | 3 ++- test/Utilities/model.jl | 10 ++++++++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/Utilities/model.jl b/src/Utilities/model.jl index 5b6230010c..184488c3b8 100644 --- a/src/Utilities/model.jl +++ b/src/Utilities/model.jl @@ -369,10 +369,10 @@ end function MOI.get( model::AbstractModel{T}, attr::MOI.ListOfConstraintTypesPresent, -) where {T} +)::Vector{Tuple{Type,Type}} where {T} return vcat( - MOI.get(model.constraints, attr)::Vector{Tuple{Type,Type}}, - MOI.get(model.variables, attr)::Vector{Tuple{Type,Type}}, + MOI.get(model.constraints, attr), + MOI.get(model.variables, attr), ) end diff --git a/src/Utilities/struct_of_constraints.jl b/src/Utilities/struct_of_constraints.jl index 6ece6f383d..a376e24388 100644 --- a/src/Utilities/struct_of_constraints.jl +++ b/src/Utilities/struct_of_constraints.jl @@ -152,9 +152,10 @@ function MOI.get( end function MOI.is_empty(model::StructOfConstraints) - return mapreduce_constraints(&, model, true) do constrs + ret = mapreduce_constraints(&, model, true) do constrs return constrs === nothing || MOI.is_empty(constrs) end + return something(ret, true) end function MOI.empty!(model::StructOfConstraints) diff --git a/test/Utilities/model.jl b/test/Utilities/model.jl index 62d5d57a7e..10ef4b784c 100644 --- a/test/Utilities/model.jl +++ b/test/Utilities/model.jl @@ -617,6 +617,16 @@ function test_struct_of_constraints_by_set_types() return end +MOI.Utilities.@model(EmptyModel, (), (), (), (), (), (), (), ()) + +function test_empty_model() + model = EmptyModel{Float64}() + @test MOI.is_empty(model) + @test MOI.get(model, MOI.ListOfConstraintTypesPresent()) == + Tuple{Type,Type}[] + return +end + end # module TestModel.runtests()