ruby-lsp 0.23.11 → 0.23.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/VERSION +1 -1
  4. data/exe/ruby-lsp-launcher +12 -11
  5. data/lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb +3 -5
  6. data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +52 -77
  7. data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +61 -144
  8. data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +8 -6
  9. data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +73 -182
  10. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +48 -181
  11. data/lib/ruby_indexer/lib/ruby_indexer/location.rb +4 -27
  12. data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +12 -14
  13. data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +21 -44
  14. data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +40 -58
  15. data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +9 -16
  16. data/lib/ruby_indexer/lib/ruby_indexer/visibility_scope.rb +5 -9
  17. data/lib/ruby_indexer/test/configuration_test.rb +32 -2
  18. data/lib/ruby_indexer/test/method_test.rb +2 -2
  19. data/lib/ruby_lsp/addon.rb +32 -67
  20. data/lib/ruby_lsp/base_server.rb +10 -10
  21. data/lib/ruby_lsp/client_capabilities.rb +4 -6
  22. data/lib/ruby_lsp/document.rb +21 -32
  23. data/lib/ruby_lsp/erb_document.rb +17 -27
  24. data/lib/ruby_lsp/global_state.rb +30 -32
  25. data/lib/ruby_lsp/internal.rb +2 -0
  26. data/lib/ruby_lsp/listeners/code_lens.rb +21 -39
  27. data/lib/ruby_lsp/listeners/completion.rb +34 -53
  28. data/lib/ruby_lsp/listeners/definition.rb +35 -49
  29. data/lib/ruby_lsp/listeners/document_highlight.rb +60 -69
  30. data/lib/ruby_lsp/listeners/document_link.rb +9 -19
  31. data/lib/ruby_lsp/listeners/document_symbol.rb +34 -48
  32. data/lib/ruby_lsp/listeners/folding_ranges.rb +31 -38
  33. data/lib/ruby_lsp/listeners/hover.rb +37 -47
  34. data/lib/ruby_lsp/listeners/inlay_hints.rb +3 -10
  35. data/lib/ruby_lsp/listeners/semantic_highlighting.rb +29 -35
  36. data/lib/ruby_lsp/listeners/signature_help.rb +4 -23
  37. data/lib/ruby_lsp/listeners/spec_style.rb +199 -0
  38. data/lib/ruby_lsp/listeners/test_style.rb +136 -30
  39. data/lib/ruby_lsp/node_context.rb +8 -35
  40. data/lib/ruby_lsp/rbs_document.rb +7 -5
  41. data/lib/ruby_lsp/requests/code_action_resolve.rb +10 -10
  42. data/lib/ruby_lsp/requests/code_actions.rb +5 -14
  43. data/lib/ruby_lsp/requests/code_lens.rb +4 -13
  44. data/lib/ruby_lsp/requests/completion.rb +4 -15
  45. data/lib/ruby_lsp/requests/completion_resolve.rb +4 -4
  46. data/lib/ruby_lsp/requests/definition.rb +4 -12
  47. data/lib/ruby_lsp/requests/diagnostics.rb +6 -9
  48. data/lib/ruby_lsp/requests/discover_tests.rb +15 -3
  49. data/lib/ruby_lsp/requests/document_highlight.rb +3 -11
  50. data/lib/ruby_lsp/requests/document_link.rb +4 -13
  51. data/lib/ruby_lsp/requests/document_symbol.rb +4 -7
  52. data/lib/ruby_lsp/requests/folding_ranges.rb +4 -7
  53. data/lib/ruby_lsp/requests/formatting.rb +4 -7
  54. data/lib/ruby_lsp/requests/go_to_relevant_file.rb +87 -0
  55. data/lib/ruby_lsp/requests/hover.rb +6 -16
  56. data/lib/ruby_lsp/requests/inlay_hints.rb +4 -13
  57. data/lib/ruby_lsp/requests/on_type_formatting.rb +17 -24
  58. data/lib/ruby_lsp/requests/prepare_rename.rb +3 -8
  59. data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +4 -13
  60. data/lib/ruby_lsp/requests/range_formatting.rb +3 -4
  61. data/lib/ruby_lsp/requests/references.rb +5 -35
  62. data/lib/ruby_lsp/requests/rename.rb +9 -35
  63. data/lib/ruby_lsp/requests/request.rb +5 -17
  64. data/lib/ruby_lsp/requests/selection_ranges.rb +3 -3
  65. data/lib/ruby_lsp/requests/semantic_highlighting.rb +6 -23
  66. data/lib/ruby_lsp/requests/show_syntax_tree.rb +4 -5
  67. data/lib/ruby_lsp/requests/signature_help.rb +6 -24
  68. data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
  69. data/lib/ruby_lsp/requests/support/common.rb +12 -49
  70. data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +12 -14
  71. data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +7 -10
  72. data/lib/ruby_lsp/requests/support/rubocop_runner.rb +9 -15
  73. data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
  74. data/lib/ruby_lsp/requests/support/sorbet.rb +1 -7
  75. data/lib/ruby_lsp/requests/support/source_uri.rb +5 -16
  76. data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +7 -10
  77. data/lib/ruby_lsp/requests/support/test_item.rb +14 -13
  78. data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +4 -5
  79. data/lib/ruby_lsp/requests/workspace_symbol.rb +3 -3
  80. data/lib/ruby_lsp/response_builders/collection_response_builder.rb +4 -4
  81. data/lib/ruby_lsp/response_builders/document_symbol.rb +8 -11
  82. data/lib/ruby_lsp/response_builders/hover.rb +5 -5
  83. data/lib/ruby_lsp/response_builders/response_builder.rb +1 -1
  84. data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +18 -40
  85. data/lib/ruby_lsp/response_builders/signature_help.rb +4 -5
  86. data/lib/ruby_lsp/response_builders/test_collection.rb +5 -9
  87. data/lib/ruby_lsp/ruby_document.rb +15 -40
  88. data/lib/ruby_lsp/ruby_lsp_reporter_plugin.rb +106 -0
  89. data/lib/ruby_lsp/scope.rb +6 -10
  90. data/lib/ruby_lsp/server.rb +125 -74
  91. data/lib/ruby_lsp/setup_bundler.rb +22 -15
  92. data/lib/ruby_lsp/store.rb +12 -28
  93. data/lib/ruby_lsp/test_helper.rb +3 -12
  94. data/lib/ruby_lsp/test_reporter.rb +71 -0
  95. data/lib/ruby_lsp/test_unit_test_runner.rb +96 -0
  96. data/lib/ruby_lsp/type_inferrer.rb +9 -13
  97. data/lib/ruby_lsp/utils.rb +27 -65
  98. metadata +8 -3
