ruby-lsp 0.23.14 → 0.23.15

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/exe/ruby-lsp-launcher +9 -1
  4. data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +1 -1
  5. data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +6 -3
  6. data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +4 -2
  7. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +59 -29
  8. data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +5 -4
  9. data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +5 -1
  10. data/lib/ruby_indexer/test/class_variables_test.rb +14 -14
  11. data/lib/ruby_indexer/test/classes_and_modules_test.rb +65 -40
  12. data/lib/ruby_indexer/test/configuration_test.rb +6 -4
  13. data/lib/ruby_indexer/test/constant_test.rb +34 -34
  14. data/lib/ruby_indexer/test/enhancements_test.rb +1 -1
  15. data/lib/ruby_indexer/test/index_test.rb +139 -135
  16. data/lib/ruby_indexer/test/instance_variables_test.rb +37 -37
  17. data/lib/ruby_indexer/test/method_test.rb +118 -118
  18. data/lib/ruby_indexer/test/prefix_tree_test.rb +13 -13
  19. data/lib/ruby_indexer/test/rbs_indexer_test.rb +64 -70
  20. data/lib/ruby_indexer/test/test_case.rb +2 -2
  21. data/lib/ruby_lsp/erb_document.rb +12 -4
  22. data/lib/ruby_lsp/global_state.rb +1 -1
  23. data/lib/ruby_lsp/listeners/code_lens.rb +3 -3
  24. data/lib/ruby_lsp/listeners/completion.rb +24 -11
  25. data/lib/ruby_lsp/listeners/definition.rb +1 -1
  26. data/lib/ruby_lsp/listeners/document_link.rb +3 -1
  27. data/lib/ruby_lsp/listeners/document_symbol.rb +3 -3
  28. data/lib/ruby_lsp/listeners/folding_ranges.rb +8 -4
  29. data/lib/ruby_lsp/listeners/hover.rb +2 -2
  30. data/lib/ruby_lsp/listeners/semantic_highlighting.rb +12 -5
  31. data/lib/ruby_lsp/listeners/signature_help.rb +5 -1
  32. data/lib/ruby_lsp/listeners/spec_style.rb +1 -1
  33. data/lib/ruby_lsp/listeners/test_style.rb +3 -3
  34. data/lib/ruby_lsp/requests/code_action_resolve.rb +4 -3
  35. data/lib/ruby_lsp/requests/completion_resolve.rb +1 -1
  36. data/lib/ruby_lsp/requests/hover.rb +2 -2
  37. data/lib/ruby_lsp/requests/on_type_formatting.rb +4 -2
  38. data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +1 -2
  39. data/lib/ruby_lsp/requests/references.rb +2 -1
  40. data/lib/ruby_lsp/requests/rename.rb +8 -5
  41. data/lib/ruby_lsp/requests/semantic_highlighting.rb +4 -4
  42. data/lib/ruby_lsp/requests/show_syntax_tree.rb +1 -1
  43. data/lib/ruby_lsp/requests/support/common.rb +3 -1
  44. data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +2 -2
  45. data/lib/ruby_lsp/requests/support/source_uri.rb +1 -1
  46. data/lib/ruby_lsp/response_builders/document_symbol.rb +3 -2
  47. data/lib/ruby_lsp/response_builders/hover.rb +1 -1
  48. data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +1 -1
  49. data/lib/ruby_lsp/scripts/compose_bundle.rb +6 -4
  50. data/lib/ruby_lsp/server.rb +12 -4
  51. data/lib/ruby_lsp/setup_bundler.rb +5 -2
  52. data/lib/ruby_lsp/static_docs.rb +8 -1
  53. data/lib/ruby_lsp/store.rb +3 -2
  54. data/lib/ruby_lsp/test_reporters/lsp_reporter.rb +152 -0
  55. data/lib/ruby_lsp/test_reporters/minitest_reporter.rb +105 -0
  56. data/lib/ruby_lsp/test_reporters/test_unit_reporter.rb +94 -0
  57. data/lib/ruby_lsp/type_inferrer.rb +4 -1
  58. metadata +6 -6
  59. data/lib/ruby_lsp/ruby_lsp_reporter_plugin.rb +0 -109
  60. data/lib/ruby_lsp/test_reporter.rb +0 -207
  61. data/lib/ruby_lsp/test_unit_test_runner.rb +0 -98
