ruby-lsp 0.23.11 → 0.26.6

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 (121) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/VERSION +1 -1
  4. data/exe/ruby-lsp +10 -4
  5. data/exe/ruby-lsp-check +0 -4
  6. data/exe/ruby-lsp-launcher +46 -22
  7. data/exe/ruby-lsp-test-exec +6 -0
  8. data/lib/rubocop/cop/ruby_lsp/use_language_server_aliases.rb +1 -2
  9. data/lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb +3 -6
  10. data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +85 -118
  11. data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +159 -183
  12. data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +10 -14
  13. data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +130 -253
  14. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +189 -285
  15. data/lib/ruby_indexer/lib/ruby_indexer/location.rb +4 -27
  16. data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +23 -27
  17. data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +31 -59
  18. data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +58 -68
  19. data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +17 -19
  20. data/lib/ruby_indexer/lib/ruby_indexer/visibility_scope.rb +7 -11
  21. data/lib/ruby_lsp/addon.rb +88 -86
  22. data/lib/ruby_lsp/base_server.rb +79 -65
  23. data/lib/ruby_lsp/client_capabilities.rb +16 -13
  24. data/lib/ruby_lsp/document.rb +205 -104
  25. data/lib/ruby_lsp/erb_document.rb +45 -47
  26. data/lib/ruby_lsp/global_state.rb +134 -86
  27. data/lib/ruby_lsp/internal.rb +8 -3
  28. data/lib/ruby_lsp/listeners/code_lens.rb +82 -89
  29. data/lib/ruby_lsp/listeners/completion.rb +81 -76
  30. data/lib/ruby_lsp/listeners/definition.rb +78 -72
  31. data/lib/ruby_lsp/listeners/document_highlight.rb +149 -151
  32. data/lib/ruby_lsp/listeners/document_link.rb +93 -86
  33. data/lib/ruby_lsp/listeners/document_symbol.rb +38 -52
  34. data/lib/ruby_lsp/listeners/folding_ranges.rb +40 -43
  35. data/lib/ruby_lsp/listeners/hover.rb +109 -117
  36. data/lib/ruby_lsp/listeners/inlay_hints.rb +8 -13
  37. data/lib/ruby_lsp/listeners/semantic_highlighting.rb +54 -56
  38. data/lib/ruby_lsp/listeners/signature_help.rb +12 -27
  39. data/lib/ruby_lsp/listeners/spec_style.rb +231 -0
  40. data/lib/ruby_lsp/listeners/test_discovery.rb +107 -0
  41. data/lib/ruby_lsp/listeners/test_style.rb +207 -95
  42. data/lib/ruby_lsp/node_context.rb +12 -39
  43. data/lib/ruby_lsp/rbs_document.rb +10 -11
  44. data/lib/ruby_lsp/requests/code_action_resolve.rb +92 -66
  45. data/lib/ruby_lsp/requests/code_actions.rb +34 -31
  46. data/lib/ruby_lsp/requests/code_lens.rb +31 -21
  47. data/lib/ruby_lsp/requests/completion.rb +8 -21
  48. data/lib/ruby_lsp/requests/completion_resolve.rb +14 -12
  49. data/lib/ruby_lsp/requests/definition.rb +8 -20
  50. data/lib/ruby_lsp/requests/diagnostics.rb +8 -11
  51. data/lib/ruby_lsp/requests/discover_tests.rb +20 -7
  52. data/lib/ruby_lsp/requests/document_highlight.rb +6 -16
  53. data/lib/ruby_lsp/requests/document_link.rb +6 -17
  54. data/lib/ruby_lsp/requests/document_symbol.rb +5 -8
  55. data/lib/ruby_lsp/requests/folding_ranges.rb +7 -15
  56. data/lib/ruby_lsp/requests/formatting.rb +6 -9
  57. data/lib/ruby_lsp/requests/go_to_relevant_file.rb +139 -0
  58. data/lib/ruby_lsp/requests/hover.rb +12 -25
  59. data/lib/ruby_lsp/requests/inlay_hints.rb +8 -19
  60. data/lib/ruby_lsp/requests/on_type_formatting.rb +32 -40
  61. data/lib/ruby_lsp/requests/prepare_rename.rb +5 -10
  62. data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +5 -15
  63. data/lib/ruby_lsp/requests/range_formatting.rb +5 -6
  64. data/lib/ruby_lsp/requests/references.rb +17 -57
  65. data/lib/ruby_lsp/requests/rename.rb +27 -51
  66. data/lib/ruby_lsp/requests/request.rb +13 -25
  67. data/lib/ruby_lsp/requests/selection_ranges.rb +7 -7
  68. data/lib/ruby_lsp/requests/semantic_highlighting.rb +16 -35
  69. data/lib/ruby_lsp/requests/show_syntax_tree.rb +7 -8
  70. data/lib/ruby_lsp/requests/signature_help.rb +9 -27
  71. data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
  72. data/lib/ruby_lsp/requests/support/common.rb +23 -61
  73. data/lib/ruby_lsp/requests/support/formatter.rb +16 -15
  74. data/lib/ruby_lsp/requests/support/package_url.rb +414 -0
  75. data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +27 -35
  76. data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +13 -16
  77. data/lib/ruby_lsp/requests/support/rubocop_runner.rb +34 -36
  78. data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
  79. data/lib/ruby_lsp/requests/support/sorbet.rb +29 -38
  80. data/lib/ruby_lsp/requests/support/source_uri.rb +22 -33
  81. data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +12 -19
  82. data/lib/ruby_lsp/requests/support/test_item.rb +16 -14
  83. data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +5 -6
  84. data/lib/ruby_lsp/requests/workspace_symbol.rb +24 -16
  85. data/lib/ruby_lsp/response_builders/collection_response_builder.rb +6 -9
  86. data/lib/ruby_lsp/response_builders/document_symbol.rb +15 -21
  87. data/lib/ruby_lsp/response_builders/hover.rb +12 -18
  88. data/lib/ruby_lsp/response_builders/response_builder.rb +6 -7
  89. data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +62 -91
  90. data/lib/ruby_lsp/response_builders/signature_help.rb +6 -8
  91. data/lib/ruby_lsp/response_builders/test_collection.rb +35 -13
  92. data/lib/ruby_lsp/ruby_document.rb +32 -98
  93. data/lib/ruby_lsp/scope.rb +7 -11
  94. data/lib/ruby_lsp/scripts/compose_bundle.rb +7 -5
  95. data/lib/ruby_lsp/server.rb +305 -198
  96. data/lib/ruby_lsp/setup_bundler.rb +160 -97
  97. data/lib/ruby_lsp/static_docs.rb +12 -7
  98. data/lib/ruby_lsp/store.rb +21 -49
  99. data/lib/ruby_lsp/test_helper.rb +3 -16
  100. data/lib/ruby_lsp/test_reporters/lsp_reporter.rb +241 -0
  101. data/lib/ruby_lsp/test_reporters/minitest_reporter.rb +145 -0
  102. data/lib/ruby_lsp/test_reporters/test_unit_reporter.rb +92 -0
  103. data/lib/ruby_lsp/type_inferrer.rb +13 -14
  104. data/lib/ruby_lsp/utils.rb +138 -93
  105. data/static_docs/break.md +103 -0
  106. metadata +15 -34
  107. data/lib/ruby_indexer/test/class_variables_test.rb +0 -140
  108. data/lib/ruby_indexer/test/classes_and_modules_test.rb +0 -745
  109. data/lib/ruby_indexer/test/configuration_test.rb +0 -239
  110. data/lib/ruby_indexer/test/constant_test.rb +0 -402
  111. data/lib/ruby_indexer/test/enhancements_test.rb +0 -325
  112. data/lib/ruby_indexer/test/global_variable_test.rb +0 -49
  113. data/lib/ruby_indexer/test/index_test.rb +0 -2186
  114. data/lib/ruby_indexer/test/instance_variables_test.rb +0 -240
  115. data/lib/ruby_indexer/test/method_test.rb +0 -947
  116. data/lib/ruby_indexer/test/prefix_tree_test.rb +0 -150
  117. data/lib/ruby_indexer/test/rbs_indexer_test.rb +0 -386
  118. data/lib/ruby_indexer/test/reference_finder_test.rb +0 -330
  119. data/lib/ruby_indexer/test/test_case.rb +0 -51
  120. data/lib/ruby_indexer/test/uri_test.rb +0 -72
  121. data/lib/ruby_lsp/load_sorbet.rb +0 -62
