Skip to content

Commit 484df21

Browse files
committed
fix import.:x parsing
1 parent ad2c404 commit 484df21

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

src/components/internals.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ end
388388
"""
389389
Helper function for parsing import/using statements.
390390
"""
391-
function parse_dot_mod(ps::ParseState, is_colon = false, allow_as = false)
391+
function parse_dot_mod(ps::ParseState, is_colon=false, allow_as=false)
392392
ret = EXPR(EXPR(:OPERATOR, 0, 0, "."), EXPR[], EXPR[])
393393

394394
prevpos = position(ps)
@@ -414,6 +414,11 @@ function parse_dot_mod(ps::ParseState, is_colon = false, allow_as = false)
414414

415415
if kindof(ps.nt) === Tokens.DOT
416416
pushtotrivia!(ret, EXPR(next(ps)))
417+
if kindof(ps.nt) === Tokens.COLON
418+
next(ps)
419+
push!(ret, INSTANCE(next(ps)))
420+
return ret
421+
end
417422
elseif isoperator(ps.nt) && (ps.nt.dotop || kindof(ps.nt) === Tokens.DOT)
418423
pushtotrivia!(ret, EXPR(:DOT, 1, 1))
419424
ps.nt = RawToken(kindof(ps.nt), ps.nt.startpos, ps.nt.endpos, ps.nt.startbyte + 1, ps.nt.endbyte, ps.nt.token_error, false, ps.nt.suffix)

src/spec.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,6 @@ function tokenkindtoheadmap(k::Tokens.Kind)
430430
elseif k === Tokens.ENDMARKER
431431
return :errortoken
432432
else
433-
error("")
433+
error("Cannot convert token $k to Expr head")
434434
end
435435
end

test/parser.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,9 @@ end
829829
""" |> test_expr
830830
@test "function f() ::T end" |> test_expr # ws closer
831831
@test "import Base: +, -, .+, .-" |> test_expr
832+
@test "import Base.:+" |> test_expr
833+
@test "import Base.:⋅" |> test_expr
834+
@test "import Base.:sin, Base.:-" |> test_expr
832835
@test "[a + + l]" |> test_expr # ws closer
833836
@test "@inbounds C[i,j] = - α[i] * αjc" |> test_expr
834837
@test "@inbounds C[i,j] = - n * p[i] * pj" |> test_expr

0 commit comments

Comments
 (0)