Skip to content

Commit b49628d

Browse files
fix: handle scalarized array arguments to CacheWriter
1 parent 6665eb0 commit b49628d

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

src/systems/nonlinear/nonlinearsystem.jl

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -578,11 +578,19 @@ 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...; argument_name)
581588
fn = build_function_wrapper(
582-
sys, nothing, :out, DestructuredArgs(DestructuredArgs.(solsyms)),
583-
DestructuredArgs.(rps)...; p_start = 3, p_end = length(rps) + 2,
589+
sys, nothing, :out,
590+
DestructuredArgs(DestructuredArgs.(solsyms), generated_argument_name(1)),
591+
rps...; p_start = 3, p_end = length(rps) + 2,
584592
expression = Val{true}, add_observed = false,
585-
extra_assignments = [obs_assigns; body])
593+
extra_assignments = [array_assignments; obs_assigns; body])
586594
fn = eval_or_rgf(fn; eval_expression, eval_module)
587595
fn = GeneratedFunctionWrapper{(3, 3, is_split(sys))}(fn, nothing)
588596
return CacheWriter(fn)

0 commit comments

Comments
 (0)