@@ -47,9 +47,9 @@ module RubyIndexer
47
47
 
48
48
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
49
49
 
50
- entry = T.must(@index["bar"].first)
51
- owner = T.must(entry.owner)
52
- assert_equal("Foo::<Class:Foo>", owner.name)
50
+ entry = @index["bar"]&.first #: as Entry::Method
51
+ owner = entry.owner
52
+ assert_equal("Foo::<Class:Foo>", owner&.name)
53
53
  assert_instance_of(Entry::SingletonClass, owner)
54
54
  end
55
55
 
@@ -79,11 +79,11 @@ module RubyIndexer
79
79
  end
80
80
  RUBY
81
81
 
82
- assert_equal(2, @index["bar"].length)
83
- first_entry = T.must(@index["bar"].first)
84
- assert_equal("Foo::self::Bar", first_entry.owner.name)
85
- second_entry = T.must(@index["bar"].last)
86
- assert_equal("Bar", second_entry.owner.name)
82
+ assert_equal(2, @index["bar"]&.length)
83
+ first_entry = @index["bar"]&.first #: as Entry::Method
84
+ assert_equal("Foo::self::Bar", first_entry.owner&.name)
85
+ second_entry = @index["bar"]&.last #: as Entry::Method
86
+ assert_equal("Bar", second_entry.owner&.name)
87
87
  end
88
88
 
89
89
  def test_visibility_tracking
@@ -135,19 +135,19 @@ module RubyIndexer
135
135
  RUBY
136
136
 
137
137
  ["foo", "bar"].each do |keyword|
138
- entries = T.must(@index[keyword])
138
+ entries = @index[keyword] #: as Array[Entry::Method]
139
139
  # should receive two entries because module_function creates a singleton method
140
140
  # for the Test module and a private method for classes include the Test module
141
141
  assert_equal(entries.size, 2)
142
142
  first_entry, second_entry = *entries
143
143
  # The first entry points to the location of the module_function call
144
- assert_equal("Test", first_entry.owner.name)
145
- assert_instance_of(Entry::Module, first_entry.owner)
144
+ assert_equal("Test", first_entry&.owner&.name)
145
+ assert_instance_of(Entry::Module, first_entry&.owner)
146
146
  assert_predicate(first_entry, :private?)
147
147
  # The second entry points to the public singleton method
148
- assert_equal("Test::<Class:Test>", second_entry.owner.name)
149
- assert_instance_of(Entry::SingletonClass, second_entry.owner)
150
- assert_equal(Entry::Visibility::PUBLIC, second_entry.visibility)
148
+ assert_equal("Test::<Class:Test>", second_entry&.owner&.name)
149
+ assert_instance_of(Entry::SingletonClass, second_entry&.owner)
150
+ assert_equal(Entry::Visibility::PUBLIC, second_entry&.visibility)
151
151
  end
152
152
  end
153
153
 
@@ -168,13 +168,13 @@ module RubyIndexer
168
168
  RUBY
169
169
 
170
170
  ["foo", "bar"].each do |keyword|
171
- entries = T.must(@index[keyword])
171
+ entries = @index[keyword] #: as Array[Entry::Method]
172
172
  assert_equal(1, entries.size)
173
173
  entry = entries.first
174
174
  assert_predicate(entry, :private?)
175
175
  end
176
176
 
177
- entries = T.must(@index["baz"])
177
+ entries = @index["baz"] #: as Array[Entry::Method]
178
178
  assert_equal(1, entries.size)
179
179
  entry = entries.first
180
180
  assert_predicate(entry, :public?)
@@ -197,13 +197,13 @@ module RubyIndexer
197
197
  RUBY
198
198
 
199
199
  ["foo", "bar"].each do |keyword|
200
- entries = T.must(@index[keyword])
200
+ entries = @index[keyword] #: as Array[Entry::Method]
201
201
  assert_equal(1, entries.size)
202
202
  entry = entries.first
203
203
  assert_predicate(entry, :private?)
204
204
  end
205
205
 
206
- entries = T.must(@index["baz"])
206
+ entries = @index["baz"] #: as Array[Entry::Method]
207
207
  assert_equal(1, entries.size)
