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
@@ -3,23 +3,13 @@
3
3
 
4
4
  module RubyIndexer
5
5
  class DeclarationListener
6
- extend T::Sig
7
-
8
6
  OBJECT_NESTING = T.let(["Object"].freeze, T::Array[String])
9
7
  BASIC_OBJECT_NESTING = T.let(["BasicObject"].freeze, T::Array[String])
10
8
 
11
- sig { returns(T::Array[String]) }
9
+ #: Array[String]
12
10
  attr_reader :indexing_errors
13
11
 
14
- sig do
15
- params(
16
- index: Index,
17
- dispatcher: Prism::Dispatcher,
18
- parse_result: Prism::ParseResult,
19
- uri: URI::Generic,
20
- collect_comments: T::Boolean,
21
- ).void
22
- end
12
+ #: (Index index, Prism::Dispatcher dispatcher, Prism::ParseResult parse_result, URI::Generic uri, ?collect_comments: bool) -> void
23
13
  def initialize(index, dispatcher, parse_result, uri, collect_comments: false)
24
14
  @index = index
25
15
  @uri = uri
@@ -87,7 +77,7 @@ module RubyIndexer
87
77
  )
88
78
  end
89
79
 
90
- sig { params(node: Prism::ClassNode).void }
80
+ #: (Prism::ClassNode node) -> void
91
81
  def on_class_node_enter(node)
92
82
  constant_path = node.constant_path
93
83
  superclass = node.superclass
@@ -119,23 +109,23 @@ module RubyIndexer
119
109
  )
120
110
  end
121
111
 
122
- sig { params(node: Prism::ClassNode).void }
112
+ #: (Prism::ClassNode node) -> void
123
113
  def on_class_node_leave(node)
124
114
  pop_namespace_stack
125
115
  end
126
116
 
127
- sig { params(node: Prism::ModuleNode).void }
117
+ #: (Prism::ModuleNode node) -> void
128
118
  def on_module_node_enter(node)
129
119
  constant_path = node.constant_path
130
120
  add_module(constant_path.slice, node.location, constant_path.location, comments: collect_comments(node))
131
121
  end
132
122
 
133
- sig { params(node: Prism::ModuleNode).void }
123
+ #: (Prism::ModuleNode node) -> void
134
124
  def on_module_node_leave(node)
135
125
  pop_namespace_stack
136
126
  end
137
127
 
138
- sig { params(node: Prism::SingletonClassNode).void }
128
+ #: (Prism::SingletonClassNode node) -> void
139
129
  def on_singleton_class_node_enter(node)
140
130
  @visibility_stack.push(VisibilityScope.public_scope)
141
131
 
@@ -172,12 +162,12 @@ module RubyIndexer
172
162
  end
173
163
  end
174
164
 
175
- sig { params(node: Prism::SingletonClassNode).void }
165
+ #: (Prism::SingletonClassNode node) -> void
176
166
  def on_singleton_class_node_leave(node)
177
167
  pop_namespace_stack
178
168
  end
179
169
 
180
- sig { params(node: Prism::MultiWriteNode).void }
170
+ #: (Prism::MultiWriteNode node) -> void
181
171
  def on_multi_write_node_enter(node)
182
172
  value = node.value
183
173
  values = value.is_a?(Prism::ArrayNode) && value.opening_loc ? value.elements : []
@@ -197,7 +187,7 @@ module RubyIndexer
197
187
  end
198
188
  end
199
189
 
200
- sig { params(node: Prism::ConstantPathWriteNode).void }
190
+ #: (Prism::ConstantPathWriteNode node) -> void
201
191
  def on_constant_path_write_node_enter(node)
202
192
  # ignore variable constants like `var::FOO` or `self.class::FOO`
203
193
  target = node.target
@@ -207,7 +197,7 @@ module RubyIndexer
207
197
  add_constant(node, name)
208
198
  end
209
199
 
