Skip to content

Commit c44b645

Browse files
Merge pull request #3113 from AayushSabharwal/as/fix-vars
fix: make `vars` search through arrays of symbolics
2 parents 816fde7 + b83a251 commit c44b645

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/utils.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,12 @@ function vars!(vars, O; op = Differential)
385385
if isvariable(O)
386386
return push!(vars, O)
387387
end
388+
if symbolic_type(O) == NotSymbolic() && O isa AbstractArray
389+
for arg in O
390+
vars!(vars, arg; op)
391+
end
392+
return vars
393+
end
388394
!iscall(O) && return vars
389395

390396
operation(O) isa op && return push!(vars, O)

test/variable_utils.jl

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using ModelingToolkit, Test
2-
using ModelingToolkit: value
2+
using ModelingToolkit: value, vars
33
using SymbolicUtils: <
44
@parameters α β δ
55
expr = (((1 / β - 1) + δ) / α)^(1 /- 1))
@@ -33,3 +33,11 @@ aov = ModelingToolkit.collect_applied_operators(eq, Differential)
3333

3434
ts = collect_ivs([eq])
3535
@test ts == Set([t])
36+
37+
@testset "vars searching through array of symbolics" begin
38+
fn(x, y) = sum(x) + y
39+
@register_symbolic fn(x::AbstractArray, y)
40+
@variables x y z
41+
res = vars(fn([x, y], z))
42+
@test length(res) == 3
43+
end

0 commit comments

Comments
 (0)