Skip to content

Commit c7345b0

Browse files
committed
Fix tests
1 parent 8e67e16 commit c7345b0

1 file changed

Lines changed: 67 additions & 1 deletion

File tree

src/MOI_Nonlinear_fork.jl

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ function parse_expression(data::MOI.Nonlinear.Model, input)
2525
return expr
2626
end
2727

28+
parse_expression(data, expr, item, parent) = MOI.Nonlinear.parse_expression(data, expr, item, parent)
29+
2830
function parse_expression(
2931
data::MOI.Nonlinear.Model,
3032
expr::MOI.Nonlinear.Expression,
@@ -111,6 +113,70 @@ function eval_multivariate_function(
111113
operator = registry.registered_multivariate_operators[offset]
112114
@assert length(x) == operator.N
113115
ret = operator.f(x)
114-
check_return_type(T, ret)
116+
MOI.Nonlinear.check_return_type(T, ret)
115117
return ret::T
116118
end
119+
120+
function _parse_vect_expression(
121+
stack::Vector{Tuple{Int,Any}},
122+
data::MOI.Nonlinear.Model,
123+
expr::MOI.Nonlinear.Expression,
124+
x::Expr,
125+
parent_index::Int,
126+
)
127+
@assert Meta.isexpr(x, :vect)
128+
id = get(data.operators.multivariate_operator_to_id, :vect, nothing)
129+
push!(expr.nodes, MOI.Nonlinear.Node(MOI.Nonlinear.NODE_CALL_MULTIVARIATE, id, parent_index))
130+
for i in length(x.args):-1:1
131+
push!(stack, (length(expr.nodes), x.args[i]))
132+
end
133+
return
134+
end
135+
136+
function _parse_row_expression(
137+
stack::Vector{Tuple{Int,Any}},
138+
data::MOI.Nonlinear.Model,
139+
expr::MOI.Nonlinear.Expression,
140+
x::Expr,
141+
parent_index::Int,
142+
)
143+
@assert Meta.isexpr(x, :row)
144+
id = get(data.operators.multivariate_operator_to_id, :row, nothing)
145+
push!(expr.nodes, MOI.Nonlinear.Node(MOI.Nonlinear.NODE_CALL_MULTIVARIATE, id, parent_index))
146+
for i in length(x.args):-1:1
147+
push!(stack, (length(expr.nodes), x.args[i]))
148+
end
149+
return
150+
end
151+
152+
function _parse_hcat_expression(
153+
stack::Vector{Tuple{Int,Any}},
154+
data::MOI.Nonlinear.Model,
155+
expr::MOI.Nonlinear.Expression,
156+
x::Expr,
157+
parent_index::Int,
158+
)
159+
@assert Meta.isexpr(x, :hcat)
160+
id = get(data.operators.multivariate_operator_to_id, :hcat, nothing)
161+
push!(expr.nodes, MOI.Nonlinear.Node(MOI.Nonlinear.NODE_CALL_MULTIVARIATE, id, parent_index))
162+
for i in length(x.args):-1:1
163+
push!(stack, (length(expr.nodes), x.args[i]))
164+
end
165+
return
166+
end
167+
168+
function _parse_vcat_expression(
169+
stack::Vector{Tuple{Int,Any}},
170+
data::MOI.Nonlinear.Model,
171+
expr::MOI.Nonlinear.Expression,
172+
x::Expr,
173+
parent_index::Int,
174+
)
175+
@assert Meta.isexpr(x, :vcat)
176+
id = get(data.operators.multivariate_operator_to_id, :vcat, nothing)
177+
push!(expr.nodes, MOI.Nonlinear.Node(MOI.Nonlinear.NODE_CALL_MULTIVARIATE, id, parent_index))
178+
for i in length(x.args):-1:1
179+
push!(stack, (length(expr.nodes), x.args[i]))
180+
end
181+
return
182+
end

0 commit comments

Comments
 (0)