Skip to content

Commit f4d3974

Browse files
Merge pull request #3184 from AayushSabharwal/as/complete-again
fix: `complete` with `split = false` removes the index cache
2 parents c45d100 + eaf5edc commit f4d3974

File tree

2 files changed

+13
-2
lines changed

2 files changed

+13
-2
lines changed

src/systems/abstractsystem.jl

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -985,6 +985,8 @@ function complete(sys::AbstractSystem; split = true, flatten = true)
985985
end
986986
@set! sys.ps = ordered_ps
987987
end
988+
elseif has_index_cache(sys)
989+
@set! sys.index_cache = nothing
988990
end
989991
if isdefined(sys, :initializesystem) && get_initializesystem(sys) !== nothing
990992
@set! sys.initializesystem = complete(get_initializesystem(sys); split)
@@ -3001,8 +3003,8 @@ By default, the resulting system inherits `sys`'s name and description.
30013003
See also [`compose`](@ref).
30023004
"""
30033005
function extend(sys::AbstractSystem, basesys::AbstractSystem;
3004-
name::Symbol = nameof(sys), description = description(sys),
3005-
gui_metadata = get_gui_metadata(sys))
3006+
name::Symbol = nameof(sys), description = description(sys),
3007+
gui_metadata = get_gui_metadata(sys))
30063008
T = SciMLBase.parameterless_type(basesys)
30073009
ivs = independent_variables(basesys)
30083010
if !(sys isa T)

test/odesystem.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1495,3 +1495,12 @@ end
14951495
sys2 = complete(sys)
14961496
@test length(equations(sys2)) == total_eqs
14971497
end
1498+
1499+
@testset "`complete` with `split = false` removes the index cache" begin
1500+
@variables x(t)
1501+
@parameters p
1502+
@mtkbuild sys = ODESystem(D(x) ~ p * t, t)
1503+
@test ModelingToolkit.get_index_cache(sys) !== nothing
1504+
sys2 = complete(sys; split = false)
1505+
@test ModelingToolkit.get_index_cache(sys2) === nothing
1506+
end

0 commit comments

Comments
 (0)