ruby-lsp 0.23.10 → 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 (100) 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 +74 -183
  10. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +55 -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/classes_and_modules_test.rb +75 -0
  18. data/lib/ruby_indexer/test/configuration_test.rb +32 -2
  19. data/lib/ruby_indexer/test/index_test.rb +21 -0
  20. data/lib/ruby_indexer/test/method_test.rb +2 -2
  21. data/lib/ruby_lsp/addon.rb +32 -67
  22. data/lib/ruby_lsp/base_server.rb +12 -11
  23. data/lib/ruby_lsp/client_capabilities.rb +4 -6
  24. data/lib/ruby_lsp/document.rb +21 -32
  25. data/lib/ruby_lsp/erb_document.rb +17 -27
  26. data/lib/ruby_lsp/global_state.rb +30 -32
  27. data/lib/ruby_lsp/internal.rb +6 -0
  28. data/lib/ruby_lsp/listeners/code_lens.rb +21 -39
  29. data/lib/ruby_lsp/listeners/completion.rb +34 -53
  30. data/lib/ruby_lsp/listeners/definition.rb +35 -49
  31. data/lib/ruby_lsp/listeners/document_highlight.rb +60 -69
  32. data/lib/ruby_lsp/listeners/document_link.rb +9 -19
  33. data/lib/ruby_lsp/listeners/document_symbol.rb +34 -48
  34. data/lib/ruby_lsp/listeners/folding_ranges.rb +31 -38
  35. data/lib/ruby_lsp/listeners/hover.rb +37 -47
  36. data/lib/ruby_lsp/listeners/inlay_hints.rb +3 -10
  37. data/lib/ruby_lsp/listeners/semantic_highlighting.rb +29 -35
  38. data/lib/ruby_lsp/listeners/signature_help.rb +4 -23
  39. data/lib/ruby_lsp/listeners/spec_style.rb +199 -0
  40. data/lib/ruby_lsp/listeners/test_style.rb +270 -0
  41. data/lib/ruby_lsp/node_context.rb +8 -35
  42. data/lib/ruby_lsp/rbs_document.rb +7 -5
  43. data/lib/ruby_lsp/requests/code_action_resolve.rb +10 -10
  44. data/lib/ruby_lsp/requests/code_actions.rb +5 -14
  45. data/lib/ruby_lsp/requests/code_lens.rb +4 -13
  46. data/lib/ruby_lsp/requests/completion.rb +4 -15
  47. data/lib/ruby_lsp/requests/completion_resolve.rb +4 -4
  48. data/lib/ruby_lsp/requests/definition.rb +4 -12
  49. data/lib/ruby_lsp/requests/diagnostics.rb +6 -9
  50. data/lib/ruby_lsp/requests/discover_tests.rb +74 -0
  51. data/lib/ruby_lsp/requests/document_highlight.rb +3 -11
  52. data/lib/ruby_lsp/requests/document_link.rb +4 -13
  53. data/lib/ruby_lsp/requests/document_symbol.rb +4 -7
  54. data/lib/ruby_lsp/requests/folding_ranges.rb +4 -7
  55. data/lib/ruby_lsp/requests/formatting.rb +4 -7
  56. data/lib/ruby_lsp/requests/go_to_relevant_file.rb +87 -0
  57. data/lib/ruby_lsp/requests/hover.rb +6 -16
  58. data/lib/ruby_lsp/requests/inlay_hints.rb +4 -13
  59. data/lib/ruby_lsp/requests/on_type_formatting.rb +17 -24
  60. data/lib/ruby_lsp/requests/prepare_rename.rb +3 -8
  61. data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +4 -13
  62. data/lib/ruby_lsp/requests/range_formatting.rb +3 -4
  63. data/lib/ruby_lsp/requests/references.rb +5 -35
  64. data/lib/ruby_lsp/requests/rename.rb +9 -35
  65. data/lib/ruby_lsp/requests/request.rb +5 -17
  66. data/lib/ruby_lsp/requests/selection_ranges.rb +3 -3
  67. data/lib/ruby_lsp/requests/semantic_highlighting.rb +6 -23
  68. data/lib/ruby_lsp/requests/show_syntax_tree.rb +4 -5
  69. data/lib/ruby_lsp/requests/signature_help.rb +6 -24
  70. data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
  71. data/lib/ruby_lsp/requests/support/common.rb +12 -47
  72. data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +12 -14
  73. data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +7 -10
  74. data/lib/ruby_lsp/requests/support/rubocop_runner.rb +9 -15
  75. data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
  76. data/lib/ruby_lsp/requests/support/sorbet.rb +1 -7
  77. data/lib/ruby_lsp/requests/support/source_uri.rb +5 -16
  78. data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +7 -10
  79. data/lib/ruby_lsp/requests/support/test_item.rb +60 -0
  80. data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +4 -5
  81. data/lib/ruby_lsp/requests/workspace_symbol.rb +3 -3
  82. data/lib/ruby_lsp/response_builders/collection_response_builder.rb +4 -4
  83. data/lib/ruby_lsp/response_builders/document_symbol.rb +8 -11
  84. data/lib/ruby_lsp/response_builders/hover.rb +5 -5
  85. data/lib/ruby_lsp/response_builders/response_builder.rb +1 -1
  86. data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +18 -40
  87. data/lib/ruby_lsp/response_builders/signature_help.rb +4 -5
  88. data/lib/ruby_lsp/response_builders/test_collection.rb +34 -0
  89. data/lib/ruby_lsp/ruby_document.rb +15 -40
  90. data/lib/ruby_lsp/ruby_lsp_reporter_plugin.rb +106 -0
  91. data/lib/ruby_lsp/scope.rb +6 -10
  92. data/lib/ruby_lsp/server.rb +169 -72
  93. data/lib/ruby_lsp/setup_bundler.rb +25 -17
  94. data/lib/ruby_lsp/store.rb +12 -28
  95. data/lib/ruby_lsp/test_helper.rb +3 -12
  96. data/lib/ruby_lsp/test_reporter.rb +71 -0
  97. data/lib/ruby_lsp/test_unit_test_runner.rb +96 -0
  98. data/lib/ruby_lsp/type_inferrer.rb +9 -13
  99. data/lib/ruby_lsp/utils.rb +27 -65
  100. metadata +12 -3