208
208
  entry = entries.first
209
209
  assert_predicate(entry, :public?)
@@ -220,12 +220,12 @@ module RubyIndexer
220
220
  end
221
221
  RUBY
222
222
 
223
- entries = T.must(@index["foo"])
223
+ entries = @index["foo"] #: as Array[Entry::Method]
224
224
  assert_equal(1, entries.size)
225
225
  entry = entries.first
226
226
  assert_predicate(entry, :private?)
227
227
 
228
- entries = T.must(@index["bar"])
228
+ entries = @index["bar"] #: as Array[Entry::Method]
229
229
  assert_equal(1, entries.size)
230
230
  entry = entries.first
231
231
  assert_predicate(entry, :public?)
@@ -251,17 +251,17 @@ module RubyIndexer
251
251
  end
252
252
  RUBY
253
253
 
254
- foo_comment = @index["Foo"].first.comments
255
- assert_equal("Documentation for Foo", foo_comment)
254
+ foo = @index["Foo"]&.first #: as !nil
255
+ assert_equal("Documentation for Foo", foo.comments)
256
256
 
257
- bar_comment = @index["bar"].first.comments
258
- assert_equal("####################\nDocumentation for bar\n####################\n", bar_comment)
257
+ bar = @index["bar"]&.first #: as !nil
258
+ assert_equal("####################\nDocumentation for bar\n####################\n", bar.comments)
259
259
 
260
- baz_comment = @index["baz"].first.comments
261
- assert_equal("Documentation for baz", baz_comment)
260
+ baz = @index["baz"]&.first #: as !nil
261
+ assert_equal("Documentation for baz", baz.comments)
262
262
 
263
- ban_comment = @index["ban"].first.comments
264
- assert_empty(ban_comment)
263
+ ban = @index["ban"]&.first #: as !nil
264
+ assert_empty(ban.comments)
265
265
  end
266
266
 
267
267
  def test_method_with_parameters
@@ -273,11 +273,11 @@ module RubyIndexer
273
273
  RUBY
274
274
 
275
275
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
276
- entry = T.must(@index["bar"].first)
277
- parameters = entry.signatures.first.parameters
276
+ entry = @index["bar"]&.first #: as Entry::Method
277
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
278
278
  assert_equal(1, parameters.length)
279
279
  parameter = parameters.first
280
- assert_equal(:a, parameter.name)
280
+ assert_equal(:a, parameter&.name)
281
281
  assert_instance_of(Entry::RequiredParameter, parameter)
282
282
  end
283
283
 
@@ -290,11 +290,11 @@ module RubyIndexer
290
290
  RUBY
291
291
 
292
292
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
293
- entry = T.must(@index["bar"].first)
294
- parameters = entry.signatures.first.parameters
293
+ entry = @index["bar"]&.first #: as Entry::Method
294
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
295
295
  assert_equal(1, parameters.length)
296
296
  parameter = parameters.first
297
- assert_equal(:"(a, (b, ))", parameter.name)
297
+ assert_equal(:"(a, (b, ))", parameter&.name)
298
298
  assert_instance_of(Entry::RequiredParameter, parameter)
299
299
  end
300
300
 
@@ -307,11 +307,11 @@ module RubyIndexer
307
307
  RUBY
308
308
 
309
309
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
310
- entry = T.must(@index["bar"].first)
311
- parameters = entry.signatures.first.parameters
310
+ entry = @index["bar"]&.first #: as Entry::Method
311
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
312
312
  assert_equal(1, parameters.length)
313
313
  parameter = parameters.first
314
- assert_equal(:a, parameter.name)
314
+ assert_equal(:a, parameter&.name)
315
315
  assert_instance_of(Entry::OptionalParameter, parameter)
316
316
  end
317
317
 
@@ -324,15 +324,15 @@ module RubyIndexer
324
324
  RUBY
325
325
 
326
326
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
327
- entry = T.must(@index["bar"].first)
328
- parameters = entry.signatures.first.parameters
327
+ entry = @index["bar"]&.first #: as Entry::Method
328
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
329
329
  assert_equal(2, parameters.length)
330
330
  a, b = parameters
331
331
 
