ruby-lsp 0.19.1 → 0.20.0

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/core_ext/uri.rb +2 -2
  4. data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +85 -36
  5. data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +5 -1
  6. data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +39 -98
  7. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +2 -3
  8. data/lib/ruby_indexer/lib/ruby_indexer/location.rb +22 -0
  9. data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +2 -7
  10. data/lib/ruby_indexer/test/enhancements_test.rb +5 -7
  11. data/lib/ruby_indexer/test/global_variable_test.rb +49 -0
  12. data/lib/ruby_lsp/erb_document.rb +15 -2
  13. data/lib/ruby_lsp/listeners/definition.rb +20 -0
  14. data/lib/ruby_lsp/listeners/folding_ranges.rb +3 -3
  15. data/lib/ruby_lsp/requests/code_action_resolve.rb +8 -2
  16. data/lib/ruby_lsp/requests/completion.rb +1 -1
  17. data/lib/ruby_lsp/requests/definition.rb +2 -1
  18. data/lib/ruby_lsp/requests/document_highlight.rb +5 -1
  19. data/lib/ruby_lsp/requests/hover.rb +1 -1
  20. data/lib/ruby_lsp/requests/range_formatting.rb +4 -2
  21. data/lib/ruby_lsp/requests/references.rb +1 -1
  22. data/lib/ruby_lsp/requests/rename.rb +1 -1
  23. data/lib/ruby_lsp/requests/semantic_highlighting.rb +1 -1
  24. data/lib/ruby_lsp/requests/signature_help.rb +1 -1
  25. data/lib/ruby_lsp/requests/support/common.rb +1 -1
  26. data/lib/ruby_lsp/requests/support/rubocop_runner.rb +6 -6
  27. data/lib/ruby_lsp/response_builders/document_symbol.rb +2 -2
  28. data/lib/ruby_lsp/response_builders/hover.rb +2 -2
  29. data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +14 -8
  30. data/lib/ruby_lsp/response_builders/signature_help.rb +2 -2
  31. data/lib/ruby_lsp/ruby_document.rb +33 -12
  32. data/lib/ruby_lsp/type_inferrer.rb +1 -1
  33. metadata +6 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d900634d5328c8b4b5fcf799f807456bec3cdb94d6294c80fa9152bcf45aedde
4
- data.tar.gz: b7661867d38331ec158312b10c7f530cbd58994ee94e8ff592f478e7e05efcb7
3
+ metadata.gz: d43d431cf15d817d80ebb8564f90a748b871ad3c2c278482d4b1b5c831b7bcd2
4
+ data.tar.gz: 28ab582396723d582f7909ad277300430b6e14e6a281408be21a71f4d768930f
5
5
  SHA512:
6
- metadata.gz: 8f7955f676bc5f231f990f04d8aea1a767165d4f2cac1e9514928014cd8a09eb68c60b4cd226a94b554dac88d77c2117ae3a3ea76bb66e68980974f1685d8970
7
- data.tar.gz: 1b914d5607e5730139780cd1f172923db7878a7a0a4098daa1e17df8a1a7a2d8b6731b092baf7eeefc9f55605305e4d70d8cca8489f68a17bab532026c38e8b2
6
+ metadata.gz: 73a87212da50592a6b201a5f21ea559de74fb12ed795428e06392a4375aa73015a103aedd56734b9b05a2f0a27fcb7366b16107ea9f1a080b3459e2eff1dcd88
7
+ data.tar.gz: 7ad77f3dccbabba9cb306c73ccefca4e84e9ff480bc0594d20a1c6e03727948119f7accefc522e5ed25d6de1d21fff03b18c704c7c8908b33eb92cfc5b2c665d
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.19.1
1
+ 0.20.0
data/lib/core_ext/uri.rb CHANGED
@@ -3,6 +3,8 @@
3
3
 
4
4
  module URI
5
5
  class Generic