@@ -4,7 +4,6 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class Completion
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
9
  KEYWORDS = [
@@ -51,17 +50,7 @@ module RubyLsp
51
50
  "__LINE__",
52
51
  ].freeze
53
52
 
54
- sig do
55
- params(
56
- response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::CompletionItem],
57
- global_state: GlobalState,
58
- node_context: NodeContext,
59
- sorbet_level: RubyDocument::SorbetLevel,
60
- dispatcher: Prism::Dispatcher,
61
- uri: URI::Generic,
62
- trigger_character: T.nilable(String),
63
- ).void
64
- end
53
+ #: (ResponseBuilders::CollectionResponseBuilder[Interface::CompletionItem] response_builder, GlobalState global_state, NodeContext node_context, RubyDocument::SorbetLevel sorbet_level, Prism::Dispatcher dispatcher, URI::Generic uri, String? trigger_character) -> void
65
54
  def initialize( # rubocop:disable Metrics/ParameterLists
66
55
  response_builder,
67
56
  global_state,
@@ -107,7 +96,7 @@ module RubyLsp
107
96
  end
108
97
 
109
98
  # Handle completion on regular constant references (e.g. `Bar`)
110
- sig { params(node: Prism::ConstantReadNode).void }
99
+ #: (Prism::ConstantReadNode node) -> void
111
100
  def on_constant_read_node_enter(node)
112
101
  # The only scenario where Sorbet doesn't provide constant completion is on ignored files. Even if the file has
113
102
  # no sigil, Sorbet will still provide completion for constants
@@ -131,7 +120,7 @@ module RubyLsp
131
120
  end
132
121
 
133
122
  # Handle completion on namespaced constant references (e.g. `Foo::Bar`)
134
- sig { params(node: Prism::ConstantPathNode).void }
123
+ #: (Prism::ConstantPathNode node) -> void
135
124
  def on_constant_path_node_enter(node)
136
125
  # The only scenario where Sorbet doesn't provide constant completion is on ignored files. Even if the file has
137
126
  # no sigil, Sorbet will still provide completion for constants
@@ -149,7 +138,7 @@ module RubyLsp
149
138
  constant_path_completion(name, range_from_location(node.location))
150
139
  end
151
140
 
152
- sig { params(node: Prism::CallNode).void }
141
+ #: (Prism::CallNode node) -> void
153
142
  def on_call_node_enter(node)
154
143
  # The only scenario where Sorbet doesn't provide constant completion is on ignored files. Even if the file has
155
144
  # no sigil, Sorbet will still provide completion for constants
@@ -193,99 +182,99 @@ module RubyLsp
193
182
  end
194
183
  end
195
184
 
196
- sig { params(node: Prism::GlobalVariableAndWriteNode).void }
185
+ #: (Prism::GlobalVariableAndWriteNode node) -> void
197
186
  def on_global_variable_and_write_node_enter(node)
198
187
  handle_global_variable_completion(node.name.to_s, node.name_loc)
199
188
  end
200
189
 
201
- sig { params(node: Prism::GlobalVariableOperatorWriteNode).void }
190
+ #: (Prism::GlobalVariableOperatorWriteNode node) -> void
202
191
  def on_global_variable_operator_write_node_enter(node)
203
192
  handle_global_variable_completion(node.name.to_s, node.name_loc)
204
193
  end
205
194
 
206
- sig { params(node: Prism::GlobalVariableOrWriteNode).void }
195
+ #: (Prism::GlobalVariableOrWriteNode node) -> void
207
196
  def on_global_variable_or_write_node_enter(node)
208
197
  handle_global_variable_completion(node.name.to_s, node.name_loc)
209
198
  end
210
199
 
211
- sig { params(node: Prism::GlobalVariableReadNode).void }
200
+ #: (Prism::GlobalVariableReadNode node) -> void
212
201
  def on_global_variable_read_node_enter(node)
213
202
  handle_global_variable_completion(node.name.to_s, node.location)
214
203
  end
215
204
 
216
- sig { params(node: Prism::GlobalVariableTargetNode).void }
205
+ #: (Prism::GlobalVariableTargetNode node) -> void
217
206
  def on_global_variable_target_node_enter(node)
218
207
  handle_global_variable_completion(node.name.to_s, node.location)
219
208
  end
220
209
 
221
- sig { params(node: Prism::GlobalVariableWriteNode).void }
210
+ #: (Prism::GlobalVariableWriteNode node) -> void
222
211
  def on_global_variable_write_node_enter(node)
223
212
  handle_global_variable_completion(node.name.to_s, node.name_loc)
224
213
  end
225
214
 
226
- sig { params(node: Prism::InstanceVariableReadNode).void }
215
+ #: (Prism::InstanceVariableReadNode node) -> void
227
216
  def on_instance_variable_read_node_enter(node)
228
217
  handle_instance_variable_completion(node.name.to_s, node.location)
229
218
  end
230
219
 
231
- sig { params(node: Prism::InstanceVariableWriteNode).void }
220
+ #: (Prism::InstanceVariableWriteNode node) -> void
232
221
  def on_instance_variable_write_node_enter(node)
233
222
  handle_instance_variable_completion(node.name.to_s, node.name_loc)
234
223
  end
235
224
 
236
- sig { params(node: Prism::InstanceVariableAndWriteNode).void }
225
+ #: (Prism::InstanceVariableAndWriteNode node) -> void
237
226
  def on_instance_variable_and_write_node_enter(node)
238
227
  handle_instance_variable_completion(node.name.to_s, node.name_loc)
239
228
  end
240
229
 
241
- sig { params(node: Prism::InstanceVariableOperatorWriteNode).void }
230
+ #: (Prism::InstanceVariableOperatorWriteNode node) -> void
242
231
  def on_instance_variable_operator_write_node_enter(node)
243
232
  handle_instance_variable_completion(node.name.to_s, node.name_loc)
244
233
  end
245
234
 
246
- sig { params(node: Prism::InstanceVariableOrWriteNode).void }
235
+ #: (Prism::InstanceVariableOrWriteNode node) -> void
247
236
  def on_instance_variable_or_write_node_enter(node)
248
237
  handle_instance_variable_completion(node.name.to_s, node.name_loc)
249
238
  end
250
239
 
251
- sig { params(node: Prism::InstanceVariableTargetNode).void }
240
+ #: (Prism::InstanceVariableTargetNode node) -> void
252
241
  def on_instance_variable_target_node_enter(node)
253
242
  handle_instance_variable_completion(node.name.to_s, node.location)
254
243
  end
255
244
 
256
- sig { params(node: Prism::ClassVariableAndWriteNode).void }
245
+ #: (Prism::ClassVariableAndWriteNode node) -> void
257
246
  def on_class_variable_and_write_node_enter(node)
258
247
  handle_class_variable_completion(node.name.to_s, node.name_loc)
259
248
  end
260
249
 
261
- sig { params(node: Prism::ClassVariableOperatorWriteNode).void }
250
+ #: (Prism::ClassVariableOperatorWriteNode node) -> void
262
251
  def on_class_variable_operator_write_node_enter(node)
263
252
  handle_class_variable_completion(node.name.to_s, node.name_loc)
264
253
  end
265
254
 
266
- sig { params(node: Prism::ClassVariableOrWriteNode).void }
255
+ #: (Prism::ClassVariableOrWriteNode node) -> void
267
256
  def on_class_variable_or_write_node_enter(node)
268
257
  handle_class_variable_completion(node.name.to_s, node.name_loc)
269
258
  end
270
259
 
271
- sig { params(node: Prism::ClassVariableTargetNode).void }
260
+ #: (Prism::ClassVariableTargetNode node) -> void
272
261
  def on_class_variable_target_node_enter(node)
273
262
  handle_class_variable_completion(node.name.to_s, node.location)
274
263
  end
275
264
 
276
- sig { params(node: Prism::ClassVariableReadNode).void }
265
+ #: (Prism::ClassVariableReadNode node) -> void
277
266
  def on_class_variable_read_node_enter(node)
278
267
  handle_class_variable_completion(node.name.to_s, node.location)
279
268
  end
280
269
 
281
- sig { params(node: Prism::ClassVariableWriteNode).void }
270
+ #: (Prism::ClassVariableWriteNode node) -> void
282
271
  def on_class_variable_write_node_enter(node)
283
272
  handle_class_variable_completion(node.name.to_s, node.name_loc)
284
273
  end
285
274
 
286
275
  private
287
276
 
288
- sig { params(name: String, range: Interface::Range).void }
277
+ #: (String name, Interface::Range range) -> void
289
278
  def constant_path_completion(name, range)
290
279
  top_level_reference = if name.start_with?("::")
291
280
  name = name.delete_prefix("::")
@@ -340,7 +329,7 @@ module RubyLsp
340
329
  end
341
330
  end
342
331
 
343
- sig { params(name: String, location: Prism::Location).void }
332
+ #: (String name, Prism::Location location) -> void
344
333
  def handle_global_variable_completion(name, location)
345
334
  candidates = @index.prefix_search(name)
346
335
 
@@ -363,7 +352,7 @@ module RubyLsp
363
352
  end
364
353
  end
365
354
 
366
- sig { params(name: String, location: Prism::Location).void }
355
+ #: (String name, Prism::Location location) -> void
367
356
  def handle_class_variable_completion(name, location)
368
357
  type = @type_inferrer.infer_receiver_type(@node_context)
369
358
  return unless type
@@ -394,7 +383,7 @@ module RubyLsp
394
383
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
395
384
  end
396
385
 
397
- sig { params(name: String, location: Prism::Location).void }
386
+ #: (String name, Prism::Location location) -> void
398
387
  def handle_instance_variable_completion(name, location)
399
388
  # Sorbet enforces that all instance variables be declared on typed strict or higher, which means it will be able
400
389
  # to provide all features for them
@@ -428,7 +417,7 @@ module RubyLsp
428
417
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
429
418
  end
430
419
 
431
- sig { params(node: Prism::CallNode).void }
420
+ #: (Prism::CallNode node) -> void
432
421
  def complete_require(node)
433
422
  arguments_node = node.arguments
434
423
  return unless arguments_node
@@ -444,7 +433,7 @@ module RubyLsp
444
433
  end
445
434
  end
446
435
 
447
- sig { params(node: Prism::CallNode).void }
436
+ #: (Prism::CallNode node) -> void
448
437
  def complete_require_relative(node)
449
438
  arguments_node = node.arguments
450
439
  return unless arguments_node
@@ -476,7 +465,7 @@ module RubyLsp
476
465
  # might fail with EPERM
477
466
  end
478
467
 
479
- sig { params(node: Prism::CallNode, name: String).void }
468
+ #: (Prism::CallNode node, String name) -> void
480
469
  def complete_methods(node, name)
481
470
  # If the node has a receiver, then we don't need to provide local nor keyword completions. Sorbet can provide
482
471
  # local and keyword completion for any file with a Sorbet level of true or higher
@@ -540,7 +529,7 @@ module RubyLsp
540
529
  # We have not indexed this namespace, so we can't provide any completions
541
530
  end
542
531
 
543
- sig { params(node: Prism::CallNode, name: String).void }
532
+ #: (Prism::CallNode node, String name) -> void
544
533
  def add_local_completions(node, name)
545
534
  range = range_from_location(T.must(node.message_loc))
546
535
 
@@ -560,7 +549,7 @@ module RubyLsp
560
549
  end
561
550
  end
562
551
 
563
- sig { params(node: Prism::CallNode, name: String).void }
552
+ #: (Prism::CallNode node, String name) -> void
564
553
  def add_keyword_completions(node, name)
565
554
  range = range_from_location(T.must(node.message_loc))
566
555
 
@@ -578,7 +567,7 @@ module RubyLsp
578
567
  end
579
568
  end
580
569
 
581
- sig { params(label: String, node: Prism::StringNode).returns(Interface::CompletionItem) }
570
+ #: (String label, Prism::StringNode node) -> Interface::CompletionItem
582
571
  def build_completion(label, node)
583
572
  # We should use the content location as we only replace the content and not the delimiters of the string
584
573
  loc = node.content_loc
@@ -593,15 +582,7 @@ module RubyLsp
593
582
  )
