diff --git a/src/systems/abstractsystem.jl b/src/systems/abstractsystem.jl index 8193b795a2..ab74a71ffa 100644 --- a/src/systems/abstractsystem.jl +++ b/src/systems/abstractsystem.jl @@ -2757,7 +2757,9 @@ function process_parameter_equations(sys::AbstractSystem) is_parameter(sys, sym) || symbolic_type(sym) == ArraySymbolic() && is_sized_array_symbolic(sym) && - all(Base.Fix1(is_parameter, sys), collect(sym)) + all(Base.Fix1(is_parameter, sys), collect(sym)) || + iscall(sym) && + operation(sym) === getindex && is_parameter(sys, arguments(sym)[1]) end # Everything in `varsbuf` is a parameter, so this is a cheap `is_parameter` # check. diff --git a/test/parameter_dependencies.jl b/test/parameter_dependencies.jl index debdeac6e5..627df5913f 100644 --- a/test/parameter_dependencies.jl +++ b/test/parameter_dependencies.jl @@ -389,3 +389,12 @@ end [x(k - 1) ~ x(k) + y(k) + p2, p2 ~ 2p1], t) @test is_parameter(sys, p1) end + +@testset "Scalarized array as RHS of parameter dependency" begin + @parameters p[1:2] p1 p2 + @variables x(t) + @named sys = System([D(x) ~ x, p1 ~ p[1], p2 ~ p[2]], t) + @test any(isequal(p), ModelingToolkit.get_ps(sys)) + sys = mtkcompile(sys) + @test length(ModelingToolkit.parameter_dependencies(sys)) == 2 +end