@@ -4,7 +4,6 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class Hover
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
9
  ALLOWED_TARGETS = T.let(
@@ -49,16 +48,7 @@ module RubyLsp
49
48
  T::Array[String],
50
49
  )
51
50
 
52
- sig do
53
- params(
54
- response_builder: ResponseBuilders::Hover,
55
- global_state: GlobalState,
56
- uri: URI::Generic,
57
- node_context: NodeContext,
58
- dispatcher: Prism::Dispatcher,
59
- sorbet_level: RubyDocument::SorbetLevel,
60
- ).void
61
- end
51
+ #: (ResponseBuilders::Hover response_builder, GlobalState global_state, URI::Generic uri, NodeContext node_context, Prism::Dispatcher dispatcher, RubyDocument::SorbetLevel sorbet_level) -> void
62
52
  def initialize(response_builder, global_state, uri, node_context, dispatcher, sorbet_level) # rubocop:disable Metrics/ParameterLists
63
53
  @response_builder = response_builder
64
54
  @global_state = global_state
@@ -100,17 +90,17 @@ module RubyLsp
100
90
  )
101
91
  end
102
92
 
103
- sig { params(node: Prism::StringNode).void }
93
+ #: (Prism::StringNode node) -> void
104
94
  def on_string_node_enter(node)
105
95
  generate_heredoc_hover(node)
106
96
  end
107
97
 
108
- sig { params(node: Prism::InterpolatedStringNode).void }
98
+ #: (Prism::InterpolatedStringNode node) -> void
109
99
  def on_interpolated_string_node_enter(node)
110
100
  generate_heredoc_hover(node)
111
101
  end
112
102
 