594
583
  end
595
584
 
596
- sig do
597
- params(
598
- real_name: String,
599
- incomplete_name: String,
600
- range: Interface::Range,
601
- entries: T::Array[RubyIndexer::Entry],
602
- top_level: T::Boolean,
603
- ).returns(Interface::CompletionItem)
604
- end
585
+ #: (String real_name, String incomplete_name, Interface::Range range, Array[RubyIndexer::Entry] entries, bool top_level) -> Interface::CompletionItem
605
586
  def build_entry_completion(real_name, incomplete_name, range, entries, top_level)
606
587
  first_entry = T.must(entries.first)
607
588
  kind = case first_entry
@@ -690,7 +671,7 @@ module RubyLsp
690
671
  # B
691
672
  # end
692
673
  # ```
693
- sig { params(entry_name: String).returns(T::Boolean) }
674
+ #: (String entry_name) -> bool
694
675
  def top_level?(entry_name)
695
676
  nesting = @node_context.nesting
696
677
  nesting.length.downto(0) do |i|
@@ -4,25 +4,11 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class Definition
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
9
  MAX_NUMBER_OF_DEFINITION_CANDIDATES_WITHOUT_RECEIVER = 10
11
10
 
12
- sig do
13
- params(
14
- response_builder: ResponseBuilders::CollectionResponseBuilder[T.any(
15
- Interface::Location,
16
- Interface::LocationLink,
17
- )],
18
- global_state: GlobalState,
19
- language_id: Document::LanguageId,
20
- uri: URI::Generic,
21
- node_context: NodeContext,
22
- dispatcher: Prism::Dispatcher,
23
- sorbet_level: RubyDocument::SorbetLevel,
24
- ).void
25
- end
11
+ #: (ResponseBuilders::CollectionResponseBuilder[(Interface::Location | Interface::LocationLink)] response_builder, GlobalState global_state, Document::LanguageId language_id, URI::Generic uri, NodeContext node_context, Prism::Dispatcher dispatcher, RubyDocument::SorbetLevel sorbet_level) -> void
26
12
  def initialize(response_builder, global_state, language_id, uri, node_context, dispatcher, sorbet_level) # rubocop:disable Metrics/ParameterLists