6
+ extend T::Sig
7
+
6
8
  # Avoid a deprecation warning with Ruby 3.4 where the default parser was changed to RFC3986.
7
9
  # This condition must remain even after support for 3.4 has been dropped for users that have
8
10
  # `uri` in their lockfile, decoupling it from the ruby version.
@@ -27,8 +29,6 @@ module URI
27
29
  end
28
30
  end
29
31
 
30
- extend T::Sig
31
-
32
32
  sig { returns(T.nilable(String)) }
33
33
  def to_standardized_path
34
34
  parsed_path = path
@@ -33,6 +33,10 @@ module RubyIndexer
33
33
  T::Hash[Integer, Prism::Comment],
34
34
  )
35
35
  @inside_def = T.let(false, T::Boolean)
36
+ @code_units_cache = T.let(
37
+ parse_result.code_units_cache(@index.configuration.encoding),
38
+ T.any(T.proc.params(arg0: Integer).returns(Integer), Prism::CodeUnitsCache),
39
+ )
36
40
 
37
41
  # The nesting stack we're currently inside. Used to determine the fully qualified name of constants, but only
38
42
  # stored by unresolved aliases which need the original nesting to be lazily resolved
@@ -65,6 +69,11 @@ module RubyIndexer
65
69
  :on_constant_or_write_node_enter,
66
70
  :on_constant_and_write_node_enter,
67
71
  :on_constant_operator_write_node_enter,
72
+ :on_global_variable_and_write_node_enter,
73
+ :on_global_variable_operator_write_node_enter,
74
+ :on_global_variable_or_write_node_enter,
75
+ :on_global_variable_target_node_enter,
76
+ :on_global_variable_write_node_enter,
68
77
  :on_instance_variable_write_node_enter,
69
78
  :on_instance_variable_and_write_node_enter,
70
79
  :on_instance_variable_operator_write_node_enter,
@@ -106,10 +115,9 @@ module RubyIndexer
106
115
  entry = Entry::Class.new(
107
116
  nesting,
108
117
  @file_path,
109
- node.location,
110
- constant_path.location,
118
+ Location.from_prism_location(node.location, @code_units_cache),
119
+ Location.from_prism_location(constant_path.location, @code_units_cache),
111
120
  comments,
112
- @index.configuration.encoding,
113
121
  parent_class,
114
122
  )
115
123
 
@@ -136,10 +144,9 @@ module RubyIndexer
136
144
  entry = Entry::Module.new(
137
145
  actual_nesting(name),
138
146
  @file_path,
139
- node.location,
140
- constant_path.location,
147
+ Location.from_prism_location(node.location, @code_units_cache),
148
+ Location.from_prism_location(constant_path.location, @code_units_cache),
141
149
  comments,
142
- @index.configuration.encoding,
143
150
  )
144
151
 
145
152
  @owner_stack << entry
@@ -170,19 +177,17 @@ module RubyIndexer
170
177
  if existing_entries
171
178
  entry = T.must(existing_entries.first)
172
179
  entry.update_singleton_information(
173
- node.location,
174
- expression.location,
180
+ Location.from_prism_location(node.location, @code_units_cache),
181
+ Location.from_prism_location(expression.location, @code_units_cache),
175
182
  collect_comments(node),
176
- @index.configuration.encoding,
177
183
  )
178
184
  else
179
185
  entry = Entry::SingletonClass.new(
180
186
  real_nesting,
181
187
  @file_path,
182
- node.location,
183
- expression.location,
188
+ Location.from_prism_location(node.location, @code_units_cache),
189
+ Location.from_prism_location(expression.location, @code_units_cache),
184
190
  collect_comments(node),
185
- @index.configuration.encoding,
186
191
  nil,
187
192
  )
188
193
  @index.add(entry, skip_prefix_tree: true)
@@ -310,7 +315,7 @@ module RubyIndexer
310
315
  end
311
316
 
312
317
  @enhancements.each do |enhancement|