@@ -4,30 +4,16 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class Definition
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
9
  MAX_NUMBER_OF_DEFINITION_CANDIDATES_WITHOUT_RECEIVER = 10
11
10
 
12
- sig do
13
- params(
14
- response_builder: ResponseBuilders::CollectionResponseBuilder[T.any(
15
- Interface::Location,
16
- Interface::LocationLink,
17
- )],
18
- global_state: GlobalState,
19
- language_id: Document::LanguageId,
20
- uri: URI::Generic,
21
- node_context: NodeContext,
22
- dispatcher: Prism::Dispatcher,
23
- sorbet_level: RubyDocument::SorbetLevel,
24
- ).void
25
- end
11
+ #: (ResponseBuilders::CollectionResponseBuilder[(Interface::Location | Interface::LocationLink)] response_builder, GlobalState global_state, Symbol language_id, URI::Generic uri, NodeContext node_context, Prism::Dispatcher dispatcher, SorbetLevel sorbet_level) -> void
26
12
  def initialize(response_builder, global_state, language_id, uri, node_context, dispatcher, sorbet_level) # rubocop:disable Metrics/ParameterLists
27
13
  @response_builder = response_builder
28
14
  @global_state = global_state
29
- @index = T.let(global_state.index, RubyIndexer::Index)
30
- @type_inferrer = T.let(global_state.type_inferrer, TypeInferrer)
15
+ @index = global_state.index #: RubyIndexer::Index
16
+ @type_inferrer = global_state.type_inferrer #: TypeInferrer
31
17
  @language_id = language_id