210
- sig { params(node: Prism::ConstantPathOrWriteNode).void }
200
+ #: (Prism::ConstantPathOrWriteNode node) -> void
211
201
  def on_constant_path_or_write_node_enter(node)
212
202
  # ignore variable constants like `var::FOO` or `self.class::FOO`
213
203
  target = node.target
@@ -217,7 +207,7 @@ module RubyIndexer
217
207
  add_constant(node, name)
218
208
  end
219
209
 
220
- sig { params(node: Prism::ConstantPathOperatorWriteNode).void }
210
+ #: (Prism::ConstantPathOperatorWriteNode node) -> void
221
211
  def on_constant_path_operator_write_node_enter(node)
222
212
  # ignore variable constants like `var::FOO` or `self.class::FOO`
223
213
  target = node.target
@@ -227,7 +217,7 @@ module RubyIndexer
227
217
  add_constant(node, name)
228
218
  end
229
219
 
230
- sig { params(node: Prism::ConstantPathAndWriteNode).void }
220
+ #: (Prism::ConstantPathAndWriteNode node) -> void
231
221
  def on_constant_path_and_write_node_enter(node)
232
222
  # ignore variable constants like `var::FOO` or `self.class::FOO`
233
223
  target = node.target
@@ -237,31 +227,31 @@ module RubyIndexer
237
227
  add_constant(node, name)
238
228
  end
239
229
 
240
- sig { params(node: Prism::ConstantWriteNode).void }
230
+ #: (Prism::ConstantWriteNode node) -> void
241
231
  def on_constant_write_node_enter(node)
242
232
  name = fully_qualify_name(node.name.to_s)
243
233
  add_constant(node, name)
244
234
  end
245
235
 
246
- sig { params(node: Prism::ConstantOrWriteNode).void }
236
+ #: (Prism::ConstantOrWriteNode node) -> void
247
237
  def on_constant_or_write_node_enter(node)
248
238
  name = fully_qualify_name(node.name.to_s)
249
239
  add_constant(node, name)
250
240
  end
251
241
 
252
- sig { params(node: Prism::ConstantAndWriteNode).void }
242
+ #: (Prism::ConstantAndWriteNode node) -> void
253
243
  def on_constant_and_write_node_enter(node)
254
244
  name = fully_qualify_name(node.name.to_s)
255
245
  add_constant(node, name)
256
246
  end
257
247
 
258
- sig { params(node: Prism::ConstantOperatorWriteNode).void }
248
+ #: (Prism::ConstantOperatorWriteNode node) -> void
259
249
  def on_constant_operator_write_node_enter(node)
260
250
  name = fully_qualify_name(node.name.to_s)
261
251
  add_constant(node, name)
262
252
  end
263
253
 
264
- sig { params(node: Prism::CallNode).void }
254
+ #: (Prism::CallNode node) -> void
265
255
  def on_call_node_enter(node)
266
256
  message = node.name
267
257
 
@@ -299,7 +289,7 @@ module RubyIndexer
299
289
  end
300
290
  end
301
291
 
302
- sig { params(node: Prism::CallNode).void }
292
+ #: (Prism::CallNode node) -> void
303
293
  def on_call_node_leave(node)
304
294
  message = node.name
305
295
  case message
@@ -320,7 +310,7 @@ module RubyIndexer
320
310
  end
321
311
  end
322
312
 
323
- sig { params(node: Prism::DefNode).void }
313
+ #: (Prism::DefNode node) -> void
324
314
  def on_def_node_enter(node)
325
315
  owner = @owner_stack.last
326
316
  return unless owner
@@ -379,7 +369,7 @@ module RubyIndexer
379
369
  end
380
370
  end
381
371
 
382
- sig { params(node: Prism::DefNode).void }
372
+ #: (Prism::DefNode node) -> void
383
373
  def on_def_node_leave(node)
384
374
  @inside_def = false
385
375
 
@@ -388,57 +378,57 @@ module RubyIndexer
388
378
  end
389
379
  end
390
380
 
