@@ -578,11 +578,19 @@ function CacheWriter(sys::AbstractSystem, buffer_types::Vector{TypeT},
578
578
Symbol (:tmp , i) ← SetArray (true , :(out[$ i]), get (exprs, T, []))
579
579
end
580
580
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)
581
588
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 ,
584
592
expression = Val{true }, add_observed = false ,
585
- extra_assignments = [obs_assigns; body])
593
+ extra_assignments = [array_assignments; obs_assigns; body])
586
594
fn = eval_or_rgf (fn; eval_expression, eval_module)
587
595
fn = GeneratedFunctionWrapper {(3, 3, is_split(sys))} (fn, nothing )
588
596
return CacheWriter (fn)
0 commit comments