Skip to content

Commit 24a7c2e

Browse files
Merge pull request #3203 from AayushSabharwal/as/recursive-parent
fix: fix `getproperty` syntax on `structural_simplify(complete(sys))`
2 parents 02cbd76 + 82d55dc commit 24a7c2e

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/systems/abstractsystem.jl

+2-2
Original file line numberDiff line numberDiff line change
@@ -1122,7 +1122,7 @@ function Base.propertynames(sys::AbstractSystem; private = false)
11221122
return fieldnames(typeof(sys))
11231123
else
11241124
if has_parent(sys) && (parent = get_parent(sys); parent !== nothing)
1125-
sys = parent
1125+
return propertynames(parent; private)
11261126
end
11271127
names = Symbol[]
11281128
for s in get_systems(sys)
@@ -1144,7 +1144,7 @@ end
11441144

11451145
function Base.getproperty(sys::AbstractSystem, name::Symbol; namespace = !iscomplete(sys))
11461146
if has_parent(sys) && (parent = get_parent(sys); parent !== nothing)
1147-
sys = parent
1147+
return getproperty(parent, name; namespace)
11481148
end
11491149
wrap(getvar(sys, name; namespace = namespace))
11501150
end

test/components.jl

+20
Original file line numberDiff line numberDiff line change
@@ -350,3 +350,23 @@ end
350350
@test_throws ArgumentError simp.inner₊p
351351
@test_throws ArgumentError outer.inner₊p
352352
end
353+
354+
@testset "`getproperty` on `structural_simplify(complete(sys))`" begin
355+
@mtkmodel Foo begin
356+
@variables begin
357+
x(t)
358+
end
359+
end
360+
@mtkmodel Bar begin
361+
@components begin
362+
foo = Foo()
363+
end
364+
@equations begin
365+
D(foo.x) ~ foo.x
366+
end
367+
end
368+
@named bar = Bar()
369+
cbar = complete(bar)
370+
ss = structural_simplify(cbar)
371+
@test isequal(cbar.foo.x, ss.foo.x)
372+
end

0 commit comments

Comments
 (0)