@@ -42,7 +42,7 @@ reconstruct array variables if they are present scalarized in `args`.
4242"""
4343function array_variable_assignments (args... ; argument_name = generated_argument_name)
4444 # map array symbolic to an identically sized array where each element is (buffer_idx, idx_in_buffer)
45- var_to_arridxs = Dict {BasicSymbolic, Array {Tuple{Int, Int}}} ()
45+ var_to_arridxs = Dict {SymbolicT, Vector {Tuple{Int, Int}}} ()
4646 for (i, arg) in enumerate (args)
4747 # filter out non-arrays
4848 # any element of args which is not an array is assumed to not contain a
@@ -55,13 +55,12 @@ function array_variable_assignments(args...; argument_name = generated_argument_
5555 for (j, var) in enumerate (arg)
5656 var = unwrap (var)
5757 # filter out non-array-symbolics
58- iscall (var) || continue
59- operation (var) == getindex || continue
60- arrvar = arguments (var)[1 ]
58+ arrvar, isarr = split_indexed_var (var)
59+ isarr || continue
6160 # get and/or construct the buffer storing indexes
6261 idxbuffer = get! (
63- () -> map (Returns ((0 , 0 )), eachindex (arrvar)), var_to_arridxs, arrvar)
64- Origin ( first .( axes ( arrvar)) ... )(idxbuffer)[ arguments ( var)[ 2 : end ] . .. ] = (i, j)
62+ () -> map (Returns ((0 , 0 )), SU . stable_eachindex (arrvar)), var_to_arridxs, arrvar)
63+ idxbuffer[SU . as_linear_idx (SU . shape ( arrvar), get_stable_index ( var)) ] = (i, j)
6564 end
6665 end
6766
0 commit comments