313
- enhancement.on_call_node(@index, @owner_stack.last, node, @file_path)
318
+ enhancement.on_call_node(@index, @owner_stack.last, node, @file_path, @code_units_cache)
314
319
  rescue StandardError => e
315
320
  @indexing_errors << "Indexing error in #{@file_path} with '#{enhancement.class.name}' enhancement: #{e.message}"
316
321
  end
@@ -340,10 +345,9 @@ module RubyIndexer
340
345
  @index.add(Entry::Method.new(
341
346
  method_name,
342
347
  @file_path,
343
- node.location,
344
- node.name_loc,
348
+ Location.from_prism_location(node.location, @code_units_cache),
349
+ Location.from_prism_location(node.name_loc, @code_units_cache),
345
350
  comments,
346
- @index.configuration.encoding,
347
351
  [Entry::Signature.new(list_params(node.parameters))],
348
352
  current_visibility,
349
353
  @owner_stack.last,
@@ -357,10 +361,9 @@ module RubyIndexer
357
361
  @index.add(Entry::Method.new(
358
362
  method_name,
359
363
  @file_path,
360
- node.location,
361
- node.name_loc,
364
+ Location.from_prism_location(node.location, @code_units_cache),
365
+ Location.from_prism_location(node.name_loc, @code_units_cache),
362
366
  comments,
363
- @index.configuration.encoding,
364
367
  [Entry::Signature.new(list_params(node.parameters))],
365
368
  current_visibility,
366
369
  singleton,
@@ -382,6 +385,31 @@ module RubyIndexer
382
385
  end
383
386
  end
384
387
 
388
+ sig { params(node: Prism::GlobalVariableAndWriteNode).void }
389
+ def on_global_variable_and_write_node_enter(node)
390
+ handle_global_variable(node, node.name_loc)
391
+ end
392
+
393
+ sig { params(node: Prism::GlobalVariableOperatorWriteNode).void }
394
+ def on_global_variable_operator_write_node_enter(node)
395
+ handle_global_variable(node, node.name_loc)
396
+ end
397
+
398
+ sig { params(node: Prism::GlobalVariableOrWriteNode).void }
399
+ def on_global_variable_or_write_node_enter(node)
400
+ handle_global_variable(node, node.name_loc)
401
+ end
402
+
403
+ sig { params(node: Prism::GlobalVariableTargetNode).void }
404
+ def on_global_variable_target_node_enter(node)
405
+ handle_global_variable(node, node.location)
406
+ end
407
+
408
+ sig { params(node: Prism::GlobalVariableWriteNode).void }
409
+ def on_global_variable_write_node_enter(node)
410
+ handle_global_variable(node, node.name_loc)
411
+ end
412
+
385
413
  sig { params(node: Prism::InstanceVariableWriteNode).void }
386
414
  def on_instance_variable_write_node_enter(node)
387
415
  handle_instance_variable(node, node.name_loc)
@@ -417,15 +445,38 @@ module RubyIndexer
417
445
  node.old_name.slice,
418
446
  @owner_stack.last,
419
447
  @file_path,
420
- node.new_name.location,
448
+ Location.from_prism_location(node.new_name.location, @code_units_cache),
421
449
  comments,
422
- @index.configuration.encoding,
423
450
  ),
424
451
  )
425
452
  end
426
453
 
427
454
  private
428
455
 
456
+ sig do
457
+ params(
458
+ node: T.any(
459
+ Prism::GlobalVariableAndWriteNode,
460
+ Prism::GlobalVariableOperatorWriteNode,
461
+ Prism::GlobalVariableOrWriteNode,
462
+ Prism::GlobalVariableTargetNode,
463
+ Prism::GlobalVariableWriteNode,
464
+ ),
465
+ loc: Prism::Location,
466
+ ).void
467
+ end
468
+ def handle_global_variable(node, loc)
469
+ name = node.name.to_s
470
+ comments = collect_comments(node)
471
+
472
+ @index.add(Entry::GlobalVariable.new(
473
+ name,
474
+ @file_path,
475
+ Location.from_prism_location(loc, @code_units_cache),
476
+ comments,
477
+ ))
478
+ end
479
+
429
480
  sig do
430
481
  params(
431
482
  node: T.any(
@@ -453,9 +504,8 @@ module RubyIndexer
453
504
  @index.add(Entry::InstanceVariable.new(
454
505
  name,
455
506
  @file_path,
456
- loc,
507
+ Location.from_prism_location(loc, @code_units_cache),
457
508
  collect_comments(node),
458
- @index.configuration.encoding,
459
509
  owner,
460
510
  ))
461
511
  end
@@ -518,9 +568,8 @@ module RubyIndexer
518
568
  old_name_value,
519
569
  @owner_stack.last,
520
570
  @file_path,
521
- new_name.location,
571
+ Location.from_prism_location(new_name.location, @code_units_cache),
522
572
  comments,
523
- @index.configuration.encoding,
524
573
  ),
525
574
  )
526
575
  end
@@ -555,9 +604,8 @@ module RubyIndexer
555
604
  @stack.dup,
556
605
  name,
557
606
  @file_path,
558
- node.location,
607
+ Location.from_prism_location(node.location, @code_units_cache),
559
608
  comments,
560
- @index.configuration.encoding,
561
609
  )
562
610
  when Prism::ConstantWriteNode, Prism::ConstantAndWriteNode, Prism::ConstantOrWriteNode,
563
611
  Prism::ConstantOperatorWriteNode
@@ -569,9 +617,8 @@ module RubyIndexer
569
617
  @stack.dup,
570
618
  name,
571
619
  @file_path,
572
- node.location,
620
+ Location.from_prism_location(node.location, @code_units_cache),
573
621
  comments,
574
- @index.configuration.encoding,
575
622
  )