27
13
  @response_builder = response_builder
28
14
  @global_state = global_state
@@ -64,7 +50,7 @@ module RubyLsp
64
50
  )
65
51
  end
66
52
 
67
- sig { params(node: Prism::CallNode).void }
53
+ #: (Prism::CallNode node) -> void
68
54
  def on_call_node_enter(node)
69
55
  # Sorbet can handle go to definition for methods invoked on self on typed true or higher
70
56
  return if sorbet_level_true_or_higher?(@sorbet_level) && self_receiver?(node)
@@ -83,7 +69,7 @@ module RubyLsp
83
69
  handle_method_definition(message, inferrer_receiver_type)
84
70
  end
85
71
 
86
- sig { params(node: Prism::StringNode).void }
72
+ #: (Prism::StringNode node) -> void
87
73
  def on_string_node_enter(node)
88
74
  enclosing_call = @node_context.call_node
89
75
  return unless enclosing_call
@@ -94,7 +80,7 @@ module RubyLsp
94
80
  handle_require_definition(node, name)
95
81
  end
96
82
 
97
- sig { params(node: Prism::SymbolNode).void }
83
+ #: (Prism::SymbolNode node) -> void
98
84
  def on_symbol_node_enter(node)
99
85
  enclosing_call = @node_context.call_node