113
- sig { params(node: Prism::ConstantReadNode).void }
103
+ #: (Prism::ConstantReadNode node) -> void
114
104
  def on_constant_read_node_enter(node)
115
105
  return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
116
106
 
@@ -120,14 +110,14 @@ module RubyLsp
120
110
  generate_hover(name, node.location)
121
111
  end
122
112
 
123
- sig { params(node: Prism::ConstantWriteNode).void }
113
+ #: (Prism::ConstantWriteNode node) -> void
124
114
  def on_constant_write_node_enter(node)
125
115
  return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
126
116
 
127
117
  generate_hover(node.name.to_s, node.name_loc)
128
118
  end
129
119
 
130
- sig { params(node: Prism::ConstantPathNode).void }
120
+ #: (Prism::ConstantPathNode node) -> void
131
121
  def on_constant_path_node_enter(node)
132
122
  return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
133
123
 
@@ -137,7 +127,7 @@ module RubyLsp
137
127
  generate_hover(name, node.location)
138
128
  end
139
129
 
140
- sig { params(node: Prism::CallNode).void }
130
+ #: (Prism::CallNode node) -> void
141
131
  def on_call_node_enter(node)
142
132
  if @path && File.basename(@path) == GEMFILE_NAME && node.name == :gem
143
133
  generate_gem_hover(node)
@@ -152,114 +142,114 @@ module RubyLsp
152
142
  handle_method_hover(message)
153
143
  end
154
144
 
155
- sig { params(node: Prism::GlobalVariableAndWriteNode).void }
145
+ #: (Prism::GlobalVariableAndWriteNode node) -> void
156
146
  def on_global_variable_and_write_node_enter(node)
157
147
  handle_global_variable_hover(node.name.to_s)
158
148
  end
159
149
 
160
- sig { params(node: Prism::GlobalVariableOperatorWriteNode).void }
150
+ #: (Prism::GlobalVariableOperatorWriteNode node) -> void
161
151
  def on_global_variable_operator_write_node_enter(node)
162
152
  handle_global_variable_hover(node.name.to_s)
163
153
  end
164
154
 
165
- sig { params(node: Prism::GlobalVariableOrWriteNode).void }
155
+ #: (Prism::GlobalVariableOrWriteNode node) -> void
166
156
  def on_global_variable_or_write_node_enter(node)
167
157
  handle_global_variable_hover(node.name.to_s)
168
158
  end
169
159
 
170
- sig { params(node: Prism::GlobalVariableReadNode).void }
160
+ #: (Prism::GlobalVariableReadNode node) -> void
171
161
  def on_global_variable_read_node_enter(node)
172
162
  handle_global_variable_hover(node.name.to_s)
173
163
  end
174
164
 
175
- sig { params(node: Prism::GlobalVariableTargetNode).void }
165
+ #: (Prism::GlobalVariableTargetNode node) -> void
176
166
  def on_global_variable_target_node_enter(node)
177
167
  handle_global_variable_hover(node.name.to_s)
178
168
  end
179
169
 
180
- sig { params(node: Prism::GlobalVariableWriteNode).void }
170
+ #: (Prism::GlobalVariableWriteNode node) -> void
181
171
  def on_global_variable_write_node_enter(node)
182
172
  handle_global_variable_hover(node.name.to_s)
183
173
  end
184
174
 
185
- sig { params(node: Prism::InstanceVariableReadNode).void }
175
+ #: (Prism::InstanceVariableReadNode node) -> void
186
176
  def on_instance_variable_read_node_enter(node)
187
177
  handle_instance_variable_hover(node.name.to_s)
188
178
  end
189
179
 
190
- sig { params(node: Prism::InstanceVariableWriteNode).void }
180
+ #: (Prism::InstanceVariableWriteNode node) -> void
191
181
  def on_instance_variable_write_node_enter(node)
192
182
  handle_instance_variable_hover(node.name.to_s)
193
183
  end
194
184
 
195
- sig { params(node: Prism::InstanceVariableAndWriteNode).void }
185
+ #: (Prism::InstanceVariableAndWriteNode node) -> void
196
186
  def on_instance_variable_and_write_node_enter(node)
197
187
  handle_instance_variable_hover(node.name.to_s)
198
188
  end
199
189
 
