diff --git a/src/Utilities/matrix_of_constraints.jl b/src/Utilities/matrix_of_constraints.jl index 85ff23e81a..0c042f9461 100644 --- a/src/Utilities/matrix_of_constraints.jl +++ b/src/Utilities/matrix_of_constraints.jl @@ -379,6 +379,9 @@ function MOI.add_constraint( ), ) end + if !Utilities.is_canonical(func) + func = Utilities.canonical(func) + end return _add_constraint(model, i, IdentityMap(), func, set) end diff --git a/test/Utilities/matrix_of_constraints.jl b/test/Utilities/matrix_of_constraints.jl index cef44753c0..9b9dc1c936 100644 --- a/test/Utilities/matrix_of_constraints.jl +++ b/test/Utilities/matrix_of_constraints.jl @@ -587,6 +587,16 @@ function test_dual_power_cone() return end +function test_duplicate() + model = _new_ScalarSets() + x = MOI.add_variable(model) + c = MOI.add_constraint(model, 1.0x + 2.0x, MOI.EqualTo(-1.0)) + MOI.Utilities.final_touch(model, nothing) + @test MOI.get(model, MOI.ConstraintFunction(), c) ≈ 3.0x + @test MOI.get(model, MOI.ConstraintSet(), c) == MOI.EqualTo(-1.0) + return +end + end TestMatrixOfConstraints.runtests()