diff --git a/lib/makeup/lexers/erlang_lexer.ex b/lib/makeup/lexers/erlang_lexer.ex index 9672272..fa41daf 100644 --- a/lib/makeup/lexers/erlang_lexer.ex +++ b/lib/makeup/lexers/erlang_lexer.ex @@ -220,7 +220,7 @@ defmodule Makeup.Lexers.ErlangLexer do syntax_operators = word_from_list( - ~W[+ - +? ++ = == -- * / < > /= =:= =/= =< >= ==? <- <= ! ? ?!], + ~W[+ - +? ++ = == -- * / < > /= =:= =/= =< >= ==? <- <:- <= <:= ! ? ?!], :operator ) diff --git a/test/makeup/erlang_lexer/erlang_lexer_tokenizer_test.exs b/test/makeup/erlang_lexer/erlang_lexer_tokenizer_test.exs index 163c4b4..0f7c5df 100644 --- a/test/makeup/erlang_lexer/erlang_lexer_tokenizer_test.exs +++ b/test/makeup/erlang_lexer/erlang_lexer_tokenizer_test.exs @@ -281,6 +281,28 @@ defmodule ErlangLexerTokenizer do ] end + test "strict" do + assert lex("[A||A<:-B]") == [ + {:punctuation, %{group_id: "group-1"}, "["}, + {:name, %{}, "A"}, + {:punctuation, %{}, "||"}, + {:name, %{}, "A"}, + {:operator, %{}, "<:-"}, + {:name, %{}, "B"}, + {:punctuation, %{group_id: "group-1"}, "]"} + ] + + assert lex("[A||A<:=B]") == [ + {:punctuation, %{group_id: "group-1"}, "["}, + {:name, %{}, "A"}, + {:punctuation, %{}, "||"}, + {:name, %{}, "A"}, + {:operator, %{}, "<:="}, + {:name, %{}, "B"}, + {:punctuation, %{group_id: "group-1"}, "]"} + ] + end + test "parallel" do assert lex("[A||A<-B&&C<-D]") == [ {:punctuation, %{group_id: "group-1"}, "["}, @@ -379,7 +401,9 @@ defmodule ErlangLexerTokenizer do assert lex("=") == [{:operator, %{}, "="}] assert lex("!") == [{:operator, %{}, "!"}] assert lex("<-") == [{:operator, %{}, "<-"}] + assert lex("<:-") == [{:operator, %{}, "<:-"}] assert lex("<=") == [{:operator, %{}, "<="}] + assert lex("<:=") == [{:operator, %{}, "<:="}] end test "word operators are tokenized as operator" do