200
- sig { params(node: Prism::InstanceVariableOperatorWriteNode).void }
190
+ #: (Prism::InstanceVariableOperatorWriteNode node) -> void
201
191
  def on_instance_variable_operator_write_node_enter(node)
202
192
  handle_instance_variable_hover(node.name.to_s)
203
193
  end
204
194
 
205
- sig { params(node: Prism::InstanceVariableOrWriteNode).void }
195
+ #: (Prism::InstanceVariableOrWriteNode node) -> void
206
196
  def on_instance_variable_or_write_node_enter(node)
207
197
  handle_instance_variable_hover(node.name.to_s)
208
198
  end
209
199
 
210
- sig { params(node: Prism::InstanceVariableTargetNode).void }
200
+ #: (Prism::InstanceVariableTargetNode node) -> void
211
201
  def on_instance_variable_target_node_enter(node)
212
202
  handle_instance_variable_hover(node.name.to_s)
213
203
  end
214
204
 
215
- sig { params(node: Prism::SuperNode).void }
205
+ #: (Prism::SuperNode node) -> void
216
206
  def on_super_node_enter(node)
217
207
  handle_super_node_hover
218
208
  end
219
209
 
220
- sig { params(node: Prism::ForwardingSuperNode).void }
210
+ #: (Prism::ForwardingSuperNode node) -> void
221
211
  def on_forwarding_super_node_enter(node)
222
212
  handle_super_node_hover
223
213
  end
224
214
 
225
- sig { params(node: Prism::YieldNode).void }
215
+ #: (Prism::YieldNode node) -> void
226
216
  def on_yield_node_enter(node)
227
217
  handle_keyword_documentation(node.keyword)
228
218
  end
229
219
 
230
- sig { params(node: Prism::ClassVariableAndWriteNode).void }
220
+ #: (Prism::ClassVariableAndWriteNode node) -> void
231
221
  def on_class_variable_and_write_node_enter(node)
232
222
  handle_class_variable_hover(node.name.to_s)
233
223
  end
234
224
 
235
- sig { params(node: Prism::ClassVariableOperatorWriteNode).void }
225
+ #: (Prism::ClassVariableOperatorWriteNode node) -> void
236
226
  def on_class_variable_operator_write_node_enter(node)
237
227
  handle_class_variable_hover(node.name.to_s)
238
228
  end
239
229
 
240
- sig { params(node: Prism::ClassVariableOrWriteNode).void }
230
+ #: (Prism::ClassVariableOrWriteNode node) -> void
241
231
  def on_class_variable_or_write_node_enter(node)
242
232
  handle_class_variable_hover(node.name.to_s)
243
233
  end
244
234
 
245
- sig { params(node: Prism::ClassVariableTargetNode).void }
235
+ #: (Prism::ClassVariableTargetNode node) -> void
246
236
  def on_class_variable_target_node_enter(node)
247
237
  handle_class_variable_hover(node.name.to_s)
248
238
  end
249
239
 
250
- sig { params(node: Prism::ClassVariableReadNode).void }
240
+ #: (Prism::ClassVariableReadNode node) -> void
251
241
  def on_class_variable_read_node_enter(node)
252
242
  handle_class_variable_hover(node.name.to_s)
253
243
  end
254
244
 
255
- sig { params(node: Prism::ClassVariableWriteNode).void }
245
+ #: (Prism::ClassVariableWriteNode node) -> void
256
246
  def on_class_variable_write_node_enter(node)
257
247
  handle_class_variable_hover(node.name.to_s)
258
248
  end
259
249
 
260
250
  private
261
251
 
262
- sig { params(node: T.any(Prism::InterpolatedStringNode, Prism::StringNode)).void }
252
+ #: ((Prism::InterpolatedStringNode | Prism::StringNode) node) -> void
263
253
  def generate_heredoc_hover(node)
264
254
  return unless node.heredoc?
265
255
 
@@ -284,7 +274,7 @@ module RubyLsp
284
274
  end
285
275
  end
286
276
 
287
- sig { params(keyword: String).void }
277
+ #: (String keyword) -> void
288
278
  def handle_keyword_documentation(keyword)
289
279
  content = KEYWORD_DOCS[keyword]
290
280
  return unless content