391
- sig { params(node: Prism::GlobalVariableAndWriteNode).void }
381
+ #: (Prism::GlobalVariableAndWriteNode node) -> void
392
382
  def on_global_variable_and_write_node_enter(node)
393
383
  handle_global_variable(node, node.name_loc)
394
384
  end
395
385
 
396
- sig { params(node: Prism::GlobalVariableOperatorWriteNode).void }
386
+ #: (Prism::GlobalVariableOperatorWriteNode node) -> void
397
387
  def on_global_variable_operator_write_node_enter(node)
398
388
  handle_global_variable(node, node.name_loc)
399
389
  end
400
390
 
401
- sig { params(node: Prism::GlobalVariableOrWriteNode).void }
391
+ #: (Prism::GlobalVariableOrWriteNode node) -> void
402
392
  def on_global_variable_or_write_node_enter(node)
403
393
  handle_global_variable(node, node.name_loc)
404
394
  end
405
395
 
406
- sig { params(node: Prism::GlobalVariableTargetNode).void }
396
+ #: (Prism::GlobalVariableTargetNode node) -> void
407
397
  def on_global_variable_target_node_enter(node)
408
398
  handle_global_variable(node, node.location)
409
399
  end
410
400
 
411
- sig { params(node: Prism::GlobalVariableWriteNode).void }
401
+ #: (Prism::GlobalVariableWriteNode node) -> void
412
402
  def on_global_variable_write_node_enter(node)
413
403
  handle_global_variable(node, node.name_loc)
414
404
  end
415
405
 
416
- sig { params(node: Prism::InstanceVariableWriteNode).void }
406
+ #: (Prism::InstanceVariableWriteNode node) -> void
417
407
  def on_instance_variable_write_node_enter(node)
418
408
  handle_instance_variable(node, node.name_loc)
419
409
  end
420
410
 
421
- sig { params(node: Prism::InstanceVariableAndWriteNode).void }
411
+ #: (Prism::InstanceVariableAndWriteNode node) -> void
422
412
  def on_instance_variable_and_write_node_enter(node)
423
413
  handle_instance_variable(node, node.name_loc)
424
414
  end
425
415
 
426
- sig { params(node: Prism::InstanceVariableOperatorWriteNode).void }
416
+ #: (Prism::InstanceVariableOperatorWriteNode node) -> void
427
417
  def on_instance_variable_operator_write_node_enter(node)
428
418
  handle_instance_variable(node, node.name_loc)
429
419
  end
430
420
 
431
- sig { params(node: Prism::InstanceVariableOrWriteNode).void }
421
+ #: (Prism::InstanceVariableOrWriteNode node) -> void
432
422
  def on_instance_variable_or_write_node_enter(node)
433
423
  handle_instance_variable(node, node.name_loc)
434
424
  end
435
425
 
436
- sig { params(node: Prism::InstanceVariableTargetNode).void }
426
+ #: (Prism::InstanceVariableTargetNode node) -> void
437
427
  def on_instance_variable_target_node_enter(node)
438
428
  handle_instance_variable(node, node.location)
439
429
  end
440
430
 
441
- sig { params(node: Prism::AliasMethodNode).void }
431
+ #: (Prism::AliasMethodNode node) -> void
442
432
  def on_alias_method_node_enter(node)
443
433
  method_name = node.new_name.slice
444
434
  comments = collect_comments(node)
@@ -454,40 +444,32 @@ module RubyIndexer
454
444
  )
455
445
  end
456
446
 
457
- sig { params(node: Prism::ClassVariableAndWriteNode).void }
447
+ #: (Prism::ClassVariableAndWriteNode node) -> void
458
448
  def on_class_variable_and_write_node_enter(node)
459
449
  handle_class_variable(node, node.name_loc)
460
450
  end
461
451
 
462
- sig { params(node: Prism::ClassVariableOperatorWriteNode).void }
452
+ #: (Prism::ClassVariableOperatorWriteNode node) -> void
463
453
  def on_class_variable_operator_write_node_enter(node)