332
- assert_equal(:a, a.name)
332
+ assert_equal(:a, a&.name)
333
333
  assert_instance_of(Entry::KeywordParameter, a)
334
334
 
335
- assert_equal(:b, b.name)
335
+ assert_equal(:b, b&.name)
336
336
  assert_instance_of(Entry::OptionalKeywordParameter, b)
337
337
  end
338
338
 
@@ -345,15 +345,15 @@ module RubyIndexer
345
345
  RUBY
346
346
 
347
347
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
348
- entry = T.must(@index["bar"].first)
349
- parameters = entry.signatures.first.parameters
348
+ entry = @index["bar"]&.first #: as Entry::Method
349
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
350
350
  assert_equal(2, parameters.length)
351
351
  a, b = parameters
352
352
 
353
- assert_equal(:a, a.name)
353
+ assert_equal(:a, a&.name)
354
354
  assert_instance_of(Entry::RestParameter, a)
355
355
 
356
- assert_equal(:b, b.name)
356
+ assert_equal(:b, b&.name)
357
357
  assert_instance_of(Entry::KeywordRestParameter, b)
358
358
  end
359
359
 
@@ -371,34 +371,34 @@ module RubyIndexer
371
371
  RUBY
372
372
 
373
373
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
374
- entry = T.must(@index["bar"].first)
375
- parameters = entry.signatures.first.parameters
374
+ entry = @index["bar"]&.first #: as Entry::Method
375
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
376
376
  assert_equal(2, parameters.length)
377
377
  a, b = parameters
378
378
 
379
- assert_equal(:a, a.name)
379
+ assert_equal(:a, a&.name)
380
380
  assert_instance_of(Entry::RestParameter, a)
381
381
 
382
- assert_equal(:b, b.name)
382
+ assert_equal(:b, b&.name)
383
383
  assert_instance_of(Entry::RequiredParameter, b)
384
384
 
385
- entry = T.must(@index["baz"].first)
386
- parameters = entry.signatures.first.parameters
385
+ entry = @index["baz"]&.first #: as Entry::Method
386
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
387
387
  assert_equal(2, parameters.length)
388
388
  a, b = parameters
389
389
 
390
- assert_equal(:a, a.name)
390
+ assert_equal(:a, a&.name)
391
391
  assert_instance_of(Entry::KeywordRestParameter, a)
392
392
 
393
- assert_equal(:b, b.name)
393
+ assert_equal(:b, b&.name)
394
394
  assert_instance_of(Entry::RequiredParameter, b)
395
395
 
396
- entry = T.must(@index["qux"].first)
397
- parameters = entry.signatures.first.parameters
396
+ entry = @index["qux"]&.first #: as Entry::Method
397
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
398
398
  assert_equal(2, parameters.length)
399
399
  _a, second = parameters
400
400
 
401
- assert_equal(:"(b, c)", second.name)
401
+ assert_equal(:"(b, c)", second&.name)
402
402
  assert_instance_of(Entry::RequiredParameter, second)
403
403
  end
404
404
 
@@ -411,10 +411,10 @@ module RubyIndexer
411
411
  RUBY
412
412
 
413
413
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
414
- entry = T.must(@index["bar"].first)
415
- parameters = entry.signatures.first.parameters
414
+ entry = @index["bar"]&.first #: as Entry::Method
415
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
416
416
  assert_equal(1, parameters.length)
417
- param = parameters.first
417
+ param = parameters.first #: as Entry::Parameter
418
418
 
419
419
  assert_equal(:"(a, *b)", param.name)
420
420
  assert_instance_of(Entry::RequiredParameter, param)
@@ -431,17 +431,17 @@ module RubyIndexer
431
431
  end
432
432
  RUBY
433
433
 
434
- entry = T.must(@index["bar"].first)
435
- parameters = entry.signatures.first.parameters
436
- param = parameters.first
434
+ entry = @index["bar"]&.first #: as Entry::Method
435
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
436
+ param = parameters.first #: as Entry::Parameter
437
437
  assert_equal(:block, param.name)
438
438
  assert_instance_of(Entry::BlockParameter, param)
439
439
 
440
- entry = T.must(@index["baz"].first)
441
- parameters = entry.signatures.first.parameters
440
+ entry = @index["baz"]&.first #: as Entry::Method
441
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
442
442
  assert_equal(1, parameters.length)