576
623
  when Prism::ConstantPathWriteNode, Prism::ConstantPathOrWriteNode, Prism::ConstantPathOperatorWriteNode,
577
624
  Prism::ConstantPathAndWriteNode
@@ -581,12 +628,16 @@ module RubyIndexer
581
628
  @stack.dup,
582
629
  name,
583
630
  @file_path,
584
- node.location,
631
+ Location.from_prism_location(node.location, @code_units_cache),
585
632
  comments,
586
- @index.configuration.encoding,
587
633
  )
588
634
  else
589
- Entry::Constant.new(name, @file_path, node.location, comments, @index.configuration.encoding)
635
+ Entry::Constant.new(
636
+ name,
637
+ @file_path,
638
+ Location.from_prism_location(node.location, @code_units_cache),
639
+ comments,
640
+ )
590
641
  end,
591
642
  )
592
643
  end
@@ -652,9 +703,8 @@ module RubyIndexer
652
703
  @index.add(Entry::Accessor.new(
653
704
  name,
654
705
  @file_path,
655
- loc,
706
+ Location.from_prism_location(loc, @code_units_cache),
656
707
  comments,
657
- @index.configuration.encoding,
658
708
  current_visibility,
659
709
  @owner_stack.last,
660
710
  ))
@@ -665,9 +715,8 @@ module RubyIndexer
665
715
  @index.add(Entry::Accessor.new(
666
716
  "#{name}=",
667
717
  @file_path,
668
- loc,
718
+ Location.from_prism_location(loc, @code_units_cache),
669
719
  comments,
670
- @index.configuration.encoding,
671
720
  current_visibility,
672
721
  @owner_stack.last,
673
722
  ))
@@ -19,8 +19,12 @@ module RubyIndexer
19
19
  owner: T.nilable(Entry::Namespace),
20
20
  node: Prism::CallNode,
21
21
  file_path: String,
22
+ code_units_cache: T.any(
23
+ T.proc.params(arg0: Integer).returns(Integer),
24
+ Prism::CodeUnitsCache,
25
+ ),
22
26
  ).void
23
27
  end