@@ -296,7 +286,7 @@ module RubyLsp
296
286
  @response_builder.push(content, category: :documentation)
297
287
  end
298
288
 
299
- sig { void }
289
+ #: -> void
300
290
  def handle_super_node_hover
301
291
  # Sorbet can handle super hover on typed true or higher
302
292
  return if sorbet_level_true_or_higher?(@sorbet_level)
@@ -307,7 +297,7 @@ module RubyLsp
307
297
  handle_method_hover(surrounding_method, inherited_only: true)
308
298
  end
309
299
 
310
- sig { params(message: String, inherited_only: T::Boolean).void }
300
+ #: (String message, ?inherited_only: bool) -> void
311
301
  def handle_method_hover(message, inherited_only: false)
312
302
  type = @type_inferrer.infer_receiver_type(@node_context)
313
303
  return unless type
@@ -330,7 +320,7 @@ module RubyLsp
330
320
  end
331
321
  end
332
322
 
333
- sig { params(name: String).void }
323
+ #: (String name) -> void
334
324
  def handle_instance_variable_hover(name)
335
325
  # Sorbet enforces that all instance variables be declared on typed strict or higher, which means it will be able
336
326
  # to provide all features for them
@@ -349,7 +339,7 @@ module RubyLsp
349
339
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
350
340
  end
351
341
 
352
- sig { params(name: String).void }
342
+ #: (String name) -> void
353
343
  def handle_global_variable_hover(name)
354
344
  entries = @index[name]
355
345
  return unless entries
@@ -359,7 +349,7 @@ module RubyLsp
359
349
  end
360
350
  end
361
351
 
362
- sig { params(name: String).void }
352
+ #: (String name) -> void
363
353
  def handle_class_variable_hover(name)
364
354
  type = @type_inferrer.infer_receiver_type(@node_context)
365
355
  return unless type
@@ -374,7 +364,7 @@ module RubyLsp
374
364
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
375
365
  end
376
366
 
377
- sig { params(name: String, location: Prism::Location).void }
367
+ #: (String name, Prism::Location location) -> void
378
368
  def generate_hover(name, location)
379
369
  entries = @index.resolve(name, @node_context.nesting)
380
370
  return unless entries
@@ -389,7 +379,7 @@ module RubyLsp
389
379
  end
390
380
  end
391
381
 
392
- sig { params(node: Prism::CallNode).void }
382
+ #: (Prism::CallNode node) -> void
393
383
  def generate_gem_hover(node)
394
384
  first_argument = node.arguments&.arguments&.first
395
385
  return unless first_argument.is_a?(Prism::StringNode)
@@ -4,18 +4,11 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class InlayHints
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
9
  RESCUE_STRING_LENGTH = T.let("rescue".length, Integer)
11
10
 
12
- sig do
13
- params(
14
- response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::InlayHint],
15
- hints_configuration: RequestConfig,
16
- dispatcher: Prism::Dispatcher,
17
- ).void
18
- end
11
+ #: (ResponseBuilders::CollectionResponseBuilder[Interface::InlayHint] response_builder, RequestConfig hints_configuration, Prism::Dispatcher dispatcher) -> void
19
12
  def initialize(response_builder, hints_configuration, dispatcher)
20
13
  @response_builder = response_builder
21
14
  @hints_configuration = hints_configuration
@@ -23,7 +16,7 @@ module RubyLsp
23
16
  dispatcher.register(self, :on_rescue_node_enter, :on_implicit_node_enter)
24
17
  end
25
18
 
26
- sig { params(node: Prism::RescueNode).void }
19
+ #: (Prism::RescueNode node) -> void
27
20
  def on_rescue_node_enter(node)
28
21
  return unless @hints_configuration.enabled?(:implicitRescue)
29
22
  return unless node.exceptions.empty?
@@ -38,7 +31,7 @@ module RubyLsp
38
31
  )
39
32
  end
40
33
 
41
- sig { params(node: Prism::ImplicitNode).void }
34
+ #: (Prism::ImplicitNode node) -> void
42
35
  def on_implicit_node_enter(node)
43
36
  return unless @hints_configuration.enabled?(:implicitHashValue)
44
37
 
@@ -5,7 +5,6 @@ module RubyLsp
5
5
  module Listeners
