diff --git a/src/chisels.jl b/src/chisels.jl index 006a08a..a2ae4c5 100644 --- a/src/chisels.jl +++ b/src/chisels.jl @@ -101,8 +101,16 @@ function infix_op_call_op(node::JuliaSyntax.GreenNode) return children[op_index] end +# Comparison leaf or a dotted comparison leaf (.<) function is_comparison_leaf(node::JuliaSyntax.GreenNode) - return is_leaf(node) && JuliaSyntax.is_prec_comparison(node) + if is_leaf(node) && JuliaSyntax.is_prec_comparison(node) + return true + elseif !is_leaf(node) && JuliaSyntax.kind(node) === K"." && + n_children(node) == 2 && is_comparison_leaf(verified_children(node)[2]) + return true + else + return false + end end function is_operator_leaf(node::JuliaSyntax.GreenNode) diff --git a/test/runtests.jl b/test/runtests.jl index 100db48..c4884c9 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -157,6 +157,9 @@ end @test format_string("a$(sp)<=$(sp)b$(sp)>=$(sp)c") == "a <= b >= c" @test format_string("a$(sp)<$(sp)b$(sp)>=$(sp)c") == "a < b >= c" @test format_string("a$(sp)<$(sp)b$(sp)<$(sp)c") == "a < b < c" + # Dotted chains + @test format_string("a$(sp).<=$(sp)b$(sp).>=$(sp)c") == "a .<= b .>= c" + @test format_string("a$(sp).<$(sp)b$(sp).<$(sp)c") == "a .< b .< c" end end