32
18
  @uri = uri
33
19
  @node_context = node_context
@@ -64,10 +50,10 @@ module RubyLsp
64
50
  )
65
51
  end
66
52
 
67
- sig { params(node: Prism::CallNode).void }
53
+ #: (Prism::CallNode node) -> void
68
54
  def on_call_node_enter(node)
69
55
  # Sorbet can handle go to definition for methods invoked on self on typed true or higher
70
- return if sorbet_level_true_or_higher?(@sorbet_level) && self_receiver?(node)
56
+ return if @sorbet_level.true_or_higher? && self_receiver?(node)
71
57
 
72
58
  message = node.message
73
59
  return unless message
@@ -76,36 +62,38 @@ module RubyLsp
76
62
 
77
63
  # Until we can properly infer the receiver type in erb files (maybe with ruby-lsp-rails),
78
64
  # treating method calls' type as `nil` will allow users to get some completion support first
79
- if @language_id == Document::LanguageId::ERB && inferrer_receiver_type&.name == "Object"
65
+ if @language_id == :erb && inferrer_receiver_type&.name == "Object"
80
66
  inferrer_receiver_type = nil
81
67
  end
82
68
 
83
69
  handle_method_definition(message, inferrer_receiver_type)
84
70
  end
85
71
 
86
- sig { params(node: Prism::StringNode).void }
72
+ #: (Prism::StringNode node) -> void
87
73
  def on_string_node_enter(node)
88
- enclosing_call = @node_context.call_node
89
- return unless enclosing_call
90
-
91
- name = enclosing_call.name
92
- return unless name == :require || name == :require_relative
93
-
94
- handle_require_definition(node, name)
74
+ with_enclosing_call(node) do |enclosing_call, name|
75
+ case name
76
+ when :require, :require_relative
77
+ handle_require_definition(node, name)
78
+ when :send, :public_send
79
+ handle_send_or_public_send_definition(enclosing_call, node) { node.content }
80
+ end
81
+ end
95
82
  end
96
83
 
97
- sig { params(node: Prism::SymbolNode).void }
84
+ #: (Prism::SymbolNode node) -> void
98
85
  def on_symbol_node_enter(node)
99
- enclosing_call = @node_context.call_node
100
- return unless enclosing_call
101
-
102
- name = enclosing_call.name
103
- return unless name == :autoload
104
-
105
- handle_autoload_definition(enclosing_call)
86
+ with_enclosing_call(node) do |enclosing_call, name|
87
+ case name
88
+ when :autoload
89
+ handle_autoload_definition(enclosing_call)
90
+ when :send, :public_send
91
+ handle_send_or_public_send_definition(enclosing_call, node) { node.unescaped }
92
+ end
93
+ end
106
94
  end
