From 0ba286ea53447cee3b8842d5aaa48360d6c644c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Sat, 29 Jul 2023 10:05:09 -0400 Subject: [PATCH] Fix model_convert for BridgeableConstraint (#3437) --- src/macros.jl | 3 ++- test/nonnegative_bridge.jl | 16 ++++++++++++++++ test/test_model.jl | 7 +++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/macros.jl b/src/macros.jl index 725eb6e9363..2bb97d4df50 100644 --- a/src/macros.jl +++ b/src/macros.jl @@ -923,7 +923,8 @@ end function model_convert(model::AbstractModel, con::BridgeableConstraint) return BridgeableConstraint( model_convert(model, con.constraint), - con.bridge_type, + con.bridge_type; + con.coefficient_type, ) end diff --git a/test/nonnegative_bridge.jl b/test/nonnegative_bridge.jl index 3f30e8de095..888282a7aa1 100644 --- a/test/nonnegative_bridge.jl +++ b/test/nonnegative_bridge.jl @@ -17,6 +17,22 @@ struct Nonnegative <: MOI.AbstractScalarSet end MOI.copy(set::Nonnegative) = set +struct BridgeMe{T,S} + set::S +end + +function JuMP.build_constraint( + error::Function, + f, + set::BridgeMe{T,Nonnegative}, +) where {T} + return BridgeableConstraint( + JuMP.build_constraint(error, f, set.set), + NonnegativeBridge; + coefficient_type = T, + ) +end + """ NonnegativeBridge{T} diff --git a/test/test_model.jl b/test/test_model.jl index af1ee6b3041..2c2c5527c01 100644 --- a/test/test_model.jl +++ b/test/test_model.jl @@ -421,6 +421,13 @@ function test_bridges_add_bridgeable_con_model_optimizer() @test 2.0 == @inferred dual(c) end +function test_macro_bridgeable() + model = Model() + @variable(model, x) + @constraint(model, x in BridgeMe{Int,Nonnegative}(Nonnegative())) + @test NonnegativeBridge{Int} in model.bridge_types +end + function test_bridges_add_bridgeable_con_set_optimizer() model = Model() @variable(model, x)