@@ -181,7 +181,7 @@ for prop in [
181
181
end
182
182
end
183
183
184
- Setfield. get (obj:: AbstractSystem , l :: Setfield.PropertyLens{field} ) where {field} = getfield (obj, field)
184
+ Setfield. get (obj:: AbstractSystem , :: Setfield.PropertyLens{field} ) where {field} = getfield (obj, field)
185
185
@generated function ConstructionBase. setproperties (obj:: AbstractSystem , patch:: NamedTuple )
186
186
if issubset (fieldnames (patch), fieldnames (obj))
187
187
args = map (fieldnames (obj)) do fn
@@ -223,7 +223,7 @@ function Base.propertynames(sys::AbstractSystem; private=false)
223
223
end
224
224
end
225
225
226
- function Base. getproperty (sys:: AbstractSystem , name:: Symbol ; namespace= true )
226
+ function Base. getproperty (sys:: AbstractSystem , name:: Symbol ; namespace= false )
227
227
sysname = nameof (sys)
228
228
systems = get_systems (sys)
229
229
if isdefined (sys, name)
@@ -232,7 +232,7 @@ function Base.getproperty(sys::AbstractSystem, name::Symbol; namespace=true)
232
232
elseif ! isempty (systems)
233
233
i = findfirst (x-> nameof (x)== name,systems)
234
234
if i != = nothing
235
- return namespace ? rename (systems[i],renamespace (sysname,name)) : systems[i]
235
+ return namespace ? rename (systems[i], renamespace (sysname,name)) : systems[i]
236
236
end
237
237
end
238
238
@@ -639,11 +639,12 @@ macro named(expr)
639
639
esc (_named (expr))
640
640
end
641
641
642
- function _nonamespace (expr)
642
+ function _config (expr, namespace)
643
+ cn = Base. Fix2 (_config, namespace)
643
644
if Meta. isexpr (expr, :.)
644
- return :($ getproperty ($ (map (_nonamespace , expr. args)... ); namespace= false ))
645
+ return :($ getproperty ($ (map (cn , expr. args)... ); namespace= $ namespace ))
645
646
elseif expr isa Expr && ! isempty (expr. args)
646
- return Expr (expr. head, map (_nonamespace , expr. args)... )
647
+ return Expr (expr. head, map (cn , expr. args)... )
647
648
else
648
649
expr
649
650
end
@@ -654,9 +655,21 @@ $(SIGNATURES)
654
655
655
656
Rewrite `@nonamespace a.b.c` to
656
657
`getproperty(getproperty(a, :b; namespace = false), :c; namespace = false)`.
658
+
659
+ This is the default behavior of `getproperty`. This should be used when inheriting states from a model.
657
660
"""
658
661
macro nonamespace (expr)
659
- esc (_nonamespace (expr))
662
+ esc (_config (expr, false ))
663
+ end
664
+
665
+ """
666
+ $(SIGNATURES)
667
+
668
+ Rewrite `@namespace a.b.c` to
669
+ `getproperty(getproperty(a, :b; namespace = true), :c; namespace = true)`.
670
+ """
671
+ macro namespace (expr)
672
+ esc (_config (expr, true ))
660
673
end
661
674
662
675
"""
0 commit comments