464
454
  handle_class_variable(node, node.name_loc)
465
455
  end
466
456
 
467
- sig { params(node: Prism::ClassVariableOrWriteNode).void }
457
+ #: (Prism::ClassVariableOrWriteNode node) -> void
468
458
  def on_class_variable_or_write_node_enter(node)
469
459
  handle_class_variable(node, node.name_loc)
470
460
  end
471
461
 
472
- sig { params(node: Prism::ClassVariableTargetNode).void }
462
+ #: (Prism::ClassVariableTargetNode node) -> void
473
463
  def on_class_variable_target_node_enter(node)
474
464
  handle_class_variable(node, node.location)
475
465
  end
476
466
 
477
- sig { params(node: Prism::ClassVariableWriteNode).void }
467
+ #: (Prism::ClassVariableWriteNode node) -> void
478
468
  def on_class_variable_write_node_enter(node)
479
469
  handle_class_variable(node, node.name_loc)
480
470
  end
481
471
 
482
- sig do
483
- params(
484
- name: String,
485
- node_location: Prism::Location,
486
- signatures: T::Array[Entry::Signature],
487
- visibility: Entry::Visibility,
488
- comments: T.nilable(String),
489
- ).void
490
- end
472
+ #: (String name, Prism::Location node_location, Array[Entry::Signature] signatures, ?visibility: Entry::Visibility, ?comments: String?) -> void
491
473
  def add_method(name, node_location, signatures, visibility: Entry::Visibility::PUBLIC, comments: nil)
492
474
  location = Location.from_prism_location(node_location, @code_units_cache)
493
475
 
@@ -503,14 +485,7 @@ module RubyIndexer
503
485
  ))
504
486
  end
505
487
 
506
- sig do
507
- params(
508
- name: String,
509
- full_location: Prism::Location,
510
- name_location: Prism::Location,
511
- comments: T.nilable(String),
512
- ).void
513
- end
488
+ #: (String name, Prism::Location full_location, Prism::Location name_location, ?comments: String?) -> void
514
489
  def add_module(name, full_location, name_location, comments: nil)
515
490
  location = Location.from_prism_location(full_location, @code_units_cache)
516
491
  name_loc = Location.from_prism_location(name_location, @code_units_cache)
@@ -526,15 +501,7 @@ module RubyIndexer
526
501
  advance_namespace_stack(name, entry)
527
502
  end
528
503
 
529
- sig do
530
- params(
531
- name_or_nesting: T.any(String, T::Array[String]),
532
- full_location: Prism::Location,
533
- name_location: Prism::Location,
534
- parent_class_name: T.nilable(String),
535
- comments: T.nilable(String),
536
- ).void
537
- end
504
+ #: ((String | Array[String]) name_or_nesting, Prism::Location full_location, Prism::Location name_location, ?parent_class_name: String?, ?comments: String?) -> void
538
505
  def add_class(name_or_nesting, full_location, name_location, parent_class_name: nil, comments: nil)
539
506
  nesting = name_or_nesting.is_a?(Array) ? name_or_nesting : Index.actual_nesting(@stack, name_or_nesting)