107
95
 
108
- sig { params(node: Prism::BlockArgumentNode).void }
96
+ #: (Prism::BlockArgumentNode node) -> void
109
97
  def on_block_argument_node_enter(node)
110
98
  expression = node.expression
111
99
  return unless expression.is_a?(Prism::SymbolNode)
@@ -116,7 +104,7 @@ module RubyLsp
116
104
  handle_method_definition(value, nil)
117
105
  end
118
106
 
119
- sig { params(node: Prism::ConstantPathNode).void }
107
+ #: (Prism::ConstantPathNode node) -> void
120
108
  def on_constant_path_node_enter(node)
121
109
  name = RubyIndexer::Index.constant_name(node)
122
110
  return if name.nil?
@@ -124,7 +112,7 @@ module RubyLsp
124
112
  find_in_index(name)
125
113
  end
126
114
 
127
- sig { params(node: Prism::ConstantReadNode).void }
115
+ #: (Prism::ConstantReadNode node) -> void
128
116
  def on_constant_read_node_enter(node)
129
117
  name = RubyIndexer::Index.constant_name(node)
130
118
  return if name.nil?
@@ -132,112 +120,130 @@ module RubyLsp
132
120
  find_in_index(name)
133
121
  end
134
122
 
135
- sig { params(node: Prism::GlobalVariableAndWriteNode).void }
123
+ #: (Prism::GlobalVariableAndWriteNode node) -> void
136
124
  def on_global_variable_and_write_node_enter(node)
137
125
  handle_global_variable_definition(node.name.to_s)
138
126
  end
139
127
 
140
- sig { params(node: Prism::GlobalVariableOperatorWriteNode).void }
128
+ #: (Prism::GlobalVariableOperatorWriteNode node) -> void
141
129
  def on_global_variable_operator_write_node_enter(node)
142
130
  handle_global_variable_definition(node.name.to_s)
143
131
  end
144
132
 
145
- sig { params(node: Prism::GlobalVariableOrWriteNode).void }
133
+ #: (Prism::GlobalVariableOrWriteNode node) -> void
146
134
  def on_global_variable_or_write_node_enter(node)
147
135
  handle_global_variable_definition(node.name.to_s)
148
136
  end
149
137
 
150
- sig { params(node: Prism::GlobalVariableReadNode).void }
138
+ #: (Prism::GlobalVariableReadNode node) -> void
151
139
  def on_global_variable_read_node_enter(node)
152
140
  handle_global_variable_definition(node.name.to_s)
153
141
  end
154
142
 
155
- sig { params(node: Prism::GlobalVariableTargetNode).void }
143
+ #: (Prism::GlobalVariableTargetNode node) -> void
156
144
  def on_global_variable_target_node_enter(node)
157
145
  handle_global_variable_definition(node.name.to_s)
158
146
  end
159
147
 
160
- sig { params(node: Prism::GlobalVariableWriteNode).void }
148
+ #: (Prism::GlobalVariableWriteNode node) -> void
161
149
  def on_global_variable_write_node_enter(node)
162
150
  handle_global_variable_definition(node.name.to_s)
163
151
  end
164
152
 
165
- sig { params(node: Prism::InstanceVariableReadNode).void }
153
+ #: (Prism::InstanceVariableReadNode node) -> void
166
154
  def on_instance_variable_read_node_enter(node)
167
155
  handle_instance_variable_definition(node.name.to_s)
168
156
  end
169
157
 
170
- sig { params(node: Prism::InstanceVariableWriteNode).void }
158
+ #: (Prism::InstanceVariableWriteNode node) -> void
171
159
  def on_instance_variable_write_node_enter(node)
172
160
  handle_instance_variable_definition(node.name.to_s)
173
161
  end
174
162
 
175
- sig { params(node: Prism::InstanceVariableAndWriteNode).void }
163
+ #: (Prism::InstanceVariableAndWriteNode node) -> void
176
164
  def on_instance_variable_and_write_node_enter(node)
177
165
  handle_instance_variable_definition(node.name.to_s)
178
166
  end
179
167
 
180
- sig { params(node: Prism::InstanceVariableOperatorWriteNode).void }
168
+ #: (Prism::InstanceVariableOperatorWriteNode node) -> void
181
169
  def on_instance_variable_operator_write_node_enter(node)