100
86
  return unless enclosing_call
@@ -105,7 +91,7 @@ module RubyLsp
105
91
  handle_autoload_definition(enclosing_call)
106
92
  end
107
93
 
108
- sig { params(node: Prism::BlockArgumentNode).void }
94
+ #: (Prism::BlockArgumentNode node) -> void
109
95
  def on_block_argument_node_enter(node)
110
96
  expression = node.expression
111
97
  return unless expression.is_a?(Prism::SymbolNode)
@@ -116,7 +102,7 @@ module RubyLsp
116
102
  handle_method_definition(value, nil)
117
103
  end
118
104
 
119
- sig { params(node: Prism::ConstantPathNode).void }
105
+ #: (Prism::ConstantPathNode node) -> void
120
106
  def on_constant_path_node_enter(node)
121
107
  name = RubyIndexer::Index.constant_name(node)
122
108
  return if name.nil?
@@ -124,7 +110,7 @@ module RubyLsp
124
110
  find_in_index(name)
125
111
  end
126
112
 
127
- sig { params(node: Prism::ConstantReadNode).void }
113
+ #: (Prism::ConstantReadNode node) -> void
128
114
  def on_constant_read_node_enter(node)
129
115
  name = RubyIndexer::Index.constant_name(node)
130
116
  return if name.nil?
