Skip to content

Commit 2267dd1

Browse files
committed
Fix namespacing of mixed equations and reactions
1 parent 65f007d commit 2267dd1

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

src/systems/abstractsystem.jl

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -472,15 +472,18 @@ function namespace_defaults(sys)
472472
for (k, v) in pairs(defs))
473473
end
474474

475-
function namespace_equations(sys::AbstractSystem)
475+
function namespace_equations(sys::AbstractSystem, ivs = nothing)
476476
eqs = equations(sys)
477477
isempty(eqs) && return Equation[]
478-
map(eq -> namespace_equation(eq, sys), eqs)
478+
map(eq -> namespace_equation(eq, sys; ivs), eqs)
479479
end
480480

481-
function namespace_equation(eq::Equation, sys, n = nameof(sys))
482-
_lhs = namespace_expr(eq.lhs, sys, n)
483-
_rhs = namespace_expr(eq.rhs, sys, n)
481+
function namespace_equation(eq::Equation,
482+
sys,
483+
n = nameof(sys);
484+
ivs = independent_variables(sys))
485+
_lhs = namespace_expr(eq.lhs, sys, n; ivs)
486+
_rhs = namespace_expr(eq.rhs, sys, n; ivs)
484487
_lhs ~ _rhs
485488
end
486489

@@ -490,15 +493,14 @@ function namespace_assignment(eq::Assignment, sys)
490493
Assignment(_lhs, _rhs)
491494
end
492495

493-
function namespace_expr(O, sys, n = nameof(sys))
494-
ivs = independent_variables(sys)
496+
function namespace_expr(O, sys, n = nameof(sys); ivs = independent_variables(sys))
495497
O = unwrap(O)
496498
if any(isequal(O), ivs)
497499
return O
498500
elseif istree(O)
499501
T = typeof(O)
500502
renamed = let sys = sys, n = n, T = T
501-
map(a -> namespace_expr(a, sys, n)::Any, arguments(O))
503+
map(a -> namespace_expr(a, sys, n; ivs)::Any, arguments(O))
502504
end
503505
if isvariable(O)
504506
# Use renamespace so the scope is correct, and make sure to use the
@@ -513,7 +515,7 @@ function namespace_expr(O, sys, n = nameof(sys))
513515
renamespace(n, O)
514516
elseif O isa Array
515517
let sys = sys, n = n
516-
map(o -> namespace_expr(o, sys, n), O)
518+
map(o -> namespace_expr(o, sys, n; ivs), O)
517519
end
518520
else
519521
O

0 commit comments

Comments
 (0)