443
443
 
444
- param = parameters.first
444
+ param = parameters.first #: as Entry::Parameter
445
445
  assert_equal(Entry::BlockParameter::DEFAULT_NAME, param.name)
446
446
  assert_instance_of(Entry::BlockParameter, param)
447
447
  end
@@ -455,15 +455,15 @@ module RubyIndexer
455
455
  RUBY
456
456
 
457
457
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
458
- entry = T.must(@index["bar"].first)
459
- parameters = entry.signatures.first.parameters
458
+ entry = @index["bar"]&.first #: as Entry::Method
459
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
460
460
  assert_equal(2, parameters.length)
461
461
  first, second = parameters
462
462
 
463
- assert_equal(Entry::RestParameter::DEFAULT_NAME, first.name)
463
+ assert_equal(Entry::RestParameter::DEFAULT_NAME, first&.name)
464
464
  assert_instance_of(Entry::RestParameter, first)
465
465
 
466
- assert_equal(Entry::KeywordRestParameter::DEFAULT_NAME, second.name)
466
+ assert_equal(Entry::KeywordRestParameter::DEFAULT_NAME, second&.name)
467
467
  assert_instance_of(Entry::KeywordRestParameter, second)
468
468
  end
469
469
 
@@ -476,8 +476,8 @@ module RubyIndexer
476
476
  RUBY
477
477
 
478
478
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:2-5")
479
- entry = T.must(@index["bar"].first)
480
- parameters = entry.signatures.first.parameters
479
+ entry = @index["bar"]&.first #: as Entry::Method
480
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
481
481
  assert_empty(parameters)
482
482
  end
483
483
 
@@ -492,17 +492,17 @@ module RubyIndexer
492
492
  end
493
493
  RUBY
494
494
 
495
- entry = T.must(@index["bar"].first)
495
+ entry = @index["bar"]&.first #: as Entry::Method
496
496
  assert_instance_of(Entry::Method, entry, "Expected `bar` to be indexed")
497
497
 
498
- parameters = entry.signatures.first.parameters
498
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
499
499
  assert_equal(1, parameters.length)
500
500
  assert_instance_of(Entry::ForwardingParameter, parameters.first)
501
501
 
502
- entry = T.must(@index["baz"].first)
502
+ entry = @index["baz"]&.first #: as Entry::Method
503
503
  assert_instance_of(Entry::Method, entry, "Expected `baz` to be indexed")
504
504
 
505
- parameters = entry.signatures.first.parameters
505
+ parameters = entry.signatures.first&.parameters #: as Array[Entry::Parameter]
506
506
  assert_equal(2, parameters.length)
507
507
  assert_instance_of(Entry::RequiredParameter, parameters[0])
508
508
  assert_instance_of(Entry::ForwardingParameter, parameters[1])
@@ -516,8 +516,8 @@ module RubyIndexer
516
516
  end
517
517
  RUBY
518
518
 
519
- entry = T.must(@index["bar"].first)
520
- owner_name = T.must(entry.owner).name
519
+ entry = @index["bar"]&.first #: as Entry::Method
520
+ owner_name = entry.owner&.name
521
521
 
522
522
  assert_equal("Foo", owner_name)
523
523
  end
@@ -533,9 +533,9 @@ module RubyIndexer
533
533
  RUBY
534
534
 
535
535
  assert_entry("bar", Entry::Accessor, "/fake/path/foo.rb:2-15:2-18")
536
- assert_equal("Hello there", @index["bar"].first.comments)
536
+ assert_equal("Hello there", @index["bar"]&.first&.comments)
537
537
  assert_entry("other", Entry::Accessor, "/fake/path/foo.rb:2-21:2-26")
538
- assert_equal("Hello there", @index["other"].first.comments)
538
+ assert_equal("Hello there", @index["other"]&.first&.comments)
539
539
  assert_entry("baz=", Entry::Accessor, "/fake/path/foo.rb:3-15:3-18")
540
540
  assert_entry("qux", Entry::Accessor, "/fake/path/foo.rb:4-17:4-20")
541
541
  assert_entry("qux=", Entry::Accessor, "/fake/path/foo.rb:4-17:4-20")
@@ -565,14 +565,14 @@ module RubyIndexer
565
565
  end
