Skip to content

Commit d12aa28

Browse files
authored
switch from for loop to generator in make_idx (#242)
1 parent 94ab225 commit d12aa28

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/componentarray.jl

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,16 @@ end
155155
# Builds up data vector and returns appropriate AbstractAxis type for each input type
156156
function make_idx(data, nt::Union{NamedTuple, AbstractDict}, last_val)
157157
len = recursive_length(nt)
158-
kvs = []
159-
lv = 0
160-
for (k, v) in pairs(nt)
161-
(_, val) = make_idx(data, v, lv)
162-
push!(kvs, k => val)
163-
lv = val
164-
end
165-
return (data, ViewAxis(last_index(last_val) .+ (1:len), (;kvs...)))
158+
lv = Ref(0) # workaround for https://github.com/JuliaLang/julia/issues/15276
159+
kvs = (;(
160+
k => begin
161+
inds = make_idx(data, v, lv[])[2]
162+
lv[] = last_index(inds)
163+
inds
164+
end
165+
for (k, v) in pairs(nt)
166+
)...)
167+
return (data, ViewAxis(last_index(last_val) .+ (1:len), kvs))
166168
end
167169
function make_idx(data, pair::Pair, last_val)
168170
data, ax = make_idx(data, pair.second, last_val)

0 commit comments

Comments
 (0)