@@ -819,22 +819,24 @@ namespace_controls(sys::AbstractSystem) = controls(sys, controls(sys))
819819
820820function namespace_defaults (sys)
821821 defs = defaults (sys)
822- Dict ((isparameter (k) ? parameters (sys, k) : unknowns (sys, k)) => namespace_expr (v, sys)
822+ Dict ((isparameter (k) ? parameters (sys, k) : unknowns (sys, k)) => namespace_expr (
823+ v, sys; check = true )
823824 for (k, v) in pairs (defs))
824825end
825826
826827function namespace_equations (sys:: AbstractSystem , ivs = independent_variables (sys))
827828 eqs = equations (sys)
828829 isempty (eqs) && return Equation[]
829- map (eq -> namespace_equation (eq, sys; ivs), eqs)
830+ map (eq -> namespace_equation (eq, sys; ivs, check = true ), eqs)
830831end
831832
832833function namespace_equation (eq:: Equation ,
833834 sys,
834835 n = nameof (sys);
835- ivs = independent_variables (sys))
836- _lhs = namespace_expr (eq. lhs, sys, n; ivs)
837- _rhs = namespace_expr (eq. rhs, sys, n; ivs)
836+ ivs = independent_variables (sys),
837+ check = false )
838+ _lhs = namespace_expr (eq. lhs, sys, n; ivs, check)
839+ _rhs = namespace_expr (eq. rhs, sys, n; ivs, check)
838840 _lhs ~ _rhs
839841end
840842
@@ -844,32 +846,36 @@ function namespace_assignment(eq::Assignment, sys)
844846 Assignment (_lhs, _rhs)
845847end
846848
847- function namespace_expr (O, sys, n = nameof (sys); ivs = independent_variables (sys))
849+ function namespace_expr (
850+ O, sys, n = nameof (sys); ivs = independent_variables (sys), check = false )
848851 O = unwrap (O)
849852 if any (isequal (O), ivs)
850853 return O
851854 elseif istree (O)
852855 T = typeof (O)
853856 renamed = let sys = sys, n = n, T = T
854- map (a -> namespace_expr (a, sys, n; ivs):: Any , arguments (O))
857+ map (a -> namespace_expr (a, sys, n; ivs, check ):: Any , arguments (O))
855858 end
856859 if isvariable (O)
860+ check && ! is_variable (sys, O) && ! is_parameter (sys, O) && return O
857861 # Use renamespace so the scope is correct, and make sure to use the
858862 # metadata from the rescoped variable
859863 rescoped = renamespace (n, O)
860864 similarterm (O, operation (rescoped), renamed,
861865 metadata = metadata (rescoped))
862866 elseif Symbolics. isarraysymbolic (O)
867+ check && ! is_variable (sys, O) && ! is_parameter (sys, O) && return O
863868 # promote_symtype doesn't work for array symbolics
864869 similarterm (O, operation (O), renamed, symtype (O), metadata = metadata (O))
865870 else
866871 similarterm (O, operation (O), renamed, metadata = metadata (O))
867872 end
868873 elseif isvariable (O)
874+ check && ! is_variable (sys, O) && ! is_parameter (sys, O) && return O
869875 renamespace (n, O)
870876 elseif O isa Array
871877 let sys = sys, n = n
872- map (o -> namespace_expr (o, sys, n; ivs), O)
878+ map (o -> namespace_expr (o, sys, n; ivs, check ), O)
873879 end
874880 else
875881 O
0 commit comments