182
170
  handle_instance_variable_definition(node.name.to_s)
183
171
  end
184
172
 
185
- sig { params(node: Prism::InstanceVariableOrWriteNode).void }
173
+ #: (Prism::InstanceVariableOrWriteNode node) -> void
186
174
  def on_instance_variable_or_write_node_enter(node)
187
175
  handle_instance_variable_definition(node.name.to_s)
188
176
  end
189
177
 
190
- sig { params(node: Prism::InstanceVariableTargetNode).void }
178
+ #: (Prism::InstanceVariableTargetNode node) -> void
191
179
  def on_instance_variable_target_node_enter(node)
192
180
  handle_instance_variable_definition(node.name.to_s)
193
181
  end
194
182
 
195
- sig { params(node: Prism::SuperNode).void }
183
+ #: (Prism::SuperNode node) -> void
196
184
  def on_super_node_enter(node)
197
185
  handle_super_node_definition
198
186
  end
199
187
 
200
- sig { params(node: Prism::ForwardingSuperNode).void }
188
+ #: (Prism::ForwardingSuperNode node) -> void
201
189
  def on_forwarding_super_node_enter(node)
202
190
  handle_super_node_definition
203
191
  end
204
192
 
205
- sig { params(node: Prism::ClassVariableAndWriteNode).void }
193
+ #: (Prism::ClassVariableAndWriteNode node) -> void
206
194
  def on_class_variable_and_write_node_enter(node)
207
195
  handle_class_variable_definition(node.name.to_s)
208
196
  end
209
197
 
210
- sig { params(node: Prism::ClassVariableOperatorWriteNode).void }
198
+ #: (Prism::ClassVariableOperatorWriteNode node) -> void
211
199
  def on_class_variable_operator_write_node_enter(node)
212
200
  handle_class_variable_definition(node.name.to_s)
213
201
  end
214
202
 
215
- sig { params(node: Prism::ClassVariableOrWriteNode).void }
203
+ #: (Prism::ClassVariableOrWriteNode node) -> void
216
204
  def on_class_variable_or_write_node_enter(node)
217
205
  handle_class_variable_definition(node.name.to_s)
218
206
  end
219
207
 
220
- sig { params(node: Prism::ClassVariableTargetNode).void }
208
+ #: (Prism::ClassVariableTargetNode node) -> void
221
209
  def on_class_variable_target_node_enter(node)
222
210
  handle_class_variable_definition(node.name.to_s)
223
211
  end
224
212
 
225
- sig { params(node: Prism::ClassVariableReadNode).void }
213
+ #: (Prism::ClassVariableReadNode node) -> void
226
214
  def on_class_variable_read_node_enter(node)
227
215
  handle_class_variable_definition(node.name.to_s)
228
216
  end
229
217
 
230
- sig { params(node: Prism::ClassVariableWriteNode).void }
218
+ #: (Prism::ClassVariableWriteNode node) -> void
231
219
  def on_class_variable_write_node_enter(node)
232
220
  handle_class_variable_definition(node.name.to_s)
233
221
  end
234
222
 
235
223
  private
236
224
 
237
- sig { void }
225
+ #: (Prism::Node node) { (Prism::CallNode, Symbol) -> void } -> void
226
+ def with_enclosing_call(node, &block)
227
+ enclosing_call = @node_context.call_node
228
+ return unless enclosing_call
229
+
230
+ block.call(enclosing_call, enclosing_call.name)
231
+ end
232
+
233
+ #: (Prism::CallNode enclosing_call, Prism::Node node) { -> String } -> void
234
+ def handle_send_or_public_send_definition(enclosing_call, node, &block)
235
+ first_argument = enclosing_call.arguments&.arguments&.first
236
+ return unless first_argument.eql?(node)
237
+
238
+ method_name = block.call
239
+
240
+ handle_method_definition(method_name, nil)
241
+ end
242
+
243
+ #: -> void
238
244
  def handle_super_node_definition
239
245
  # Sorbet can handle super hover on typed true or higher
240
- return if sorbet_level_true_or_higher?(@sorbet_level)
246
+ return if @sorbet_level.true_or_higher?
241
247
 
242
248
  surrounding_method = @node_context.surrounding_method
