18
18
19
19
const ParamIndexMap = Dict{Union{Symbol, BasicSymbolic}, Tuple{Int, Int}}
20
20
const UnknownIndexMap = Dict{
21
- Union{Symbol, BasicSymbolic}, Union{Int, UnitRange{Int}, Array {Int}}}
21
+ Union{Symbol, BasicSymbolic}, Union{Int, UnitRange{Int}, AbstractArray {Int}}}
22
22
23
23
struct IndexCache
24
24
unknown_idx:: UnknownIndexMap
@@ -41,7 +41,7 @@ function IndexCache(sys::AbstractSystem)
41
41
for sym in unks
42
42
usym = unwrap (sym)
43
43
sym_idx = if Symbolics. isarraysymbolic (sym)
44
- idx: (idx + length (sym) - 1 )
44
+ reshape ( idx: (idx + length (sym) - 1 ), size (sym) )
45
45
else
46
46
idx
47
47
end
@@ -60,7 +60,7 @@ function IndexCache(sys::AbstractSystem)
60
60
61
61
idxs = [unk_idxs[arrsym[i]] for i in eachindex (arrsym)]
62
62
if idxs == idxs[begin ]: idxs[end ]
63
- idxs = idxs[begin ]: idxs[end ]
63
+ idxs = reshape ( idxs[begin ]: idxs[end ], size (idxs))
64
64
end
65
65
unk_idxs[arrsym] = idxs
66
66
if hasname (arrsym)
@@ -140,7 +140,7 @@ function IndexCache(sys::AbstractSystem)
140
140
for (j, p) in enumerate (buf)
141
141
idxs[p] = (i, j)
142
142
idxs[default_toterm (p)] = (i, j)
143
- if hasname (p)
143
+ if hasname (p) && ( ! istree (p) || operation (p) != = getindex)
144
144
idxs[getname (p)] = (i, j)
145
145
idxs[getname (default_toterm (p))] = (i, j)
146
146
end
0 commit comments