540
507
  entry = Entry::Class.new(
@@ -549,7 +516,7 @@ module RubyIndexer
549
516
  advance_namespace_stack(T.must(nesting.last), entry)
550
517
  end
551
518
 
552
- sig { params(block: T.proc.params(index: Index, base: Entry::Namespace).void).void }
519
+ #: { (Index index, Entry::Namespace base) -> void } -> void
553
520
  def register_included_hook(&block)
554
521
  owner = @owner_stack.last
555
522
  return unless owner
@@ -559,32 +526,21 @@ module RubyIndexer
559
526
  end
560
527
  end
561
528
 
562
- sig { void }
529
+ #: -> void
563
530
  def pop_namespace_stack
564
531
  @stack.pop
565
532
  @owner_stack.pop
566
533
  @visibility_stack.pop
567
534
  end
568
535
 
569
- sig { returns(T.nilable(Entry::Namespace)) }
536
+ #: -> Entry::Namespace?
570
537
  def current_owner
571
538
  @owner_stack.last
572
539
  end
573
540
 
574
541
  private
575
542
 
576
- sig do
577
- params(
578
- node: T.any(
579
- Prism::GlobalVariableAndWriteNode,
580
- Prism::GlobalVariableOperatorWriteNode,
581
- Prism::GlobalVariableOrWriteNode,
582
- Prism::GlobalVariableTargetNode,
583
- Prism::GlobalVariableWriteNode,
584
- ),
585
- loc: Prism::Location,
586
- ).void
587
- end
543
+ #: ((Prism::GlobalVariableAndWriteNode | Prism::GlobalVariableOperatorWriteNode | Prism::GlobalVariableOrWriteNode | Prism::GlobalVariableTargetNode | Prism::GlobalVariableWriteNode) node, Prism::Location loc) -> void
588
544
  def handle_global_variable(node, loc)
589
545
  name = node.name.to_s
590
546
  comments = collect_comments(node)
@@ -597,18 +553,7 @@ module RubyIndexer
597
553
  ))
598
554
  end
599
555
 
600
- sig do
601
- params(
602
- node: T.any(
603
- Prism::ClassVariableAndWriteNode,
604
- Prism::ClassVariableOperatorWriteNode,
605
- Prism::ClassVariableOrWriteNode,
606
- Prism::ClassVariableTargetNode,
607
- Prism::ClassVariableWriteNode,
608
- ),
609
- loc: Prism::Location,
610
- ).void
611
- end
556
+ #: ((Prism::ClassVariableAndWriteNode | Prism::ClassVariableOperatorWriteNode | Prism::ClassVariableOrWriteNode | Prism::ClassVariableTargetNode | Prism::ClassVariableWriteNode) node, Prism::Location loc) -> void
612
557
  def handle_class_variable(node, loc)
613
558
  name = node.name.to_s
614
559
  # Ignore incomplete class variable names, which aren't valid Ruby syntax.
@@ -633,18 +578,7 @@ module RubyIndexer
633
578
  ))
634
579
  end
635
580
 
636
- sig do
637
- params(
638
- node: T.any(
639
- Prism::InstanceVariableAndWriteNode,
640
- Prism::InstanceVariableOperatorWriteNode,
641
- Prism::InstanceVariableOrWriteNode,
642
- Prism::InstanceVariableTargetNode,
643
- Prism::InstanceVariableWriteNode,
644
- ),
645
- loc: Prism::Location,
646
- ).void
647
- end
581
+ #: ((Prism::InstanceVariableAndWriteNode | Prism::InstanceVariableOperatorWriteNode | Prism::InstanceVariableOrWriteNode | Prism::InstanceVariableTargetNode | Prism::InstanceVariableWriteNode) node, Prism::Location loc) -> void
648
582
  def handle_instance_variable(node, loc)
649
583
  name = node.name.to_s
650
584
  return if name == "@"
@@ -666,7 +600,7 @@ module RubyIndexer
666
600
  ))
667
601
  end
668
602
 
669
- sig { params(node: Prism::CallNode).void }
603
+ #: (Prism::CallNode node) -> void
670
604
  def handle_private_constant(node)
671
605
  arguments = node.arguments&.arguments
672
606
  return unless arguments
@@ -691,7 +625,7 @@ module RubyIndexer
691
625
  entries&.each { |entry| entry.visibility = Entry::Visibility::PRIVATE }
692
626
  end
693
627
 
694
- sig { params(node: Prism::CallNode).void }
628
+ #: (Prism::CallNode node) -> void
695
629
  def handle_alias_method(node)
696
630
  arguments = node.arguments&.arguments
697
631
  return unless arguments
@@ -730,24 +664,7 @@ module RubyIndexer
730
664
  )
731
665
  end
732
666
 