243
249
  return unless surrounding_method
@@ -249,7 +255,7 @@ module RubyLsp
249
255
  )
250
256
  end
251
257
 
252
- sig { params(name: String).void }
258
+ #: (String name) -> void
253
259
  def handle_global_variable_definition(name)
254
260
  entries = @index[name]
255
261
 
@@ -268,7 +274,7 @@ module RubyLsp
268
274
  end
269
275
  end
270
276
 
271
- sig { params(name: String).void }
277
+ #: (String name) -> void
272
278
  def handle_class_variable_definition(name)
273
279
  type = @type_inferrer.infer_receiver_type(@node_context)
274
280
  return unless type
@@ -286,11 +292,11 @@ module RubyLsp
286
292
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
287
293
  end
288
294
 
289
- sig { params(name: String).void }
295
+ #: (String name) -> void
290
296
  def handle_instance_variable_definition(name)
291
297
  # Sorbet enforces that all instance variables be declared on typed strict or higher, which means it will be able
292
298
  # to provide all features for them
293
- return if @sorbet_level == RubyDocument::SorbetLevel::Strict
299
+ return if @sorbet_level.strict?
294
300
 
295
301
  type = @type_inferrer.infer_receiver_type(@node_context)
296
302
  return unless type
@@ -313,7 +319,7 @@ module RubyLsp
313
319
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
314
320
  end
315
321
 
316
- sig { params(message: String, receiver_type: T.nilable(TypeInferrer::Type), inherited_only: T::Boolean).void }
322
+ #: (String message, TypeInferrer::Type? receiver_type, ?inherited_only: bool) -> void
317
323
  def handle_method_definition(message, receiver_type, inherited_only: false)
318
324
  methods = if receiver_type
319
325
  @index.resolve_method(message, receiver_type.name, inherited_only: inherited_only)
@@ -331,7 +337,7 @@ module RubyLsp
331
337
  methods.each do |target_method|
332
338
  uri = target_method.uri
333
339
  full_path = uri.full_path
334
- next if sorbet_level_true_or_higher?(@sorbet_level) && (!full_path || not_in_dependencies?(full_path))
340
+ next if @sorbet_level.true_or_higher? && (!full_path || not_in_dependencies?(full_path))
335
341
 
336
342
  @response_builder << Interface::LocationLink.new(
337
343
  target_uri: uri.to_s,
@@ -341,7 +347,7 @@ module RubyLsp
341
347
  end
342
348
  end
343
349
 
344
- sig { params(node: Prism::StringNode, message: Symbol).void }
350
+ #: (Prism::StringNode node, Symbol message) -> void
345
351
  def handle_require_definition(node, message)
346
352
  case message
347
353
  when :require
@@ -378,7 +384,7 @@ module RubyLsp
378
384
  end
379
385
  end
380
386
 
381
- sig { params(node: Prism::CallNode).void }
387
+ #: (Prism::CallNode node) -> void
382
388
  def handle_autoload_definition(node)
383
389
  argument = node.arguments&.arguments&.first
384
390
  return unless argument.is_a?(Prism::SymbolNode)
@@ -389,14 +395,14 @@ module RubyLsp
389
395
  find_in_index(constant_name)
390
396
  end
391
397
 
392
- sig { params(value: String).void }
398
+ #: (String value) -> void
393
399
  def find_in_index(value)
394
400
  entries = @index.resolve(value, @node_context.nesting)
395
401
  return unless entries
396
402
 
397
403
  # We should only allow jumping to the definition of private constants if the constant is defined in the same
398
404
  # namespace as the reference
399
- first_entry = T.must(entries.first)
405
+ first_entry = entries.first #: as !nil
400
406
  return if first_entry.private? && first_entry.name != "#{@node_context.fully_qualified_name}::#{value}"
401
407
 
402
408
  entries.each do |entry|
@@ -406,7 +412,7 @@ module RubyLsp
406
412
  uri = entry.uri
407
413
  full_path = uri.full_path
408
414
 
409
- if @sorbet_level != RubyDocument::SorbetLevel::Ignore && (!full_path || not_in_dependencies?(full_path))
415
+ if !@sorbet_level.ignore? && (!full_path || not_in_dependencies?(full_path))
410
416
  next
411
417
  end
412
418