566
566
  RUBY
567
567
 
568
- entry = T.cast(@index["first_method"]&.first, Entry::Method)
569
- assert_equal("Foo", T.must(entry.owner).name)
568
+ entry = @index["first_method"]&.first #: as Entry::Method
569
+ assert_equal("Foo", entry.owner&.name)
570
570
 
571
- entry = T.cast(@index["second_method"]&.first, Entry::Method)
572
- assert_equal("Foo::Bar", T.must(entry.owner).name)
571
+ entry = @index["second_method"]&.first #: as Entry::Method
572
+ assert_equal("Foo::Bar", entry.owner&.name)
573
573
 
574
- entry = T.cast(@index["third_method"]&.first, Entry::Method)
575
- assert_equal("Foo", T.must(entry.owner).name)
574
+ entry = @index["third_method"]&.first #: as Entry::Method
575
+ assert_equal("Foo", entry.owner&.name)
576
576
  end
577
577
 
578
578
  def test_keeps_track_of_aliases
@@ -609,15 +609,15 @@ module RubyIndexer
609
609
  assert_entry("bar", Entry::Method, "/fake/path/foo.rb:1-2:1-19")
610
610
  assert_entry("baz", Entry::Method, "/fake/path/foo.rb:4-4:4-16")
611
611
 
612
- bar_owner = T.must(T.must(@index["bar"].first).owner)
613
- baz_owner = T.must(T.must(@index["baz"].first).owner)
612
+ bar = @index["bar"]&.first #: as Entry::Method
613
+ baz = @index["baz"]&.first #: as Entry::Method
614
614
 
615
- assert_instance_of(Entry::SingletonClass, bar_owner)
616
- assert_instance_of(Entry::SingletonClass, baz_owner)
615
+ assert_instance_of(Entry::SingletonClass, bar.owner)
616
+ assert_instance_of(Entry::SingletonClass, baz.owner)
617
617
 
618
618
  # Regardless of whether the method was added through `self.something` or `class << self`, the owner object must be
619
619
  # the exact same
620
- assert_same(bar_owner, baz_owner)
620
+ assert_same(bar.owner, baz.owner)
621
621
  end
622
622
 
623
623
  def test_name_location_points_to_method_identifier_location
@@ -630,7 +630,7 @@ module RubyIndexer
630
630
  end
631
631
  RUBY
632
632
 
633
- entry = T.must(@index["bar"].first)
633
+ entry = @index["bar"]&.first #: as Entry::Method
634
634
  refute_equal(entry.location, entry.name_location)
635
635
 
636
636
  name_location = entry.name_location
@@ -648,7 +648,7 @@ module RubyIndexer
648
648
  end
649
649
  RUBY
650
650
 
651
- entry = T.must(@index["bar"].first)
651
+ entry = @index["bar"]&.first #: as Entry::Method
652
652
 
653
653
  # Matching calls
654
654
  assert_signature_matches(entry, "bar()")
@@ -682,7 +682,7 @@ module RubyIndexer
682
682
  end
683
683
  RUBY
684
684
 
685
- entry = T.must(@index["bar"].first)
685
+ entry = @index["bar"]&.first #: as Entry::Method
686
686
 
687
687
  # All calls match a forwarding parameter
688
688
  assert_signature_matches(entry, "bar(1)")
@@ -708,7 +708,7 @@ module RubyIndexer
708
708
  end
709
709
  RUBY
710
710
 
711
- entry = T.must(@index["bar"].first)
711
+ entry = @index["bar"]&.first #: as Entry::Method
712
712
 
713
713
  # All calls with at least one positional argument match
714
714
  assert_signature_matches(entry, "bar(1)")
@@ -734,7 +734,7 @@ module RubyIndexer
734
734
  end
735
735
  RUBY
736
736
 
737
- entry = T.must(@index["bar"].first)
737
+ entry = @index["bar"]&.first #: as Entry::Method
738
738
 
739
739
  # All calls with at least one positional argument match
740
740
  assert_signature_matches(entry, "bar()")
@@ -762,7 +762,7 @@ module RubyIndexer
762
762
  end
763
763
  RUBY
764
764
 
765
- entry = T.must(@index["bar"].first)
765
+ entry = @index["bar"]&.first #: as Entry::Method
766
766
 