24
- def on_call_node(index, owner, node, file_path); end
28
+ def on_call_node(index, owner, node, file_path, code_units_cache); end
25
29
  end
26
30
  end
@@ -31,30 +31,16 @@ module RubyIndexer
31
31
  params(
32
32
  name: String,
33
33
  file_path: String,
34
- location: T.any(Prism::Location, RubyIndexer::Location),
34
+ location: Location,
35
35
  comments: T.nilable(String),
36
- encoding: Encoding,
37
36
  ).void
38
37
  end
39
- def initialize(name, file_path, location, comments, encoding)
38
+ def initialize(name, file_path, location, comments)
40
39
  @name = name
41
40
  @file_path = file_path
42
41
  @comments = comments
43
42
  @visibility = T.let(Visibility::PUBLIC, Visibility)
44
-
45
- @location = T.let(
46
- if location.is_a?(Prism::Location)
47
- Location.new(
48
- location.start_line,
49
- location.end_line,
50
- location.start_code_units_column(encoding),
51
- location.end_code_units_column(encoding),
52
- )
53
- else
54
- location
55
- end,
56
- RubyIndexer::Location,
57
- )
43
+ @location = location
58
44
  end
59
45
 
60
46
  sig { returns(T::Boolean) }
@@ -152,32 +138,19 @@ module RubyIndexer
152
138
  params(
153
139
  nesting: T::Array[String],
154
140
  file_path: String,
155
- location: T.any(Prism::Location, RubyIndexer::Location),
156
- name_location: T.any(Prism::Location, Location),
141
+ location: Location,
142
+ name_location: Location,
157
143
  comments: T.nilable(String),
158
- encoding: Encoding,
159
144
  ).void
160
145
  end
161
- def initialize(nesting, file_path, location, name_location, comments, encoding) # rubocop:disable Metrics/ParameterLists
146
+ def initialize(nesting, file_path, location, name_location, comments)
162
147
  @name = T.let(nesting.join("::"), String)
163
148
  # The original nesting where this namespace was discovered
164
149
  @nesting = nesting
165
150
 
166
- super(@name, file_path, location, comments, encoding)
167
-
168
- @name_location = T.let(
169
- if name_location.is_a?(Prism::Location)
170
- Location.new(
171
- name_location.start_line,
172
- name_location.end_line,
173
- name_location.start_code_units_column(encoding),
174
- name_location.end_code_units_column(encoding),
175
- )
176
- else
177
- name_location
178
- end,
179
- RubyIndexer::Location,
180
- )
151
+ super(@name, file_path, location, comments)
152
+
153
+ @name_location = name_location
181
154
  end
182
155
 
183
156
  sig { returns(T::Array[String]) }
@@ -214,15 +187,14 @@ module RubyIndexer
214
187
  params(
215
188
  nesting: T::Array[String],
216
189
  file_path: String,
217
- location: T.any(Prism::Location, RubyIndexer::Location),
218
- name_location: T.any(Prism::Location, Location),
190
+ location: Location,
191
+ name_location: Location,
219
192
  comments: T.nilable(String),
220
- encoding: Encoding,
221
193
  parent_class: T.nilable(String),
222
194
  ).void
223
195
  end
224
- def initialize(nesting, file_path, location, name_location, comments, encoding, parent_class) # rubocop:disable Metrics/ParameterLists
225
- super(nesting, file_path, location, name_location, comments, encoding)
196
+ def initialize(nesting, file_path, location, name_location, comments, parent_class) # rubocop:disable Metrics/ParameterLists
197
+ super(nesting, file_path, location, name_location, comments)
226
198
  @parent_class = parent_class
227
199
  end
228
200
 
@@ -237,26 +209,14 @@ module RubyIndexer
237
209
 
238
210
  sig do
239
211
  params(
240
- location: Prism::Location,
241
- name_location: Prism::Location,
212
+ location: Location,
213
+ name_location: Location,
242
214
  comments: T.nilable(String),
243
- encoding: Encoding,
244
215
  ).void
