Skip to content

Commit c6801d4

Browse files
fix: handle scalarized array arguments to CacheWriter
1 parent 90552f7 commit c6801d4

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -578,11 +578,20 @@ function CacheWriter(sys::AbstractSystem, buffer_types::Vector{TypeT},
578578
Symbol(:tmp, i) SetArray(true, :(out[$i]), get(exprs, T, []))
579579
end
580580

581+
function argument_name(i::Int)
582+
if i <= length(solsyms)
583+
return :($(generated_argument_name(1))[$i])
584+
end
585+
return generated_argument_name(i - length(solsyms))
586+
end
587+
array_assignments = array_variable_assignments(solsyms..., rps...; argument_name)
588+
581589
fn = build_function_wrapper(
582-
sys, nothing, :out, DestructuredArgs(DestructuredArgs.(solsyms)),
583-
DestructuredArgs.(rps)...; p_start = 3, p_end = length(rps) + 2,
590+
sys, nothing, :out,
591+
DestructuredArgs(DestructuredArgs.(solsyms), generated_argument_name(1)),
592+
rps...; p_start = 3, p_end = length(rps) + 2,
584593
expression = Val{true}, add_observed = false,
585-
extra_assignments = [obs_assigns; body])
594+
extra_assignments = [array_assignments; obs_assigns; body])
586595
fn = eval_or_rgf(fn; eval_expression, eval_module)
587596
fn = GeneratedFunctionWrapper{(3, 3, is_split(sys))}(fn, nothing)
588597
return CacheWriter(fn)

0 commit comments

Comments
 (0)