733
- sig do
734
- params(
735
- node: T.any(
736
- Prism::ConstantWriteNode,
737
- Prism::ConstantOrWriteNode,
738
- Prism::ConstantAndWriteNode,
739
- Prism::ConstantOperatorWriteNode,
740
- Prism::ConstantPathWriteNode,
741
- Prism::ConstantPathOrWriteNode,
742
- Prism::ConstantPathOperatorWriteNode,
743
- Prism::ConstantPathAndWriteNode,
744
- Prism::ConstantTargetNode,
745
- Prism::ConstantPathTargetNode,
746
- ),
747
- name: String,
748
- value: T.nilable(Prism::Node),
749
- ).void
750
- end
667
+ #: ((Prism::ConstantWriteNode | Prism::ConstantOrWriteNode | Prism::ConstantAndWriteNode | Prism::ConstantOperatorWriteNode | Prism::ConstantPathWriteNode | Prism::ConstantPathOrWriteNode | Prism::ConstantPathOperatorWriteNode | Prism::ConstantPathAndWriteNode | Prism::ConstantTargetNode | Prism::ConstantPathTargetNode) node, String name, ?Prism::Node? value) -> void
751
668
  def add_constant(node, name, value = nil)
752
669
  value = node.value unless node.is_a?(Prism::ConstantTargetNode) || node.is_a?(Prism::ConstantPathTargetNode)
753
670
  comments = collect_comments(node)
@@ -798,7 +715,7 @@ module RubyIndexer
798
715
  )
799
716
  end
800
717
 
801
- sig { params(node: Prism::Node).returns(T.nilable(String)) }
718
+ #: (Prism::Node node) -> String?
802
719
  def collect_comments(node)
803
720
  return unless @collect_comments
804
721
 
@@ -826,12 +743,12 @@ module RubyIndexer
826
743
  comments
827
744
  end
828
745
 
829
- sig { params(line: Integer).returns(T::Boolean) }
746
+ #: (Integer line) -> bool
830
747
  def comment_exists_at?(line)
831
748
  @comments_by_line.key?(line) || !@source_lines[line - 1].to_s.strip.empty?
832
749
  end
833
750
 
834
- sig { params(name: String).returns(String) }
751
+ #: (String name) -> String
835
752
  def fully_qualify_name(name)
836
753
  if @stack.empty? || name.start_with?("::")
837
754
  name
@@ -840,7 +757,7 @@ module RubyIndexer
840
757
  end.delete_prefix("::")
841
758
  end
842
759
 
843
- sig { params(node: Prism::CallNode, reader: T::Boolean, writer: T::Boolean).void }
760
+ #: (Prism::CallNode node, reader: bool, writer: bool) -> void
844
761
  def handle_attribute(node, reader:, writer:)
845
762
  arguments = node.arguments&.arguments
846
763
  return unless arguments
@@ -885,7 +802,7 @@ module RubyIndexer
885
802
  end
886
803
  end
887
804
 
888
- sig { params(node: Prism::CallNode, operation: Symbol).void }
805
+ #: (Prism::CallNode node, Symbol operation) -> void
889
806
  def handle_module_operation(node, operation)
890
807
  return if @inside_def
891
808
 
@@ -919,7 +836,7 @@ module RubyIndexer
919
836
  end
920
837
  end
921
838
 
922
- sig { params(node: Prism::CallNode).void }
839
+ #: (Prism::CallNode node) -> void
923
840
  def handle_module_function(node)
924
841
  # Invoking `module_function` in a class raises
925
842
  owner = @owner_stack.last
@@ -970,7 +887,7 @@ module RubyIndexer
970
887
  end
971
888
  end
972
889
 
973
- sig { params(node: Prism::CallNode).void }
890
+ #: (Prism::CallNode node) -> void
974
891
  def handle_private_class_method(node)
975
892
  arguments = node.arguments&.arguments
976
893
  return unless arguments
@@ -1012,12 +929,12 @@ module RubyIndexer
1012
929
  end
1013
930
  end
