Tag / as an operator in fragments, closes #14643
This commit is contained in:
@@ -302,7 +302,8 @@ defmodule Code.Fragment do
|
||||
{{:local_or_var, acc}, count} -> {{:local_arity, acc}, count}
|
||||
{{:dot, base, acc}, count} -> {{:dot_arity, base, acc}, count}
|
||||
{{:operator, acc}, count} -> {{:operator_arity, acc}, count}
|
||||
{_, _} -> {:none, 0}
|
||||
{{:sigil, _}, _} -> {:none, 0}
|
||||
{_, _} -> {{:operator, ~c"/"}, 1}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -302,6 +302,7 @@ defmodule CodeFragmentTest do
|
||||
end
|
||||
|
||||
test "operators" do
|
||||
assert CF.cursor_context("/") == {:operator, ~c"/"}
|
||||
assert CF.cursor_context("+") == {:operator, ~c"+"}
|
||||
assert CF.cursor_context("++") == {:operator, ~c"++"}
|
||||
assert CF.cursor_context("!") == {:operator, ~c"!"}
|
||||
@@ -361,6 +362,15 @@ defmodule CodeFragmentTest do
|
||||
assert CF.cursor_context("~r/") == :none
|
||||
assert CF.cursor_context("~r<") == :none
|
||||
|
||||
assert CF.cursor_context("~r''") == :none
|
||||
assert CF.cursor_context("~r' '") == :none
|
||||
assert CF.cursor_context("~r'foo'") == :none
|
||||
|
||||
# The slash is used in sigils, arities, and operators, so there is ambiguity
|
||||
assert CF.cursor_context("~r//") == {:operator, ~c"/"}
|
||||
assert CF.cursor_context("~r/ /") == {:operator, ~c"/"}
|
||||
assert CF.cursor_context("~r/foo/") == {:local_arity, ~c"foo"}
|
||||
|
||||
assert CF.cursor_context("~R") == {:sigil, ~c"R"}
|
||||
assert CF.cursor_context("~R/") == :none
|
||||
assert CF.cursor_context("~R<") == :none
|
||||
|
||||
Reference in New Issue
Block a user