767
767
  # All calls with at least one positional argument match
768
768
  assert_signature_matches(entry, "bar(1)")
@@ -789,7 +789,7 @@ module RubyIndexer
789
789
  end
790
790
  RUBY
791
791
 
792
- entry = T.must(@index["bar"].first)
792
+ entry = @index["bar"]&.first #: as Entry::Method
793
793
 
794
794
  assert_signature_matches(entry, "bar(...)")
795
795
  assert_signature_matches(entry, "bar()")
@@ -817,7 +817,7 @@ module RubyIndexer
817
817
  end
818
818
  RUBY
819
819
 
820
- entry = T.must(@index["bar"].first)
820
+ entry = @index["bar"]&.first #: as Entry::Method
821
821
 
822
822
  assert_signature_matches(entry, "bar(...)")
823
823
  assert_signature_matches(entry, "bar()")
@@ -841,10 +841,10 @@ module RubyIndexer
841
841
  end
842
842
  RUBY
843
843
 
844
- entry = T.must(@index["bar"].first)
844
+ entry = @index["bar"]&.first #: as Entry::Method
845
845
  assert_signature_matches(entry, "bar(a: 1)")
846
846
 
847
- entry = T.must(@index["baz"].first)
847
+ entry = @index["baz"]&.first #: as Entry::Method
848
848
  assert_signature_matches(entry, "baz(1)")
849
849
  end
850
850
 
@@ -864,27 +864,27 @@ module RubyIndexer
864
864
  end
865
865
  RUBY
866
866
 
867
- entry = T.must(@index["bar"].first)
867
+ entry = @index["bar"]&.first #: as Entry::Method
868
868
  assert_predicate(entry, :public?)
869
- assert_equal("Foo", T.must(entry.owner).name)
869
+ assert_equal("Foo", entry.owner&.name)
870
870
 
871
- instance_baz, singleton_baz = T.must(@index["baz"])
871
+ instance_baz, singleton_baz = @index["baz"] #: as Array[Entry::Method]
872
872
  assert_predicate(instance_baz, :private?)
873
- assert_equal("Foo", T.must(instance_baz.owner).name)
873
+ assert_equal("Foo", instance_baz&.owner&.name)
874
874
 
875
875
  assert_predicate(singleton_baz, :public?)
876
- assert_equal("Foo::<Class:Foo>", T.must(singleton_baz.owner).name)
876
+ assert_equal("Foo::<Class:Foo>", singleton_baz&.owner&.name)
877
877
 
878
878
  # After invoking `public`, the state of `module_function` is reset
879
- instance_qux, singleton_qux = T.must(@index["qux"])
879
+ instance_qux, singleton_qux = @index["qux"] #: as Array[Entry::Method]
880
880
  assert_nil(singleton_qux)
881
881
  assert_predicate(instance_qux, :public?)
882
- assert_equal("Foo", T.must(instance_baz.owner).name)
882
+ assert_equal("Foo", instance_baz&.owner&.name)
883
883
 
884
884
  # Attributes are not turned into class methods, they do become private
885
- instance_attribute, singleton_attribute = @index["attribute"]
885
+ instance_attribute, singleton_attribute = @index["attribute"] #: as Array[Entry::Method]
886
886
  assert_nil(singleton_attribute)
887
- assert_equal("Foo", T.must(instance_attribute.owner).name)
887
+ assert_equal("Foo", instance_attribute&.owner&.name)
888
888
  assert_predicate(instance_attribute, :private?)
889
889
  end
890
890
 
@@ -900,13 +900,13 @@ module RubyIndexer
900
900
  end
901
901
  RUBY
902
902
 
903
- entry = T.must(@index["bar"].first)
903
+ entry = @index["bar"]&.first #: as Entry::Method
904
904
  assert_predicate(entry, :public?)
905
- assert_equal("Foo", T.must(entry.owner).name)
905
+ assert_equal("Foo", entry.owner&.name)
906
906
 
907
- entry = T.must(@index["baz"].first)
907
+ entry = @index["baz"]&.first #: as Entry::Method
908
908
  assert_predicate(entry, :public?)
909
- assert_equal("Foo", T.must(entry.owner).name)
909
+ assert_equal("Foo", entry.owner&.name)
910
910
  end