1014
931
 
1015
- sig { returns(VisibilityScope) }
932
+ #: -> VisibilityScope
1016
933
  def current_visibility_scope
1017
934
  T.must(@visibility_stack.last)
1018
935
  end
1019
936
 
1020
- sig { params(parameters_node: T.nilable(Prism::ParametersNode)).returns(T::Array[Entry::Parameter]) }
937
+ #: (Prism::ParametersNode? parameters_node) -> Array[Entry::Parameter]
1021
938
  def list_params(parameters_node)
1022
939
  return [] unless parameters_node
1023
940
 
@@ -1079,7 +996,7 @@ module RubyIndexer
1079
996
  parameters
1080
997
  end
1081
998
 
1082
- sig { params(node: T.nilable(Prism::Node)).returns(T.nilable(Symbol)) }
999
+ #: (Prism::Node? node) -> Symbol?
1083
1000
  def parameter_name(node)
1084
1001
  case node
1085
1002
  when Prism::RequiredParameterNode, Prism::OptionalParameterNode,
@@ -1104,7 +1021,7 @@ module RubyIndexer
1104
1021
  end
1105
1022
  end
1106
1023
 
1107
- sig { params(short_name: String, entry: Entry::Namespace).void }
1024
+ #: (String short_name, Entry::Namespace entry) -> void
1108
1025
  def advance_namespace_stack(short_name, entry)
1109
1026
  @visibility_stack.push(VisibilityScope.public_scope)
1110
1027
  @owner_stack << entry
@@ -1114,7 +1031,7 @@ module RubyIndexer
1114
1031
 
1115
1032
  # Returns the last name in the stack not as we found it, but in terms of declared constants. For example, if the
1116
1033
  # last entry in the stack is a compact namespace like `Foo::Bar`, then the last name is `Bar`
1117
- sig { returns(T.nilable(String)) }
1034
+ #: -> String?
1118
1035
  def last_name_in_stack
1119
1036
  name = @stack.last
1120
1037
  return unless name
@@ -13,25 +13,25 @@ module RubyIndexer
13
13
  class << self
14
14
  extend T::Sig
15
15
 
16
- sig { params(child: T::Class[Enhancement]).void }
16
+ #: (Class[Enhancement] child) -> void
17
17
  def inherited(child)
18
18
  @enhancements << child
19
19
  super
20
20
  end
21
21
 
22
- sig { params(listener: DeclarationListener).returns(T::Array[Enhancement]) }
22
+ #: (DeclarationListener listener) -> Array[Enhancement]
23
23
  def all(listener)
24
24
  @enhancements.map { |enhancement| enhancement.new(listener) }
25
25
  end
26
26
 
27
27
  # Only available for testing purposes
28
- sig { void }
28
+ #: -> void
29
29
  def clear
30
30
  @enhancements.clear
31
31
  end
32
32
  end
33
33
 
34
- sig { params(listener: DeclarationListener).void }
34
+ #: (DeclarationListener listener) -> void
35
35
  def initialize(listener)
36
36
  @listener = listener
37
37
  end
@@ -39,10 +39,12 @@ module RubyIndexer
39
39
  # The `on_extend` indexing enhancement is invoked whenever an extend is encountered in the code. It can be used to
40
40
  # register for an included callback, similar to what `ActiveSupport::Concern` does in order to auto-extend the
41
41
  # `ClassMethods` modules
42
- sig { overridable.params(node: Prism::CallNode).void }
42
+ # @overridable
43
+ #: (Prism::CallNode node) -> void
43
44
  def on_call_node_enter(node); end # rubocop:disable RubyLsp/UseRegisterWithHandlerMethod
44
45
 
45
- sig { overridable.params(node: Prism::CallNode).void }
46
+ # @overridable
47
+ #: (Prism::CallNode node) -> void
46
48
  def on_call_node_leave(node); end # rubocop:disable RubyLsp/UseRegisterWithHandlerMethod
47
49
  end
48
50
  end