Skip to content

Commit 8da7305

Browse files
committed
Support :flatten
1 parent 197772a commit 8da7305

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/compat.jl

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,8 +294,18 @@ function _insert_convert_expr(@nospecialize(e), graph::SyntaxGraph, src::SourceA
294294
push!(child_exprs,
295295
Expr(:finally, e.args[4] === false ? nothing : e.args[4]))
296296
end
297-
elseif e.head === :generator # TODO flatten
298-
child_exprs = [e.args[1], _to_iterspec(e.args[2:end])]
297+
elseif e.head === :flatten || e.head === :generator
298+
st_k = K"generator"
299+
child_exprs = Any[]
300+
next = e
301+
while next.head === :flatten
302+
@assert next.args[1].head === :generator
303+
push!(child_exprs, _to_iterspec(next.args[1].args[2:end]))
304+
next = next.args[1].args[1]
305+
end
306+
@assert next.head === :generator
307+
push!(child_exprs, _to_iterspec(next.args[2:end]))
308+
pushfirst!(child_exprs, next.args[1])
299309
elseif e.head === :ncat || e.head === :nrow
300310
st_flags |= JS.set_numeric_flags(e.args[1])
301311
child_exprs = child_exprs[2:end]

0 commit comments

Comments
 (0)