6
6
  class SemanticHighlighting
7
7
  include Requests::Support::Common
8
- extend T::Sig
9
8
 
10
9
  SPECIAL_RUBY_METHODS = T.let(
11
10
  [
@@ -18,12 +17,7 @@ module RubyLsp
18
17
  T::Array[String],
19
18
  )
20
19
 
21
- sig do
22
- params(
23
- dispatcher: Prism::Dispatcher,
24
- response_builder: ResponseBuilders::SemanticHighlighting,
25
- ).void
26
- end
20
+ #: (Prism::Dispatcher dispatcher, ResponseBuilders::SemanticHighlighting response_builder) -> void
27
21
  def initialize(dispatcher, response_builder)
28
22
  @response_builder = response_builder
29
23
  @special_methods = T.let(nil, T.nilable(T::Array[String]))
@@ -62,7 +56,7 @@ module RubyLsp
62
56
  )
63
57
  end
64
58
 
65
- sig { params(node: Prism::CallNode).void }
59
+ #: (Prism::CallNode node) -> void
66
60
  def on_call_node_enter(node)
67
61
  return if @inside_implicit_node
68
62
 
@@ -85,7 +79,7 @@ module RubyLsp
85
79
  end
86
80
  end
87
81
 
88
- sig { params(node: Prism::MatchWriteNode).void }
82
+ #: (Prism::MatchWriteNode node) -> void
89
83
  def on_match_write_node_enter(node)
90
84
  call = node.call
91
85
 
@@ -95,86 +89,86 @@ module RubyLsp
95
89
  end
96
90
  end
97
91
 
98
- sig { params(node: Prism::MatchWriteNode).void }
92
+ #: (Prism::MatchWriteNode node) -> void
99
93
  def on_match_write_node_leave(node)
100
94
  @inside_regex_capture = true if node.call.message == "=~"
101
95
  end
102
96
 
103
- sig { params(node: Prism::DefNode).void }
97
+ #: (Prism::DefNode node) -> void
104
98
  def on_def_node_enter(node)
105
99
  @current_scope = Scope.new(@current_scope)
106
100
  end
107
101
 
108
- sig { params(node: Prism::DefNode).void }
102
+ #: (Prism::DefNode node) -> void
109
103
  def on_def_node_leave(node)
110
104
  @current_scope = T.must(@current_scope.parent)
111
105
  end
112
106
 
113
- sig { params(node: Prism::BlockNode).void }
107
+ #: (Prism::BlockNode node) -> void
114
108
  def on_block_node_enter(node)
115
109
  @current_scope = Scope.new(@current_scope)
116
110
  end
117
111
 
118
- sig { params(node: Prism::BlockNode).void }
112
+ #: (Prism::BlockNode node) -> void
119
113
  def on_block_node_leave(node)
120
114
  @current_scope = T.must(@current_scope.parent)
121
115
  end
122
116
 
123
- sig { params(node: Prism::BlockLocalVariableNode).void }
117
+ #: (Prism::BlockLocalVariableNode node) -> void
124
118
  def on_block_local_variable_node_enter(node)
125
119
  @response_builder.add_token(node.location, :variable)
126
120
  end
127
121
 
128
- sig { params(node: Prism::BlockParameterNode).void }
122
+ #: (Prism::BlockParameterNode node) -> void
129
123
  def on_block_parameter_node_enter(node)
130
124
  name = node.name
131
125
  @current_scope.add(name.to_sym, :parameter) if name
132
126
  end
133
127
 
134
- sig { params(node: Prism::RequiredKeywordParameterNode).void }
128
+ #: (Prism::RequiredKeywordParameterNode node) -> void
135
129
  def on_required_keyword_parameter_node_enter(node)
136
130
  @current_scope.add(node.name, :parameter)
137
131
  end
138
132
 
139
- sig { params(node: Prism::OptionalKeywordParameterNode).void }
133
+ #: (Prism::OptionalKeywordParameterNode node) -> void
140
134
  def on_optional_keyword_parameter_node_enter(node)
141
135
  @current_scope.add(node.name, :parameter)
142
136
  end
143
137
 
