@@ -389,25 +389,27 @@ function renamespace(sys, x)
389
389
sys === nothing && return x
390
390
x = unwrap (x)
391
391
if x isa Symbolic
392
+ T = typeof (x)
392
393
if istree (x) && operation (x) isa Operator
393
- return similarterm (x, operation (x), Any[renamespace (sys, only (arguments (x)))])
394
+ return similarterm (x, operation (x),
395
+ Any[renamespace (sys, only (arguments (x)))]):: T
394
396
end
395
397
let scope = getmetadata (x, SymScope, LocalScope ())
396
398
if scope isa LocalScope
397
- rename (x, renamespace (getname (sys), getname (x)))
399
+ rename (x, renamespace (getname (sys), getname (x))):: T
398
400
elseif scope isa ParentScope
399
- setmetadata (x, SymScope, scope. parent)
401
+ setmetadata (x, SymScope, scope. parent):: T
400
402
elseif scope isa DelayParentScope
401
403
if scope. N > 0
402
404
x = setmetadata (x, SymScope,
403
405
DelayParentScope (scope. parent, scope. N - 1 ))
404
- rename (x, renamespace (getname (sys), getname (x)))
406
+ rename (x, renamespace (getname (sys), getname (x))):: T
405
407
else
406
408
# rename(x, renamespace(getname(sys), getname(x)))
407
- setmetadata (x, SymScope, scope. parent)
409
+ setmetadata (x, SymScope, scope. parent):: T
408
410
end
409
411
else # GlobalScope
410
- x
412
+ x:: T
411
413
end
412
414
end
413
415
elseif x isa AbstractSystem
@@ -423,9 +425,8 @@ namespace_controls(sys::AbstractSystem) = controls(sys, controls(sys))
423
425
424
426
function namespace_defaults (sys)
425
427
defs = defaults (sys)
426
- Dict ((isparameter (k) ? parameters (sys, k) : states (sys, k)) => namespace_expr (defs[k],
427
- sys)
428
- for k in keys (defs))
428
+ Dict ((isparameter (k) ? parameters (sys, k) : states (sys, k)) => namespace_expr (v, sys)
429
+ for (k, v) in pairs (defs))
429
430
end
430
431
431
432
function namespace_equations (sys:: AbstractSystem )
@@ -454,14 +455,19 @@ function namespace_expr(O, sys, n = nameof(sys))
454
455
elseif isvariable (O)
455
456
renamespace (n, O)
456
457
elseif istree (O)
457
- renamed = map (a -> namespace_expr (a, sys, n), arguments (O) )
458
+ T = typeof (O )
458
459
if symtype (operation (O)) <: FnType
459
- renamespace (n, O)
460
+ renamespace (n, O):: T
460
461
else
461
- similarterm (O, operation (O), renamed)
462
+ renamed = let sys = sys, n = n, T = T
463
+ map (a -> namespace_expr (a, sys, n):: Any , arguments (O))
464
+ end
465
+ similarterm (O, operation (O), renamed):: T
462
466
end
463
467
elseif O isa Array
464
- map (o -> namespace_expr (o, sys, n), O)
468
+ let sys = sys, n = n
469
+ map (o -> namespace_expr (o, sys, n), O)
470
+ end
465
471
else
466
472
O
467
473
end
0 commit comments