Browse Source

Fix formatting of for-loops with Unicode \in.

pull/19/head
Fredrik Ekre 2 years ago
parent
commit
7b7cfc5dc3
No known key found for this signature in database
GPG Key ID: DE82E6D5E364C0A2
  1. 6
      src/runestone.jl
  2. 10
      test/runtests.jl

6
src/runestone.jl

@ -285,9 +285,9 @@ function spaces_around_assignments(ctx::Context, node::JuliaSyntax.GreenNode)
if !(is_assignment(node) && !JuliaSyntax.is_trivia(node)) if !(is_assignment(node) && !JuliaSyntax.is_trivia(node))
return nothing return nothing
end end
# for-loop nodes are of kind K"=" even when `in` is used so we need to # for-loop nodes are of kind K"=" even when `in` or `∈` is used so we need to
# include K"in" in the predicate too. # include these kinds in the predicate too.
is_x = x -> is_assignment(x) || JuliaSyntax.kind(x) === K"in" is_x = x -> is_assignment(x) || JuliaSyntax.kind(x) in KSet"in"
return spaces_around_x(ctx, node, is_x) return spaces_around_x(ctx, node, is_x)
end end

10
test/runtests.jl

@ -159,11 +159,11 @@ end
@test format_string("a =+ c") == "a = + c" @test format_string("a =+ c") == "a = + c"
# Short form function definitions # Short form function definitions
@test format_string("sin(π)=cos(pi)") == "sin(π) = cos(pi)" @test format_string("sin(π)=cos(pi)") == "sin(π) = cos(pi)"
# For loop nodes are assignment, even when using `in` # For loop nodes are assignment, even when using `in` and `∈`
@test format_string("for i=1:10\nend\n") == "for i = 1:10\nend\n" for op in ("in", "=", ""), sp in ("", " ", " ")
@test format_string("for i =1:10\nend\n") == "for i = 1:10\nend\n" op == "in" && sp == "" && continue
@test format_string("for i = 1:10\nend\n") == "for i = 1:10\nend\n" @test format_string("for i$(sp)$(op)$(sp)1:10\nend\n") == "for i $(op) 1:10\nend\n"
@test format_string("for i in 1:10\nend\n") == "for i in 1:10\nend\n" end
end end
@testset "whitespace around <: and >:, no whitespace around ::" begin @testset "whitespace around <: and >:, no whitespace around ::" begin

Loading…
Cancel
Save