144
- sig { params(node: Prism::KeywordRestParameterNode).void }
138
+ #: (Prism::KeywordRestParameterNode node) -> void
145
139
  def on_keyword_rest_parameter_node_enter(node)
146
140
  name = node.name
147
141
  @current_scope.add(name.to_sym, :parameter) if name
148
142
  end
149
143
 
150
- sig { params(node: Prism::OptionalParameterNode).void }
144
+ #: (Prism::OptionalParameterNode node) -> void
151
145
  def on_optional_parameter_node_enter(node)
152
146
  @current_scope.add(node.name, :parameter)
153
147
  end
154
148
 
155
- sig { params(node: Prism::RequiredParameterNode).void }
149
+ #: (Prism::RequiredParameterNode node) -> void
156
150
  def on_required_parameter_node_enter(node)
157
151
  @current_scope.add(node.name, :parameter)
158
152
  end
159
153
 
160
- sig { params(node: Prism::RestParameterNode).void }
154
+ #: (Prism::RestParameterNode node) -> void
161
155
  def on_rest_parameter_node_enter(node)
162
156
  name = node.name
163
157
  @current_scope.add(name.to_sym, :parameter) if name
164
158
  end
165
159
 
166
- sig { params(node: Prism::SelfNode).void }
160
+ #: (Prism::SelfNode node) -> void
167
161
  def on_self_node_enter(node)
168
162
  @response_builder.add_token(node.location, :variable, [:default_library])
169
163
  end
170
164
 
171
- sig { params(node: Prism::LocalVariableWriteNode).void }
165
+ #: (Prism::LocalVariableWriteNode node) -> void
172
166
  def on_local_variable_write_node_enter(node)
173
167
  local = @current_scope.lookup(node.name)
174
168
  @response_builder.add_token(node.name_loc, :parameter) if local&.type == :parameter
175
169
  end
176
170
 
177
- sig { params(node: Prism::LocalVariableReadNode).void }
171
+ #: (Prism::LocalVariableReadNode node) -> void
178
172
  def on_local_variable_read_node_enter(node)
179
173
  return if @inside_implicit_node
180
174
 
@@ -188,25 +182,25 @@ module RubyLsp
188
182
  @response_builder.add_token(node.location, local&.type || :variable)
189
183
  end
190
184
 
191
- sig { params(node: Prism::LocalVariableAndWriteNode).void }
185
+ #: (Prism::LocalVariableAndWriteNode node) -> void
192
186
  def on_local_variable_and_write_node_enter(node)
193
187
  local = @current_scope.lookup(node.name)
194
188
  @response_builder.add_token(node.name_loc, :parameter) if local&.type == :parameter
195
189
  end
196
190
 
197
- sig { params(node: Prism::LocalVariableOperatorWriteNode).void }
191
+ #: (Prism::LocalVariableOperatorWriteNode node) -> void
198
192
  def on_local_variable_operator_write_node_enter(node)
199
193
  local = @current_scope.lookup(node.name)
200
194
  @response_builder.add_token(node.name_loc, :parameter) if local&.type == :parameter
201
195
  end
202
196
 
203
- sig { params(node: Prism::LocalVariableOrWriteNode).void }
197
+ #: (Prism::LocalVariableOrWriteNode node) -> void
204
198
  def on_local_variable_or_write_node_enter(node)
205
199
  local = @current_scope.lookup(node.name)
206
200
  @response_builder.add_token(node.name_loc, :parameter) if local&.type == :parameter
207
201
  end
208
202
 
209
- sig { params(node: Prism::LocalVariableTargetNode).void }
203
+ #: (Prism::LocalVariableTargetNode node) -> void
210
204
  def on_local_variable_target_node_enter(node)
211
205
  # If we're inside a regex capture, Prism will add LocalVariableTarget nodes for each captured variable.
212
206
  # Unfortunately, if the regex contains a backslash, the location will be incorrect and we'll end up highlighting
@@ -218,7 +212,7 @@ module RubyLsp
218
212
  @response_builder.add_token(node.location, local&.type || :variable)
219
213
  end
220
214
 
221
- sig { params(node: Prism::ClassNode).void }
215
+ #: (Prism::ClassNode node) -> void
222
216
  def on_class_node_enter(node)
223
217
  constant_path = node.constant_path
224
218
 