245
216
  end
246
- def update_singleton_information(location, name_location, comments, encoding)
247
- # Create a new RubyIndexer::Location object from the Prism location
248
- @location = Location.new(
249
- location.start_line,
250
- location.end_line,
251
- location.start_code_units_column(encoding),
252
- location.end_code_units_column(encoding),
253
- )
254
- @name_location = Location.new(
255
- name_location.start_line,
256
- name_location.end_line,
257
- name_location.start_code_units_column(encoding),
258
- name_location.end_code_units_column(encoding),
259
- )
217
+ def update_singleton_information(location, name_location, comments)
218
+ @location = location
219
+ @name_location = name_location
260
220
  (@comments ||= +"") << comments if comments
261
221
  end
262
222
  end
@@ -373,15 +333,14 @@ module RubyIndexer
373
333
  params(
374
334
  name: String,
375
335
  file_path: String,
376
- location: T.any(Prism::Location, RubyIndexer::Location),
336
+ location: Location,
377
337
  comments: T.nilable(String),
378
- encoding: Encoding,
379
338
  visibility: Visibility,
380
339
  owner: T.nilable(Entry::Namespace),
381
340
  ).void
382
341
  end
383
- def initialize(name, file_path, location, comments, encoding, visibility, owner) # rubocop:disable Metrics/ParameterLists
384
- super(name, file_path, location, comments, encoding)
342
+ def initialize(name, file_path, location, comments, visibility, owner) # rubocop:disable Metrics/ParameterLists
343
+ super(name, file_path, location, comments)
385
344
  @visibility = visibility
386
345
  @owner = owner
387
346
  end
@@ -441,31 +400,18 @@ module RubyIndexer
441
400
  params(
442
401
  name: String,
443
402
  file_path: String,
444
- location: T.any(Prism::Location, RubyIndexer::Location),
445
- name_location: T.any(Prism::Location, Location),
403
+ location: Location,
404
+ name_location: Location,
446
405
  comments: T.nilable(String),
447
- encoding: Encoding,
448
406
  signatures: T::Array[Signature],
449
407
  visibility: Visibility,
450
408
  owner: T.nilable(Entry::Namespace),
451
409
  ).void
452
410
  end
453
- def initialize(name, file_path, location, name_location, comments, encoding, signatures, visibility, owner) # rubocop:disable Metrics/ParameterLists
454
- super(name, file_path, location, comments, encoding, visibility, owner)
411
+ def initialize(name, file_path, location, name_location, comments, signatures, visibility, owner) # rubocop:disable Metrics/ParameterLists
412
+ super(name, file_path, location, comments, visibility, owner)
455
413
  @signatures = signatures
456
- @name_location = T.let(
457
- if name_location.is_a?(Prism::Location)
458
- Location.new(
459
- name_location.start_line,
460
- name_location.end_line,
461
- name_location.start_code_units_column(encoding),
462
- name_location.end_code_units_column(encoding),
463
- )
464
- else
465
- name_location
466
- end,
467
- RubyIndexer::Location,
468
- )
414
+ @name_location = name_location
469
415
  end
470
416
  end
471
417
 
@@ -494,13 +440,12 @@ module RubyIndexer
494
440
  nesting: T::Array[String],
495
441
  name: String,
496
442
  file_path: String,
497
- location: T.any(Prism::Location, RubyIndexer::Location),
443
+ location: Location,
498
444
  comments: T.nilable(String),
499
- encoding: Encoding,
500
445
  ).void
501
446
  end
502
- def initialize(target, nesting, name, file_path, location, comments, encoding) # rubocop:disable Metrics/ParameterLists
503
- super(name, file_path, location, comments, encoding)
447
+ def initialize(target, nesting, name, file_path, location, comments) # rubocop:disable Metrics/ParameterLists
448
+ super(name, file_path, location, comments)
504
449
 
