diff --git a/src/Bridges/bridge_optimizer.jl b/src/Bridges/bridge_optimizer.jl index 1f4da83852..cb7cf23f9b 100644 --- a/src/Bridges/bridge_optimizer.jl +++ b/src/Bridges/bridge_optimizer.jl @@ -815,6 +815,22 @@ function MOI.get( return unbridged_function(b, MOI.get(b.model, attr)) end +function MOI.get( + b::AbstractBridgeOptimizer, + attr::MOI.ListOfConstraintAttributesSet{F,S}, +) where {F,S} + list = unbridged_function(b, MOI.get(b.model, attr)) + if !(MOI.ConstraintName() in list) + for key in keys(b.con_to_name) + if key isa MOI.ConstraintIndex{F,S} + push!(list, MOI.ConstraintName()) + break + end + end + end + return list +end + function MOI.set( b::AbstractBridgeOptimizer, attr::Union{MOI.AbstractModelAttribute,MOI.AbstractOptimizerAttribute}, diff --git a/test/Bridges/bridge_optimizer.jl b/test/Bridges/bridge_optimizer.jl index 6e98f8e4ee..f9aa41b8ab 100644 --- a/test/Bridges/bridge_optimizer.jl +++ b/test/Bridges/bridge_optimizer.jl @@ -748,6 +748,22 @@ function test_recursive_model_objective(::Type{T} = Int) where {T} @test MOI.get(b, attr) ≈ x end +function test_ListOfConstraintAttributesSet() + model = MOI.Bridges.Constraint.SplitInterval{Float64}( + MOI.Utilities.Model{Float64}(), + ) + x = MOI.add_variable(model) + f = 1.0 * x + s = MOI.Interval(0.0, 1.0) + c = MOI.add_constraint(model, f, s) + MOI.set(model, MOI.ConstraintName(), c, "c") + @test MOI.get( + model, + MOI.ListOfConstraintAttributesSet{typeof(f),typeof(s)}(), + ) == [MOI.ConstraintName()] + return +end + end # module TestBridgeOptimizer.runtests()