Skip to content

Commit 90f1320

Browse files
fix: improve type-stability of observed_equations_used_by
1 parent 2c83233 commit 90f1320

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/utils.jl

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -942,7 +942,16 @@ Keyword arguments:
942942
`available_vars` will not be searched for in the observed equations.
943943
"""
944944
function observed_equations_used_by(sys::AbstractSystem, exprs;
945-
involved_vars = vars(exprs; op = Union{Shift, Differential, Initial}), obs = observed(sys), available_vars = [])
945+
involved_vars = nothing, obs = observed(sys), available_vars = Set{SymbolicT}())
946+
if involved_vars === nothing
947+
involved_vars = Set{SymbolicT}()
948+
SU.search_variables!(involved_vars, exprs; is_atomic = OperatorIsAtomic{Union{Shift, Differential, Initial}}())
949+
elseif !(involved_vars isa Set{SymbolicT})
950+
involved_vars = Set{SymbolicT}(involved_vars)
951+
end
952+
if !(available_vars isa Set)
953+
available_vars = Set(available_vars)
954+
end
946955
if iscomplete(sys) && obs == observed(sys)
947956
cache = getmetadata(sys, MutableCacheKey, nothing)
948957
obs_graph_cache = get!(cache, ObservedGraphCacheKey) do
@@ -956,10 +965,6 @@ function observed_equations_used_by(sys::AbstractSystem, exprs;
956965
graph = observed_dependency_graph(obs)
957966
end
958967

959-
if !(available_vars isa Set)
960-
available_vars = Set(available_vars)
961-
end
962-
963968
obsidxs = BitSet()
964969
for sym in involved_vars
965970
sym in available_vars && continue

0 commit comments

Comments
 (0)