@@ -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