Skip to content

Commit 47ba19b

Browse files
authored
Merge pull request #32 from JuliaLang/sp/fix-dotop-tokenization
Fix some dotop tokenization issues
2 parents 5673b4f + 71c4bc4 commit 47ba19b

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

Tokenize/src/lexer.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -678,7 +678,7 @@ function lex_minus(l::Lexer)
678678
else
679679
return emit_error(l, Tokens.INVALID_OPERATOR) # "--" is an invalid operator
680680
end
681-
elseif accept(l, '>')
681+
elseif !l.dotop && accept(l, '>')
682682
return emit(l, Tokens.ANON_FUNC)
683683
elseif accept(l, '=')
684684
return emit(l, Tokens.MINUS_EQ)

Tokenize/src/utilities.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,8 @@ function optakessuffix(k)
231231
k == Tokens.CONDITIONAL ||
232232
k == Tokens.ISSUBTYPE ||
233233
k == Tokens.ISSUPERTYPE ||
234+
k == Tokens.LAZY_AND ||
235+
k == Tokens.LAZY_OR ||
234236
k == Tokens.IN ||
235237
k == Tokens.ISA ||
236238
k == Tokens.COLON_EQUALS ||

Tokenize/test/lexer.jl

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ const T = Tokenize.Tokens
66

77
tok(str, i = 1) = collect(tokenize(str))[i]
88

9+
strtok(str) = untokenize.(collect(tokenize(str)), str)
10+
911
@testset "tokens" begin
1012
for s in ["a", IOBuffer("a")]
1113
l = tokenize(s)
@@ -881,3 +883,15 @@ end
881883
Tokens.ENDMARKER
882884
]
883885
end
886+
887+
@testset "dotop miscellanea" begin
888+
@test strtok("a .-> b") == ["a", " ", ".-", ">", " ", "b", ""]
889+
@test strtok(".>: b") == [".>:", " ", "b", ""]
890+
@test strtok(".<: b") == [".<:", " ", "b", ""]
891+
@test strtok("a ||₁ b") == ["a", " ", "||", "", " ", "b", ""]
892+
@test strtok("a ||̄ b") == ["a", " ", "||", "̄", " ", "b", ""]
893+
@test strtok("a .||₁ b") == ["a", " ", ".||", "", " ", "b", ""]
894+
@test strtok("a &&₁ b") == ["a", " ", "&&", "", " ", "b", ""]
895+
@test strtok("a &&̄ b") == ["a", " ", "&&", "̄", " ", "b", ""]
896+
@test strtok("a .&&₁ b") == ["a", " ", ".&&", "", " ", "b", ""]
897+
end

0 commit comments

Comments
 (0)