diff --git a/src/runestone.jl b/src/runestone.jl index 5914417..47cd2ae 100644 --- a/src/runestone.jl +++ b/src/runestone.jl @@ -1074,12 +1074,16 @@ function replace_with_in_filter(ctx::Context, node::Node) @assert kind(node) === K"filter" && !is_leaf(node) pos = position(ctx.fmt_io) kids = verified_kids(node) - idx = findfirst(x -> kind(x) === K"=" && !is_leaf(x), kids)::Int + idx = findfirst(x -> kind(x) in KSet"= cartesian_iterator" && !is_leaf(x), kids)::Int for i in 1:(idx - 1) accept_node!(ctx, kids[i]) end kid = kids[idx] - kid′ = replace_with_in(ctx, kid) + if kind(kid) === K"=" + kid′ = replace_with_in(ctx, kid) + else + kid′ = replace_with_in_cartesian(ctx, kid) + end if kid′ === nothing seek(ctx.fmt_io, pos) return nothing diff --git a/test/runtests.jl b/test/runtests.jl index ac8453c..5739ade 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -434,6 +434,8 @@ end for (l, r) in (("[", "]"), ("(", ")")) @test format_string("$(l)i for i$(sp)$(op)$(sp)I if i < 2$(r)") == "$(l)i for i in I if i < 2$(r)" + @test format_string("$(l)i for i$(sp)$(op)$(sp)I, j$(sp)$(op)$(sp)J if i < j$(r)") == + "$(l)i for i in I, j in J if i < j$(r)" end end end