Skip to content

Commit da8b911

Browse files
authored
Upgrade Ruby LSP requirement and fix breaking changes (#177)
* Bump ruby-lsp requirement * Fix breaking changes
1 parent badda27 commit da8b911

File tree

8 files changed

+24767
-800
lines changed

8 files changed

+24767
-800
lines changed

Gemfile.lock

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ PATH
104104
specs:
105105
ruby-lsp-rails (0.2.6)
106106
rails (>= 6.0)
107-
ruby-lsp (>= 0.11.0, < 0.12.0)
107+
ruby-lsp (>= 0.12.0, < 0.13.0)
108108
sorbet-runtime (>= 0.5.9897)
109109

110110
GEM
@@ -168,6 +168,7 @@ GEM
168168
ast (~> 2.4.1)
169169
racc
170170
prettier_print (1.2.1)
171+
prism (0.15.1)
171172
psych (5.1.1.1)
172173
stringio
173174
puma (6.4.0)
@@ -221,10 +222,10 @@ GEM
221222
rubocop (~> 1.51)
222223
rubocop-sorbet (0.7.4)
223224
rubocop (>= 0.90.0)
224-
ruby-lsp (0.11.2)
225+
ruby-lsp (0.12.0)
225226
language_server-protocol (~> 3.17.0)
227+
prism (>= 0.15.1, < 0.16)
226228
sorbet-runtime (>= 0.5.5685)
227-
yarp (>= 0.12, < 0.13)
228229
ruby-progressbar (1.13.0)
229230
ruby2_keywords (0.0.5)
230231
sorbet (0.5.11074)

lib/ruby_lsp/ruby_lsp_rails/addon.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,24 +29,24 @@ def deactivate; end
2929
sig do
3030
override.params(
3131
uri: URI::Generic,
32-
emitter: EventEmitter,
32+
dispatcher: Prism::Dispatcher,
3333
message_queue: Thread::Queue,
3434
).returns(T.nilable(Listener[T::Array[Interface::CodeLens]]))
3535
end
36-
def create_code_lens_listener(uri, emitter, message_queue)
37-
CodeLens.new(uri, emitter, message_queue)
36+
def create_code_lens_listener(uri, dispatcher, message_queue)
37+
CodeLens.new(uri, dispatcher, message_queue)
3838
end
3939

4040
sig do
4141
override.params(
4242
nesting: T::Array[String],
4343
index: RubyIndexer::Index,
44-
emitter: EventEmitter,
44+
dispatcher: Prism::Dispatcher,
4545
message_queue: Thread::Queue,
4646
).returns(T.nilable(Listener[T.nilable(Interface::Hover)]))
4747
end
48-
def create_hover_listener(nesting, index, emitter, message_queue)
49-
Hover.new(client, nesting, index, emitter, message_queue)
48+
def create_hover_listener(nesting, index, dispatcher, message_queue)
49+
Hover.new(client, nesting, index, dispatcher, message_queue)
5050
end
5151

5252
sig { override.returns(String) }

lib/ruby_lsp/ruby_lsp_rails/code_lens.rb

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,17 +42,17 @@ class CodeLens < ::RubyLsp::Listener
4242
sig { override.returns(ResponseType) }
4343
attr_reader :_response
4444

45-
sig { params(uri: URI::Generic, emitter: EventEmitter, message_queue: Thread::Queue).void }
46-
def initialize(uri, emitter, message_queue)
45+
sig { params(uri: URI::Generic, dispatcher: Prism::Dispatcher, message_queue: Thread::Queue).void }
46+
def initialize(uri, dispatcher, message_queue)
4747
@_response = T.let([], ResponseType)
4848
@path = T.let(uri.to_standardized_path, T.nilable(String))
49-
emitter.register(self, :on_call, :on_class, :on_def)
49+
dispatcher.register(self, :on_call_node_enter, :on_class_node_enter, :on_def_node_enter)
5050

51-
super(emitter, message_queue)
51+
super(dispatcher, message_queue)
5252
end
5353

54-
sig { params(node: YARP::CallNode).void }
55-
def on_call(node)
54+
sig { params(node: Prism::CallNode).void }
55+
def on_call_node_enter(node)
5656
message_value = node.message
5757
return unless message_value == "test"
5858

@@ -62,15 +62,15 @@ def on_call(node)
6262
first_argument = arguments.first
6363

6464
content = case first_argument
65-
when YARP::StringConcatNode
65+
when Prism::StringConcatNode
6666
left = first_argument.left
6767
right = first_argument.right
6868
# We only support two lines of concatenation on test names
69-
if left.is_a?(YARP::StringNode) &&
70-
right.is_a?(YARP::StringNode)
69+
if left.is_a?(Prism::StringNode) &&
70+
right.is_a?(Prism::StringNode)
7171
left.content + right.content
7272
end
73-
when YARP::StringNode
73+
when Prism::StringNode
7474
first_argument.content
7575
end
7676

@@ -82,8 +82,8 @@ def on_call(node)
8282
end
8383

8484
# Although uncommon, Rails tests can be written with the classic "def test_name" syntax.
85-
sig { params(node: YARP::DefNode).void }
86-
def on_def(node)
85+
sig { params(node: Prism::DefNode).void }
86+
def on_def_node_enter(node)
8787
method_name = node.name.to_s
8888
if method_name.start_with?("test_")
8989
line_number = node.location.start_line
@@ -92,8 +92,8 @@ def on_def(node)
9292
end
9393
end
9494

95-
sig { params(node: YARP::ClassNode).void }
96-
def on_class(node)
95+
sig { params(node: Prism::ClassNode).void }
96+
def on_class_node_enter(node)
9797
class_name = node.constant_path.slice
9898
if class_name.end_with?("Test")
9999
command = "#{BASE_COMMAND} #{@path}"
@@ -103,7 +103,7 @@ def on_class(node)
103103

104104
private
105105

106-
sig { params(node: YARP::Node, name: String, command: String, kind: Symbol).void }
106+
sig { params(node: Prism::Node, name: String, command: String, kind: Symbol).void }
107107
def add_test_code_lens(node, name:, command:, kind:)
108108
return unless @path
109109

lib/ruby_lsp/ruby_lsp_rails/hover.rb

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,22 @@ class Hover < ::RubyLsp::Listener
3030
client: RailsClient,
3131
nesting: T::Array[String],
3232
index: RubyIndexer::Index,
33-
emitter: RubyLsp::EventEmitter,
33+
dispatcher: Prism::Dispatcher,
3434
message_queue: Thread::Queue,
3535
).void
3636
end
37-
def initialize(client, nesting, index, emitter, message_queue)
38-
super(emitter, message_queue)
37+
def initialize(client, nesting, index, dispatcher, message_queue)
38+
super(dispatcher, message_queue)
3939