505
450
  @target = target
506
451
  @nesting = nesting
@@ -514,14 +459,13 @@ module RubyIndexer
514
459
  sig { returns(String) }
515
460
  attr_reader :target
516
461
 
517
- sig { params(target: String, unresolved_alias: UnresolvedConstantAlias, encoding: Encoding).void }
518
- def initialize(target, unresolved_alias, encoding)
462
+ sig { params(target: String, unresolved_alias: UnresolvedConstantAlias).void }
463
+ def initialize(target, unresolved_alias)
519
464
  super(
520
465
  unresolved_alias.name,
521
466
  unresolved_alias.file_path,
522
467
  unresolved_alias.location,
523
468
  unresolved_alias.comments,
524
- encoding
525
469
  )
526
470
 
527
471
  @visibility = unresolved_alias.visibility
@@ -541,14 +485,13 @@ module RubyIndexer
541
485
  params(
542
486
  name: String,
543
487
  file_path: String,
544
- location: T.any(Prism::Location, RubyIndexer::Location),
488
+ location: Location,
545
489
  comments: T.nilable(String),
546
- encoding: Encoding,
547
490
  owner: T.nilable(Entry::Namespace),
548
491
  ).void
549
492
  end
550
- def initialize(name, file_path, location, comments, encoding, owner) # rubocop:disable Metrics/ParameterLists
551
- super(name, file_path, location, comments, encoding)
493
+ def initialize(name, file_path, location, comments, owner)
494
+ super(name, file_path, location, comments)
552
495
  @owner = owner
553
496
  end
554
497
  end
@@ -571,13 +514,12 @@ module RubyIndexer
571
514
  old_name: String,
572
515
  owner: T.nilable(Entry::Namespace),
573
516
  file_path: String,
574
- location: T.any(Prism::Location, RubyIndexer::Location),
517
+ location: Location,
575
518
  comments: T.nilable(String),
576
- encoding: Encoding,
577
519
  ).void
578
520
  end
579
- def initialize(new_name, old_name, owner, file_path, location, comments, encoding) # rubocop:disable Metrics/ParameterLists
580
- super(new_name, file_path, location, comments, encoding)
521
+ def initialize(new_name, old_name, owner, file_path, location, comments) # rubocop:disable Metrics/ParameterLists
522
+ super(new_name, file_path, location, comments)
581
523
 
582
524
  @new_name = new_name
583
525
  @old_name = old_name
@@ -596,9 +538,9 @@ module RubyIndexer
596
538
  attr_reader :owner
597
539
 
598
540
  sig do
599
- params(target: T.any(Member, MethodAlias), unresolved_alias: UnresolvedMethodAlias, encoding: Encoding).void
541
+ params(target: T.any(Member, MethodAlias), unresolved_alias: UnresolvedMethodAlias).void
600
542
  end
601
- def initialize(target, unresolved_alias, encoding)
543
+ def initialize(target, unresolved_alias)
602
544
  full_comments = +"Alias for #{target.name}\n"
603
545
  full_comments << "#{unresolved_alias.comments}\n"
604
546
  full_comments << target.comments
@@ -608,7 +550,6 @@ module RubyIndexer
608
550
  unresolved_alias.file_path,
609
551
  unresolved_alias.location,
610
552
  full_comments,
611
- encoding
612
553
  )
613
554
 
614
555
  @target = target
@@ -665,7 +665,6 @@ module RubyIndexer
665
665
  attached_ancestor.location,
666
666
  attached_ancestor.name_location,
667
667
  nil,
668
- @configuration.encoding,
669
668
  nil,
670
669
  )
671
670
  add(singleton, skip_prefix_tree: true)
@@ -859,7 +858,7 @@ module RubyIndexer
859
858
  return entry unless target
860
859
 
861
860
  target_name = T.must(target.first).name
862
- resolved_alias = Entry::ConstantAlias.new(target_name, entry, @configuration.encoding)
861
+ resolved_alias = Entry::ConstantAlias.new(target_name, entry)
863
862
 
