Skip to content

Commit 2600e31

Browse files
authored
Merge pull request #289 from julia-vscode/sp/incomplete-import-as
fix import as linting for incomplete expressions
2 parents 81b92de + 50693ce commit 2600e31

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

src/imports.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ function resolve_import_block(x::EXPR, state::State, root, usinged, markfinal=tr
44
if x.args[2].meta === nothing
55
x.args[2].meta = Meta()
66
end
7-
if hasbinding(last(x.args[1].args))
7+
if hasbinding(last(x.args[1].args)) && CSTParser.isidentifier(x.args[2])
88
lhsbinding = bindingof(last(x.args[1].args))
99
x.args[2].meta.binding = Binding(x.args[2], lhsbinding.val, lhsbinding.type, lhsbinding.refs)
1010
setref!(x.args[2], bindingof(x.args[2]))
@@ -32,7 +32,7 @@ function resolve_import_block(x::EXPR, state::State, root, usinged, markfinal=tr
3232
return refof(arg)
3333
end
3434
else
35-
return
35+
return
3636
end
3737
end
3838
end
@@ -92,11 +92,11 @@ function add_to_imported_modules(scope::Scope, name::Symbol, val)
9292
end
9393
end
9494
no_modules_above(s::Scope) = !CSTParser.defines_module(s.expr) || s.parent === nothing || no_modules_above(s.parent)
95-
function get_named_toplevel_module(s, name)
95+
function get_named_toplevel_module(s, name)
9696
return nothing
9797
end
9898
function get_named_toplevel_module(s::Scope, name::String)
99-
if CSTParser.defines_module(s.expr)
99+
if CSTParser.defines_module(s.expr)
100100
m_name = CSTParser.get_name(s.expr)
101101
if ((headof(m_name) === :IDENTIFIER && valof(m_name) == name) || headof(m_name) === :NONSTDIDENTIFIER && length(m_name.args) == 2 && valof(m_name.args[2]) == name) && no_modules_above(s)
102102
return s.expr

test/runtests.jl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1697,6 +1697,9 @@ if Meta.parse("import a as b", raise = false).head !== :error
16971697
cst = parse_and_pass("""import Base as base""")
16981698
@test StaticLint.hasbinding(cst[1][2][3])
16991699
@test !StaticLint.hasbinding(cst[1][2][1][1])
1700+
1701+
# incomplete expressinon should not error
1702+
cst = parse_and_pass("""import Base as""")
17001703
end
17011704
end
17021705

0 commit comments

Comments
 (0)