@@ -132,109 +118,109 @@ module RubyLsp
132
118
  find_in_index(name)
133
119
  end
134
120
 
135
- sig { params(node: Prism::GlobalVariableAndWriteNode).void }
121
+ #: (Prism::GlobalVariableAndWriteNode node) -> void
136
122
  def on_global_variable_and_write_node_enter(node)
137
123
  handle_global_variable_definition(node.name.to_s)
138
124
  end
139
125
 
140
- sig { params(node: Prism::GlobalVariableOperatorWriteNode).void }
126
+ #: (Prism::GlobalVariableOperatorWriteNode node) -> void
141
127
  def on_global_variable_operator_write_node_enter(node)
142
128
  handle_global_variable_definition(node.name.to_s)
143
129
  end
144
130
 
145
- sig { params(node: Prism::GlobalVariableOrWriteNode).void }
131
+ #: (Prism::GlobalVariableOrWriteNode node) -> void
146
132
  def on_global_variable_or_write_node_enter(node)
147
133
  handle_global_variable_definition(node.name.to_s)
148
134
  end
149
135
 
150
- sig { params(node: Prism::GlobalVariableReadNode).void }
136
+ #: (Prism::GlobalVariableReadNode node) -> void
151
137
  def on_global_variable_read_node_enter(node)