911
911
 
912
912
  def test_making_several_class_methods_private
@@ -940,13 +940,13 @@ module RubyIndexer
940
940
  end
941
941
  RUBY
942
942
 
943
- entry = T.must(@index["bar"].first)
943
+ entry = @index["bar"]&.first #: as Entry::Method
944
944
  assert_predicate(entry, :private?)
945
945
 
946
- entry = T.must(@index["baz"].first)
946
+ entry = @index["baz"]&.first #: as Entry::Method
947
947
  assert_predicate(entry, :protected?)
948
948
 
949
- entry = T.must(@index["qux"].first)
949
+ entry = @index["qux"]&.first #: as Entry::Method
950
950
  assert_predicate(entry, :public?)
951
951
  end
952
952
 
@@ -954,14 +954,14 @@ module RubyIndexer
954
954
 
955
955
  #: (Entry::Method entry, String call_string) -> void
956
956
  def assert_signature_matches(entry, call_string)
957
- sig = T.must(entry.signatures.first)
957
+ sig = entry.signatures.first #: as !nil
958
958
  arguments = parse_prism_args(call_string)
959
959
  assert(sig.matches?(arguments), "Expected #{call_string} to match #{entry.name}#{entry.decorated_parameters}")
960
960
  end
961
961
 
962
962
  #: (Entry::Method entry, String call_string) -> void
963
963
  def refute_signature_matches(entry, call_string)
964
- sig = T.must(entry.signatures.first)
964
+ sig = entry.signatures.first #: as !nil
965
965
  arguments = parse_prism_args(call_string)
966
966
  refute(sig.matches?(arguments), "Expected #{call_string} to not match #{entry.name}#{entry.decorated_parameters}")
967
967
  end
@@ -25,10 +25,10 @@ module RubyIndexer
25
25
  tree = PrefixTree[String].new
26
26
  ["foo", "bar", "baz"].each { |item| tree.insert(item, item) }
27
27
 
28
- assert_equal(["foo", "bar", "baz"], tree.search(""))
29
- assert_equal(["bar", "baz"], tree.search("b"))
28
+ assert_equal(["baz", "bar", "foo"], tree.search(""))
29
+ assert_equal(["baz", "bar"], tree.search("b"))
30
30
  assert_equal(["foo"], tree.search("fo"))
31
- assert_equal(["bar", "baz"], tree.search("ba"))
31
+ assert_equal(["baz", "bar"], tree.search("ba"))
32
32
  assert_equal(["baz"], tree.search("baz"))
33
33
  assert_empty(tree.search("qux"))
34
34
  end
@@ -80,17 +80,17 @@ module RubyIndexer
80
80
 
81
81
  assert_equal(
82
82
  [
83
- "foo/bar/support/selection",
84
- "foo/bar/support/semantic",
85
- "foo/bar/support/syntax",
86
- "foo/bar/support/source",
83
+ "foo/bar/support/formatting",
84
+ "foo/bar/support/prefix",
85
+ "foo/bar/support/highlight",
86
+ "foo/bar/support/diagnostic",
87
+ "foo/bar/support/rails",
87
88
  "foo/bar/support/runner",
88
89
  "foo/bar/support/runner2",
89
- "foo/bar/support/rails",
90
- "foo/bar/support/diagnostic",
91
- "foo/bar/support/highlight",
92
- "foo/bar/support/prefix",
93
- "foo/bar/support/formatting",
90
+ "foo/bar/support/source",
91
+ "foo/bar/support/syntax",
92
+ "foo/bar/support/semantic",
93
+ "foo/bar/support/selection",
94
94
  ],
95
95
  tree.search("foo/bar/support"),
96
96
  )
@@ -99,7 +99,7 @@ module RubyIndexer
99
99
  def test_deletion
100
100
  tree = PrefixTree[String].new
101
101
  ["foo/bar", "foo/baz"].each { |item| tree.insert(item, item) }
102
- assert_equal(["foo/bar", "foo/baz"], tree.search("foo"))
102
+ assert_equal(["foo/baz", "foo/bar"], tree.search("foo"))
103
103
 
104
104
  tree.delete("foo/bar")
105
105
  assert_empty(tree.search("foo/bar"))