Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update index enhancement due to ruby-lsp changes #495

Merged
merged 2 commits into from
Oct 31, 2024
Merged
Show file tree
Hide file tree
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
4 changes: 2 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ PATH
remote: .
specs:
ruby-lsp-rails (0.3.21)
ruby-lsp (>= 0.20.0, < 0.21.0)
ruby-lsp (>= 0.21.0, < 0.22.0)

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -224,7 +224,7 @@ GEM
rubocop (~> 1.51)
rubocop-sorbet (0.8.3)
rubocop (>= 0.90.0)
ruby-lsp (0.20.0)
ruby-lsp (0.21.0)
language_server-protocol (~> 3.17.0)
prism (>= 1.2, < 2.0)
rbs (>= 3, < 4)
Expand Down
4 changes: 2 additions & 2 deletions lib/ruby_lsp/ruby_lsp_rails/addon.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def activate(global_state, outgoing_queue)
@outgoing_queue << Notification.window_log_message("Activating Ruby LSP Rails add-on v#{VERSION}")

register_additional_file_watchers(global_state: global_state, outgoing_queue: outgoing_queue)
@global_state.index.register_enhancement(IndexingEnhancement.new)
@global_state.index.register_enhancement(IndexingEnhancement.new(@global_state.index))
andyw8 marked this conversation as resolved.
Show resolved Hide resolved

# Start booting the real client in a background thread. Until this completes, the client will be a NullClient
@client_mutex.unlock
Expand Down Expand Up @@ -128,7 +128,7 @@ def workspace_did_change_watched_files(changes)

sig { params(global_state: GlobalState, outgoing_queue: Thread::Queue).void }
def register_additional_file_watchers(global_state:, outgoing_queue:)
return unless global_state.supports_watching_files
return unless global_state.client_capabilities.supports_watching_files

outgoing_queue << Request.new(
id: "ruby-lsp-rails-file-watcher",
Expand Down
22 changes: 9 additions & 13 deletions lib/ruby_lsp/ruby_lsp_rails/indexing_enhancement.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,11 @@

module RubyLsp
module Rails
class IndexingEnhancement
class IndexingEnhancement < RubyIndexer::Enhancement
extend T::Sig
include RubyIndexer::Enhancement

sig do
override.params(
index: RubyIndexer::Index,
owner: T.nilable(RubyIndexer::Entry::Namespace),
node: Prism::CallNode,
file_path: String,
Expand All @@ -19,24 +17,23 @@ class IndexingEnhancement
),
).void
end
def on_call_node(index, owner, node, file_path, code_units_cache)
def on_call_node_enter(owner, node, file_path, code_units_cache)
return unless owner

name = node.name

case name
when :extend
handle_concern_extend(index, owner, node)
handle_concern_extend(owner, node)
when :has_one, :has_many, :belongs_to, :has_and_belongs_to_many
handle_association(index, owner, node, file_path, code_units_cache)
handle_association(owner, node, file_path, code_units_cache)
end
end

private

sig do
params(
index: RubyIndexer::Index,
owner: RubyIndexer::Entry::Namespace,
node: Prism::CallNode,
file_path: String,
Expand All @@ -46,7 +43,7 @@ def on_call_node(index, owner, node, file_path, code_units_cache)
),
).void
end
def handle_association(index, owner, node, file_path, code_units_cache)
def handle_association(owner, node, file_path, code_units_cache)
arguments = node.arguments&.arguments
return unless arguments

Expand All @@ -64,7 +61,7 @@ def handle_association(index, owner, node, file_path, code_units_cache)
loc = RubyIndexer::Location.from_prism_location(name_arg.location, code_units_cache)

# Reader
index.add(RubyIndexer::Entry::Method.new(
@index.add(RubyIndexer::Entry::Method.new(
name,
file_path,
loc,
Expand All @@ -76,7 +73,7 @@ def handle_association(index, owner, node, file_path, code_units_cache)
))

# Writer
index.add(RubyIndexer::Entry::Method.new(
@index.add(RubyIndexer::Entry::Method.new(
"#{name}=",
file_path,
loc,
Expand All @@ -90,12 +87,11 @@ def handle_association(index, owner, node, file_path, code_units_cache)

sig do
params(
index: RubyIndexer::Index,
owner: RubyIndexer::Entry::Namespace,
node: Prism::CallNode,
).void
end
def handle_concern_extend(index, owner, node)
def handle_concern_extend(owner, node)
arguments = node.arguments&.arguments
return unless arguments

Expand All @@ -105,7 +101,7 @@ def handle_concern_extend(index, owner, node)
module_name = node.full_name
next unless module_name == "ActiveSupport::Concern"

index.register_included_hook(owner.name) do |index, base|
@index.register_included_hook(owner.name) do |index, base|
class_methods_name = "#{owner.name}::ClassMethods"

if index.indexed?(class_methods_name)
Expand Down
2 changes: 1 addition & 1 deletion ruby-lsp-rails.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -24,5 +24,5 @@ Gem::Specification.new do |spec|
Dir["lib/**/*", "LICENSE.txt", "Rakefile", "README.md"]
end

spec.add_dependency("ruby-lsp", ">= 0.20.0", "< 0.21.0")
spec.add_dependency("ruby-lsp", ">= 0.21.0", "< 0.22.0")
end
94 changes: 0 additions & 94 deletions sorbet/rbi/gems/[email protected]

This file was deleted.

Loading
Loading