Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/requests/features.jl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
resolve_shadow_binding(b) = b
function resolve_shadow_binding(b::StaticLint.Binding, visited=StaticLint.Binding[])
if b in visited
throw(LSInfiniteLoop("Inifinite loop in bindings."))
throw(LSInfiniteLoop("Infinite loop in bindings."))
else
push!(visited, b)
end
Expand Down Expand Up @@ -299,11 +299,15 @@ function textDocument_prepareRename_request(params::PrepareRenameParams, server:
return x_range
end

function is_callable_object_binding(name::EXPR)
CSTParser.isoperator(headof(name)) && valof(headof(name)) === "::" && length(name.args) >= 1
end
is_valid_binding_name(name) = false
function is_valid_binding_name(name::EXPR)
(headof(name) === :IDENTIFIER && valof(name) isa String && !isempty(valof(name))) ||
CSTParser.isoperator(name) ||
(headof(name) === :NONSTDIDENTIFIER && length(name.args) == 2 && valof(name.args[2]) isa String && !isempty(valof(name.args[2])))
(headof(name) === :NONSTDIDENTIFIER && length(name.args) == 2 && valof(name.args[2]) isa String && !isempty(valof(name.args[2]))) ||
is_callable_object_binding(name)
end
function get_name_of_binding(name::EXPR)
if headof(name) === :IDENTIFIER
Expand All @@ -312,6 +316,8 @@ function get_name_of_binding(name::EXPR)
string(to_codeobject(name))
elseif headof(name) === :NONSTDIDENTIFIER
valof(name.args[2])
elseif is_callable_object_binding(name)
"::" * valof(name.args[end])
else
""
end
Expand Down