152
138
  handle_global_variable_definition(node.name.to_s)
153
139
  end
154
140
 
155
- sig { params(node: Prism::GlobalVariableTargetNode).void }
141
+ #: (Prism::GlobalVariableTargetNode node) -> void
156
142
  def on_global_variable_target_node_enter(node)
157
143
  handle_global_variable_definition(node.name.to_s)
158
144
  end
159
145
 
160
- sig { params(node: Prism::GlobalVariableWriteNode).void }
146
+ #: (Prism::GlobalVariableWriteNode node) -> void
161
147
  def on_global_variable_write_node_enter(node)
162
148
  handle_global_variable_definition(node.name.to_s)
163
149
  end
164
150
 
165
- sig { params(node: Prism::InstanceVariableReadNode).void }
151
+ #: (Prism::InstanceVariableReadNode node) -> void
166
152
  def on_instance_variable_read_node_enter(node)
167
153
  handle_instance_variable_definition(node.name.to_s)
168
154
  end
169
155
 
170
- sig { params(node: Prism::InstanceVariableWriteNode).void }
156
+ #: (Prism::InstanceVariableWriteNode node) -> void
171
157
  def on_instance_variable_write_node_enter(node)
172
158
  handle_instance_variable_definition(node.name.to_s)
173
159
  end
174
160
 
175
- sig { params(node: Prism::InstanceVariableAndWriteNode).void }
161
+ #: (Prism::InstanceVariableAndWriteNode node) -> void
176
162
  def on_instance_variable_and_write_node_enter(node)
177
163
  handle_instance_variable_definition(node.name.to_s)
178
164
  end
179
165
 
180
- sig { params(node: Prism::InstanceVariableOperatorWriteNode).void }
166
+ #: (Prism::InstanceVariableOperatorWriteNode node) -> void
181
167
  def on_instance_variable_operator_write_node_enter(node)
182
168
  handle_instance_variable_definition(node.name.to_s)
183
169
  end
184
170
 
185
- sig { params(node: Prism::InstanceVariableOrWriteNode).void }
171
+ #: (Prism::InstanceVariableOrWriteNode node) -> void
186
172
  def on_instance_variable_or_write_node_enter(node)
187
173
  handle_instance_variable_definition(node.name.to_s)
188
174
  end
189
175
 
190
- sig { params(node: Prism::InstanceVariableTargetNode).void }
176
+ #: (Prism::InstanceVariableTargetNode node) -> void
191
177
  def on_instance_variable_target_node_enter(node)
192
178
  handle_instance_variable_definition(node.name.to_s)
193
179
  end
194
180
 
195
- sig { params(node: Prism::SuperNode).void }
181
+ #: (Prism::SuperNode node) -> void
196
182
  def on_super_node_enter(node)
197
183
  handle_super_node_definition
198
184
  end
199
185
 
200
- sig { params(node: Prism::ForwardingSuperNode).void }
186
+ #: (Prism::ForwardingSuperNode node) -> void
201
187
  def on_forwarding_super_node_enter(node)
202
188
  handle_super_node_definition
203
189
  end
204
190
 
205
- sig { params(node: Prism::ClassVariableAndWriteNode).void }
191
+ #: (Prism::ClassVariableAndWriteNode node) -> void
206
192
  def on_class_variable_and_write_node_enter(node)
207
193
  handle_class_variable_definition(node.name.to_s)
208
194
  end
209
195
 
210
- sig { params(node: Prism::ClassVariableOperatorWriteNode).void }
196
+ #: (Prism::ClassVariableOperatorWriteNode node) -> void
211
197
  def on_class_variable_operator_write_node_enter(node)
212
198
  handle_class_variable_definition(node.name.to_s)
213
199
  end
