@@ -2517,6 +2517,7 @@ function extend(sys::AbstractSystem, basesys::AbstractSystem; name::Symbol = nam
25172517 end
25182518 end
25192519
2520+ # collect fields common to all system types
25202521 eqs = union (get_eqs (basesys), get_eqs (sys))
25212522 sts = union (get_unknowns (basesys), get_unknowns (sys))
25222523 ps = union (get_ps (basesys), get_ps (sys))
@@ -2528,20 +2529,20 @@ function extend(sys::AbstractSystem, basesys::AbstractSystem; name::Symbol = nam
25282529 cevs = union (get_continuous_events (basesys), get_continuous_events (sys))
25292530 devs = union (get_discrete_events (basesys), get_discrete_events (sys))
25302531 defs = merge (get_defaults (basesys), get_defaults (sys)) # prefer `sys`
2531- guesses = merge (get_guesses (basesys), get_guesses (sys)) # prefer `sys`
2532- ieqs = union (get_initialization_eqs (basesys), get_initialization_eqs (sys))
25332532 syss = union (get_systems (basesys), get_systems (sys))
2533+ args = length (ivs) == 0 ? (eqs, sts, ps) : (eqs, ivs[1 ], sts, ps)
2534+ kwargs = (parameter_dependencies = dep_ps, observed = obs, continuous_events = cevs,
2535+ discrete_events = devs, defaults = defs, systems = syss,
2536+ name = name, gui_metadata = gui_metadata)
25342537
2535- if length (ivs) == 0
2536- T (eqs, sts, ps, observed = obs, defaults = defs, name = name, systems = syss,
2537- continuous_events = cevs, discrete_events = devs, gui_metadata = gui_metadata,
2538- parameter_dependencies = dep_ps, initialization_eqs = ieqs, guesses = guesses)
2539- elseif length (ivs) == 1
2540- T (eqs, ivs[1 ], sts, ps, observed = obs, defaults = defs, name = name,
2541- systems = syss, continuous_events = cevs, discrete_events = devs,
2542- gui_metadata = gui_metadata, parameter_dependencies = dep_ps,
2543- initialization_eqs = ieqs, guesses = guesses)
2538+ # collect fields specific to some system types
2539+ if basesys isa ODESystem
2540+ ieqs = union (get_initialization_eqs (basesys), get_initialization_eqs (sys))
2541+ guesses = merge (get_guesses (basesys), get_guesses (sys)) # prefer `sys`
2542+ kwargs = merge (kwargs, (initialization_eqs = ieqs, guesses = guesses))
25442543 end
2544+
2545+ return T (args... ; kwargs... )
25452546end
25462547
25472548function Base.:(& )(sys:: AbstractSystem , basesys:: AbstractSystem ; name:: Symbol = nameof (sys))
0 commit comments