864
863
  # Replace the UnresolvedAlias by a resolved one so that we don't have to do this again later
865
864
  original_entries = T.must(@entries[alias_name])
@@ -1050,7 +1049,7 @@ module RubyIndexer
1050
1049
  target_method_entries = resolve_method(entry.old_name, receiver_name, seen_names)
1051
1050
  return entry unless target_method_entries
1052
1051
 
1053
- resolved_alias = Entry::MethodAlias.new(T.must(target_method_entries.first), entry, @configuration.encoding)
1052
+ resolved_alias = Entry::MethodAlias.new(T.must(target_method_entries.first), entry)
1054
1053
  original_entries = T.must(@entries[new_name])
1055
1054
  original_entries.delete(entry)
1056
1055
  original_entries << resolved_alias
@@ -5,6 +5,28 @@ module RubyIndexer
5
5
  class Location
6
6
  extend T::Sig
7
7
 
8
+ class << self
9
+ extend T::Sig
10
+
11
+ sig do
12
+ params(
13
+ prism_location: Prism::Location,
14
+ code_units_cache: T.any(
15
+ T.proc.params(arg0: Integer).returns(Integer),
16
+ Prism::CodeUnitsCache,
17
+ ),
18
+ ).returns(T.attached_class)
19
+ end
20
+ def from_prism_location(prism_location, code_units_cache)
21
+ new(
22
+ prism_location.start_line,
23
+ prism_location.end_line,
24
+ prism_location.cached_start_code_units_column(code_units_cache),
25
+ prism_location.cached_end_code_units_column(code_units_cache),
26
+ )
27
+ end
28
+ end
29
+
8
30
  sig { returns(Integer) }
9
31
  attr_reader :start_line, :end_line, :start_column, :end_column
10
32
 
@@ -61,9 +61,9 @@ module RubyIndexer
61
61
  comments = comments_to_string(declaration)
62
62
  entry = if declaration.is_a?(RBS::AST::Declarations::Class)
63
63
  parent_class = declaration.super_class&.name&.name&.to_s
64
- Entry::Class.new(nesting, file_path, location, location, comments, @index.configuration.encoding, parent_class)
64
+ Entry::Class.new(nesting, file_path, location, location, comments, parent_class)
65
65
  else
66
- Entry::Module.new(nesting, file_path, location, location, comments, @index.configuration.encoding)
66
+ Entry::Module.new(nesting, file_path, location, location, comments)
67
67
  end
68
68
  add_declaration_mixins_to_entry(declaration, entry)
69
69
  @index.add(entry)
@@ -136,7 +136,6 @@ module RubyIndexer
136
136
  location,
137
137
  location,
138
138
  comments,
139
- @index.configuration.encoding,
140
139
  signatures,
141
140
  visibility,
142
141
  real_owner,
@@ -269,7 +268,6 @@ module RubyIndexer
269
268
  file_path,
270
269
  to_ruby_indexer_location(declaration.location),
271
270
  comments_to_string(declaration),
272
- @index.configuration.encoding,
273
271
  ))
274
272
  end
275
273
 
@@ -279,14 +277,12 @@ module RubyIndexer
279
277
  file_path = pathname.to_s
280
278
  location = to_ruby_indexer_location(declaration.location)
281
279
  comments = comments_to_string(declaration)
282
- encoding = @index.configuration.encoding
283
280
 
284
281
  @index.add(Entry::GlobalVariable.new(
285
282
  name,
286
283
  file_path,
287
284
  location,
288
285
  comments,
289
- encoding,
290
286
  ))
291
287
  end
292
288
 
@@ -302,7 +298,6 @@ module RubyIndexer
302
298
  file_path,
303
299
  to_ruby_indexer_location(member.location),
304
300
  comments,
305
- @index.configuration.encoding,
306
301
  )
307
302
 
308
303
  @index.add(entry)