4040
@_response = T.let(nil, ResponseType)
4141
@client = client
4242
@nesting = nesting
4343
@index = index
44-
emitter.register(self, :on_constant_path, :on_constant_read, :on_call)
44+
dispatcher.register(self, :on_constant_path_node_enter, :on_constant_read_node_enter, :on_call_node_enter)
4545
end
4646

47-
sig { params(node: YARP::ConstantPathNode).void }
48-
def on_constant_path(node)
47+
sig { params(node: Prism::ConstantPathNode).void }
48+
def on_constant_path_node_enter(node)
4949
entries = @index.resolve(node.slice, @nesting)
5050
return unless entries
5151

@@ -62,8 +62,8 @@ def on_constant_path(node)
6262
@_response = RubyLsp::Interface::Hover.new(range: range_from_location(node.location), contents: contents)
6363
end
6464

65-
sig { params(node: YARP::ConstantReadNode).void }
66-
def on_constant_read(node)
65+
sig { params(node: Prism::ConstantReadNode).void }
66+
def on_constant_read_node_enter(node)
6767
entries = @index.resolve(node.name.to_s, @nesting)
6868
return unless entries
6969

@@ -74,8 +74,8 @@ def on_constant_read(node)
7474
@_response = RubyLsp::Interface::Hover.new(range: range_from_location(node.location), contents: contents)
7575
end
7676

77-
sig { params(node: YARP::CallNode).void }
78-
def on_call(node)
77+
sig { params(node: Prism::CallNode).void }
78+
def on_call_node_enter(node)
7979
message_value = node.message
8080
message_loc = node.message_loc
8181

@@ -98,7 +98,7 @@ def generate_column_content(name)
9898
content
9999
end
100100

101-
sig { params(name: String, location: YARP::Location).returns(T.nilable(Interface::Hover)) }
101+
sig { params(name: String, location: Prism::Location).returns(T.nilable(Interface::Hover)) }
102102
def generate_rails_document_link_hover(name, location)
103103
urls = Support::RailsDocumentClient.generate_rails_document_urls(name)
104104
return if urls.empty?

ruby-lsp-rails.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ Gem::Specification.new do |spec|
2222
end
2323

2424
spec.add_dependency("rails", ">= 6.0")
25-
spec.add_dependency("ruby-lsp", ">= 0.11.0", "< 0.12.0")
25+
spec.add_dependency("ruby-lsp", ">= 0.12.0", "< 0.13.0")
2626
spec.add_dependency("sorbet-runtime", ">= 0.5.9897")
2727
end

0 commit comments

Comments
 (0)