@@ -257,7 +251,7 @@ module RubyLsp
257
251
  end
258
252
  end
259
253
 
260
- sig { params(node: Prism::ModuleNode).void }
254
+ #: (Prism::ModuleNode node) -> void
261
255
  def on_module_node_enter(node)
262
256
  constant_path = node.constant_path
263
257
 
@@ -278,12 +272,12 @@ module RubyLsp
278
272
  end
279
273
  end
280
274
 
281
- sig { params(node: Prism::ImplicitNode).void }
275
+ #: (Prism::ImplicitNode node) -> void
282
276
  def on_implicit_node_enter(node)
283
277
  @inside_implicit_node = true
284
278
  end
285
279
 
286
- sig { params(node: Prism::ImplicitNode).void }
280
+ #: (Prism::ImplicitNode node) -> void
287
281
  def on_implicit_node_leave(node)
288
282
  @inside_implicit_node = false
289
283
  end
@@ -292,12 +286,12 @@ module RubyLsp
292
286
 
293
287
  # Textmate provides highlighting for a subset of these special Ruby-specific methods. We want to utilize that
294
288
  # highlighting, so we avoid making a semantic token for it.
295
- sig { params(method_name: String).returns(T::Boolean) }
289
+ #: (String method_name) -> bool
296
290
  def special_method?(method_name)
297
291
  SPECIAL_RUBY_METHODS.include?(method_name)
298
292
  end
299
293
 
300
- sig { params(node: Prism::CallNode).void }
294
+ #: (Prism::CallNode node) -> void
301
295
  def process_regexp_locals(node)
302
296
  receiver = node.receiver
303
297
 
@@ -4,18 +4,9 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class SignatureHelp
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
- sig do
11
- params(
12
- response_builder: ResponseBuilders::SignatureHelp,
13
- global_state: GlobalState,
14
- node_context: NodeContext,
15
- dispatcher: Prism::Dispatcher,
16
- sorbet_level: RubyDocument::SorbetLevel,
17
- ).void
18
- end
9
+ #: (ResponseBuilders::SignatureHelp response_builder, GlobalState global_state, NodeContext node_context, Prism::Dispatcher dispatcher, RubyDocument::SorbetLevel sorbet_level) -> void
19
10
  def initialize(response_builder, global_state, node_context, dispatcher, sorbet_level)
20
11
  @sorbet_level = sorbet_level
21
12
  @response_builder = response_builder
@@ -26,7 +17,7 @@ module RubyLsp
26
17
  dispatcher.register(self, :on_call_node_enter)
27
18
  end
28
19
 
29
- sig { params(node: Prism::CallNode).void }
20
+ #: (Prism::CallNode node) -> void
30
21
  def on_call_node_enter(node)
31
22
  return if sorbet_level_true_or_higher?(@sorbet_level)
32
23
 
@@ -67,9 +58,7 @@ module RubyLsp
67
58
 
68
59
  private
69
60
 
70
- sig do
71
- params(node: Prism::CallNode, signatures: T::Array[RubyIndexer::Entry::Signature]).returns([Integer, Integer])
72
- end
61
+ #: (Prism::CallNode node, Array[RubyIndexer::Entry::Signature] signatures) -> [Integer, Integer]
73
62
  def determine_active_signature_and_parameter(node, signatures)
74
63
  arguments_node = node.arguments
75
64
  arguments = arguments_node&.arguments || []
@@ -93,15 +82,7 @@ module RubyLsp
93
82
  [active_sig_index, active_parameter]
94
83
  end
95
84
 
96
- sig do
97
- params(
98
- signatures: T::Array[RubyIndexer::Entry::Signature],
99
- method_name: String,
100
- methods: T::Array[RubyIndexer::Entry],
101
- title: String,
102
- extra_links: T.nilable(String),
103
- ).returns(T::Array[Interface::SignatureInformation])
104
- end
85
+ #: (Array[RubyIndexer::Entry::Signature] signatures, String method_name, Array[RubyIndexer::Entry] methods, String title, String? extra_links) -> Array[Interface::SignatureInformation]
105
86
  def generate_signatures(signatures, method_name, methods, title, extra_links)
106
87
  signatures.map do |signature|
107
88
  Interface::SignatureInformation.new(