214
200
 
215
- sig { params(node: Prism::ClassVariableOrWriteNode).void }
201
+ #: (Prism::ClassVariableOrWriteNode node) -> void
216
202
  def on_class_variable_or_write_node_enter(node)
217
203
  handle_class_variable_definition(node.name.to_s)
218
204
  end
219
205
 
220
- sig { params(node: Prism::ClassVariableTargetNode).void }
206
+ #: (Prism::ClassVariableTargetNode node) -> void
221
207
  def on_class_variable_target_node_enter(node)
222
208
  handle_class_variable_definition(node.name.to_s)
223
209
  end
224
210
 
225
- sig { params(node: Prism::ClassVariableReadNode).void }
211
+ #: (Prism::ClassVariableReadNode node) -> void
226
212
  def on_class_variable_read_node_enter(node)
227
213
  handle_class_variable_definition(node.name.to_s)
228
214
  end
229
215
 
230
- sig { params(node: Prism::ClassVariableWriteNode).void }
216
+ #: (Prism::ClassVariableWriteNode node) -> void
231
217
  def on_class_variable_write_node_enter(node)
232
218
  handle_class_variable_definition(node.name.to_s)
233
219
  end
234
220
 
235
221
  private
236
222
 
237
- sig { void }
223
+ #: -> void
238
224
  def handle_super_node_definition
239
225
  # Sorbet can handle super hover on typed true or higher
240
226
  return if sorbet_level_true_or_higher?(@sorbet_level)
@@ -249,7 +235,7 @@ module RubyLsp
249
235
  )
250
236
  end
251
237
 
252
- sig { params(name: String).void }
238
+ #: (String name) -> void
253
239
  def handle_global_variable_definition(name)
254
240
  entries = @index[name]
255
241
 
@@ -268,7 +254,7 @@ module RubyLsp
268
254
  end
269
255
  end
270
256
 
271
- sig { params(name: String).void }
257
+ #: (String name) -> void
272
258
  def handle_class_variable_definition(name)
273
259
  type = @type_inferrer.infer_receiver_type(@node_context)
274
260
  return unless type
@@ -286,7 +272,7 @@ module RubyLsp
286
272
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
287
273
  end
288
274
 
289
- sig { params(name: String).void }
275
+ #: (String name) -> void
290
276
  def handle_instance_variable_definition(name)
291
277
  # Sorbet enforces that all instance variables be declared on typed strict or higher, which means it will be able
292
278
  # to provide all features for them
@@ -313,7 +299,7 @@ module RubyLsp
313
299
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
314
300
  end
315
301
 
316
- sig { params(message: String, receiver_type: T.nilable(TypeInferrer::Type), inherited_only: T::Boolean).void }
302
+ #: (String message, TypeInferrer::Type? receiver_type, ?inherited_only: bool) -> void
317
303
  def handle_method_definition(message, receiver_type, inherited_only: false)
318
304
  methods = if receiver_type
319
305
  @index.resolve_method(message, receiver_type.name, inherited_only: inherited_only)
@@ -341,7 +327,7 @@ module RubyLsp
341
327
  end
342
328
  end
343
329
 
344
- sig { params(node: Prism::StringNode, message: Symbol).void }
330
+ #: (Prism::StringNode node, Symbol message) -> void
345
331
  def handle_require_definition(node, message)
346
332
  case message
347
333
  when :require
@@ -378,7 +364,7 @@ module RubyLsp
378
364
  end
379
365
  end
380
366
 
381
- sig { params(node: Prism::CallNode).void }
367
+ #: (Prism::CallNode node) -> void
382
368
  def handle_autoload_definition(node)
383
369
  argument = node.arguments&.arguments&.first
384
370
  return unless argument.is_a?(Prism::SymbolNode)
@@ -389,7 +375,7 @@ module RubyLsp
389
375
  find_in_index(constant_name)
390
376
  end
391
377
 
392
- sig { params(value: String).void }
378
+ #: (String value) -> void
393
379
  def find_in_index(value)
394
380
  entries = @index.resolve(value, @node_context.nesting)
395
381
  return unless entries