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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/VERSION +1 -1
- data/exe/ruby-lsp-launcher +12 -11
- data/lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb +3 -5
- data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +52 -77
- data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +61 -144
- data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +8 -6
- data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +73 -182
- data/lib/ruby_indexer/lib/ruby_indexer/index.rb +48 -181
- data/lib/ruby_indexer/lib/ruby_indexer/location.rb +4 -27
- data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +12 -14
- data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +21 -44
- data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +40 -58
- data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +9 -16
- data/lib/ruby_indexer/lib/ruby_indexer/visibility_scope.rb +5 -9
- data/lib/ruby_indexer/test/configuration_test.rb +32 -2
- data/lib/ruby_indexer/test/method_test.rb +2 -2
- data/lib/ruby_lsp/addon.rb +32 -67
- data/lib/ruby_lsp/base_server.rb +10 -10
- data/lib/ruby_lsp/client_capabilities.rb +4 -6
- data/lib/ruby_lsp/document.rb +21 -32
- data/lib/ruby_lsp/erb_document.rb +17 -27
- data/lib/ruby_lsp/global_state.rb +30 -32
- data/lib/ruby_lsp/internal.rb +2 -0
- data/lib/ruby_lsp/listeners/code_lens.rb +21 -39
- data/lib/ruby_lsp/listeners/completion.rb +34 -53
- data/lib/ruby_lsp/listeners/definition.rb +35 -49
- data/lib/ruby_lsp/listeners/document_highlight.rb +60 -69
- data/lib/ruby_lsp/listeners/document_link.rb +9 -19
- data/lib/ruby_lsp/listeners/document_symbol.rb +34 -48
- data/lib/ruby_lsp/listeners/folding_ranges.rb +31 -38
- data/lib/ruby_lsp/listeners/hover.rb +37 -47
- data/lib/ruby_lsp/listeners/inlay_hints.rb +3 -10
- data/lib/ruby_lsp/listeners/semantic_highlighting.rb +29 -35
- data/lib/ruby_lsp/listeners/signature_help.rb +4 -23
- data/lib/ruby_lsp/listeners/spec_style.rb +199 -0
- data/lib/ruby_lsp/listeners/test_style.rb +136 -30
- data/lib/ruby_lsp/node_context.rb +8 -35
- data/lib/ruby_lsp/rbs_document.rb +7 -5
- data/lib/ruby_lsp/requests/code_action_resolve.rb +10 -10
- data/lib/ruby_lsp/requests/code_actions.rb +5 -14
- data/lib/ruby_lsp/requests/code_lens.rb +4 -13
- data/lib/ruby_lsp/requests/completion.rb +4 -15
- data/lib/ruby_lsp/requests/completion_resolve.rb +4 -4
- data/lib/ruby_lsp/requests/definition.rb +4 -12
- data/lib/ruby_lsp/requests/diagnostics.rb +6 -9
- data/lib/ruby_lsp/requests/discover_tests.rb +15 -3
- data/lib/ruby_lsp/requests/document_highlight.rb +3 -11
- data/lib/ruby_lsp/requests/document_link.rb +4 -13
- data/lib/ruby_lsp/requests/document_symbol.rb +4 -7
- data/lib/ruby_lsp/requests/folding_ranges.rb +4 -7
- data/lib/ruby_lsp/requests/formatting.rb +4 -7
- data/lib/ruby_lsp/requests/go_to_relevant_file.rb +87 -0
- data/lib/ruby_lsp/requests/hover.rb +6 -16
- data/lib/ruby_lsp/requests/inlay_hints.rb +4 -13
- data/lib/ruby_lsp/requests/on_type_formatting.rb +17 -24
- data/lib/ruby_lsp/requests/prepare_rename.rb +3 -8
- data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +4 -13
- data/lib/ruby_lsp/requests/range_formatting.rb +3 -4
- data/lib/ruby_lsp/requests/references.rb +5 -35
- data/lib/ruby_lsp/requests/rename.rb +9 -35
- data/lib/ruby_lsp/requests/request.rb +5 -17
- data/lib/ruby_lsp/requests/selection_ranges.rb +3 -3
- data/lib/ruby_lsp/requests/semantic_highlighting.rb +6 -23
- data/lib/ruby_lsp/requests/show_syntax_tree.rb +4 -5
- data/lib/ruby_lsp/requests/signature_help.rb +6 -24
- data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
- data/lib/ruby_lsp/requests/support/common.rb +12 -49
- data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +12 -14
- data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +7 -10
- data/lib/ruby_lsp/requests/support/rubocop_runner.rb +9 -15
- data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
- data/lib/ruby_lsp/requests/support/sorbet.rb +1 -7
- data/lib/ruby_lsp/requests/support/source_uri.rb +5 -16
- data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +7 -10
- data/lib/ruby_lsp/requests/support/test_item.rb +14 -13
- data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +4 -5
- data/lib/ruby_lsp/requests/workspace_symbol.rb +3 -3
- data/lib/ruby_lsp/response_builders/collection_response_builder.rb +4 -4
- data/lib/ruby_lsp/response_builders/document_symbol.rb +8 -11
- data/lib/ruby_lsp/response_builders/hover.rb +5 -5
- data/lib/ruby_lsp/response_builders/response_builder.rb +1 -1
- data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +18 -40
- data/lib/ruby_lsp/response_builders/signature_help.rb +4 -5
- data/lib/ruby_lsp/response_builders/test_collection.rb +5 -9
- data/lib/ruby_lsp/ruby_document.rb +15 -40
- data/lib/ruby_lsp/ruby_lsp_reporter_plugin.rb +106 -0
- data/lib/ruby_lsp/scope.rb +6 -10
- data/lib/ruby_lsp/server.rb +125 -74
- data/lib/ruby_lsp/setup_bundler.rb +22 -15
- data/lib/ruby_lsp/store.rb +12 -28
- data/lib/ruby_lsp/test_helper.rb +3 -12
- data/lib/ruby_lsp/test_reporter.rb +71 -0
- data/lib/ruby_lsp/test_unit_test_runner.rb +96 -0
- data/lib/ruby_lsp/type_inferrer.rb +9 -13
- data/lib/ruby_lsp/utils.rb +27 -65
- 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
|
-
|
9
|
+
#: Array[String]
|
12
10
|
attr_reader :indexing_errors
|
13
11
|
|
14
|
-
|
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
|
-
|
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
|
-
|
112
|
+
#: (Prism::ClassNode node) -> void
|
123
113
|
def on_class_node_leave(node)
|
124
114
|
pop_namespace_stack
|
125
115
|
end
|
126
116
|
|
127
|
-
|
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
|
-
|
123
|
+
#: (Prism::ModuleNode node) -> void
|
134
124
|
def on_module_node_leave(node)
|
135
125
|
pop_namespace_stack
|
136
126
|
end
|
137
127
|
|
138
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
536
|
+
#: -> Entry::Namespace?
|
570
537
|
def current_owner
|
571
538
|
@owner_stack.last
|
572
539
|
end
|
573
540
|
|
574
541
|
private
|
575
542
|
|
576
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
932
|
+
#: -> VisibilityScope
|
1016
933
|
def current_visibility_scope
|
1017
934
|
T.must(@visibility_stack.last)
|
1018
935
|
end
|
1019
936
|
|
1020
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
16
|
+
#: (Class[Enhancement] child) -> void
|
17
17
|
def inherited(child)
|
18
18
|
@enhancements << child
|
19
19
|
super
|
20
20
|
end
|
21
21
|
|
22
|
-
|
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
|
-
|
28
|
+
#: -> void
|
29
29
|
def clear
|
30
30
|
@enhancements.clear
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
-
|
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
|
-
|
42
|
+
# @overridable
|
43
|
+
#: (Prism::CallNode node) -> void
|
43
44
|
def on_call_node_enter(node); end # rubocop:disable RubyLsp/UseRegisterWithHandlerMethod
|
44
45
|
|
45
|
-
|
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
|