# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 173defon_block_local_variable_node_enter(node)
@response_builder.add_token(node.location, :variable)
end
on_block_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 163defon_block_node_enter(node)
@current_scope = ParameterScope.new(@current_scope)
end
on_block_node_leave(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 168defon_block_node_leave(node)
@current_scope = T.must(@current_scope.parent)
end
on_block_parameter_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 178defon_block_parameter_node_enter(node)
name = node.name@current_scope<<name.to_symifnameend
on_call_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 74defon_call_node_enter(node)
returnif@inside_implicit_nodereturnunlessvisible?(node, @range)
message = node.messagereturnunlessmessage# We can't push a semantic token for [] and []= because the argument inside the brackets is a part of# the message_locreturnifmessage.start_with?("[") && (message.end_with?("]") ||message.end_with?("]="))
returnifmessage=="=~"returnifspecial_method?(message)
type = Requests::Support::Sorbet.annotation?(node) ?:type::method@response_builder.add_token(T.must(node.message_loc), type)
end
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 122defon_constant_and_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, :namespace)
end
on_constant_operator_write_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 129defon_constant_operator_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, :namespace)
end
on_constant_or_write_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 136defon_constant_or_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, :namespace)
end
on_constant_read_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 107defon_constant_read_node_enter(node)
returnif@inside_implicit_nodereturnunlessvisible?(node, @range)
@response_builder.add_token(node.location, :namespace)
end
on_constant_target_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 143defon_constant_target_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.location, :namespace)
end
on_constant_write_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 115defon_constant_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, :namespace)
end
on_def_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 150defon_def_node_enter(node)
@current_scope = ParameterScope.new(@current_scope)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, :method, [:declaration])
end
on_def_node_leave(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 158defon_def_node_leave(node)
@current_scope = T.must(@current_scope.parent)
end
on_implicit_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 319defon_implicit_node_enter(node)
returnunlessvisible?(node, @range)
@inside_implicit_node = trueend
on_implicit_node_leave(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 326defon_implicit_node_leave(node)
@inside_implicit_node = falseend
on_keyword_rest_parameter_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 202defon_keyword_rest_parameter_node_enter(node)
name = node.nameifname@current_scope<<name.to_sym@response_builder.add_token(T.must(node.name_loc), :parameter) ifvisible?(node, @range)
endend
on_local_variable_and_write_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 268defon_local_variable_and_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, @current_scope.type_for(node.name))
end
on_local_variable_operator_write_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 275defon_local_variable_operator_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, @current_scope.type_for(node.name))
end
on_local_variable_or_write_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 282defon_local_variable_or_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, @current_scope.type_for(node.name))
end
on_local_variable_read_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 254defon_local_variable_read_node_enter(node)
returnif@inside_implicit_nodereturnunlessvisible?(node, @range)
# Numbered parametersif/_\d+/.match?(node.name)
@response_builder.add_token(node.location, :parameter)
returnend@response_builder.add_token(node.location, @current_scope.type_for(node.name))
end
on_local_variable_target_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 289defon_local_variable_target_node_enter(node)
# If we're inside a regex capture, Prism will add LocalVariableTarget nodes for each captured variable.# Unfortunately, if the regex contains a backslash, the location will be incorrect and we'll end up highlighting# the entire regex as a local variable. We process these captures in process_regexp_locals instead and then# prevent pushing local variable target tokens. See https://github.com/ruby/prism/issues/1912returnif@inside_regex_capturereturnunlessvisible?(node, @range)
@response_builder.add_token(node.location, @current_scope.type_for(node.name))
end
on_local_variable_write_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 247defon_local_variable_write_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, @current_scope.type_for(node.name))
end
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 102defon_match_write_node_leave(node)
@inside_regex_capture = trueifnode.call.message=="=~"end
on_module_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 312defon_module_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.constant_path.location, :namespace, [:declaration])
end
on_optional_keyword_parameter_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 193defon_optional_keyword_parameter_node_enter(node)
@current_scope<<node.namereturnunlessvisible?(node, @range)
location = node.name_loc@response_builder.add_token(location.copy(length:location.length-1), :parameter)
end
on_optional_parameter_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 213defon_optional_parameter_node_enter(node)
@current_scope<<node.namereturnunlessvisible?(node, @range)
@response_builder.add_token(node.name_loc, :parameter)
end
on_required_keyword_parameter_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 184defon_required_keyword_parameter_node_enter(node)
@current_scope<<node.namereturnunlessvisible?(node, @range)
location = node.name_loc@response_builder.add_token(location.copy(length:location.length-1), :parameter)
end
on_required_parameter_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 221defon_required_parameter_node_enter(node)
@current_scope<<node.namereturnunlessvisible?(node, @range)
@response_builder.add_token(node.location, :parameter)
end
on_rest_parameter_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 229defon_rest_parameter_node_enter(node)
name = node.nameifname@current_scope<<name.to_sym@response_builder.add_token(T.must(node.name_loc), :parameter) ifvisible?(node, @range)
endend
on_self_node_enter(node)
# File lib/ruby_lsp/listeners/semantic_highlighting.rb, line 240defon_self_node_enter(node)
returnunlessvisible?(node, @range)
@response_builder.add_token(node.location, :variable, [:default_library])
end