Skip to content

Commit 180ec8b

Browse files
committed
Fix preference of defaults for composed models
1 parent a207913 commit 180ec8b

File tree

1 file changed

+7
-1
lines changed

1 file changed

+7
-1
lines changed

src/systems/abstractsystem.jl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,13 @@ Base.@deprecate default_p(x) defaults(x) false
420420
function defaults(sys::AbstractSystem)
421421
systems = get_systems(sys)
422422
defs = get_defaults(sys)
423-
isempty(systems) ? defs : mapreduce(namespace_defaults, merge, systems; init=defs)
423+
# `mapfoldr` is really important!!! We should prefer the base model for
424+
# defaults, because people write:
425+
#
426+
# `compose(ODESystem(...; defaults=defs), ...)`
427+
#
428+
# Thus, right associativity is required and crucial for correctness.
429+
isempty(systems) ? defs : mapfoldr(namespace_defaults, merge, systems; init=defs)
424430
end
425431

426432
states(sys::AbstractSystem, v) = renamespace(sys, v)

0 commit comments

Comments
 (0)