ruby-lsp 0.23.11 → 0.23.17

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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/VERSION +1 -1
  4. data/exe/ruby-lsp-launcher +20 -11
  5. data/lib/rubocop/cop/ruby_lsp/use_language_server_aliases.rb +1 -1
  6. data/lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb +3 -5
  7. data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +82 -116
  8. data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +134 -183
  9. data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +9 -10
  10. data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +97 -217
  11. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +139 -281
  12. data/lib/ruby_indexer/lib/ruby_indexer/location.rb +4 -27
  13. data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +18 -19
  14. data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +23 -55
  15. data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +47 -61
  16. data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +17 -19
  17. data/lib/ruby_indexer/lib/ruby_indexer/visibility_scope.rb +7 -11
  18. data/lib/ruby_indexer/test/class_variables_test.rb +14 -14
  19. data/lib/ruby_indexer/test/classes_and_modules_test.rb +65 -40
  20. data/lib/ruby_indexer/test/configuration_test.rb +48 -7
  21. data/lib/ruby_indexer/test/constant_test.rb +34 -34
  22. data/lib/ruby_indexer/test/enhancements_test.rb +1 -1
  23. data/lib/ruby_indexer/test/index_test.rb +146 -135
  24. data/lib/ruby_indexer/test/instance_variables_test.rb +37 -37
  25. data/lib/ruby_indexer/test/method_test.rb +149 -123
  26. data/lib/ruby_indexer/test/prefix_tree_test.rb +13 -13
  27. data/lib/ruby_indexer/test/rbs_indexer_test.rb +68 -73
  28. data/lib/ruby_indexer/test/test_case.rb +9 -3
  29. data/lib/ruby_indexer/test/uri_test.rb +15 -2
  30. data/lib/ruby_lsp/addon.rb +44 -71
  31. data/lib/ruby_lsp/base_server.rb +29 -32
  32. data/lib/ruby_lsp/client_capabilities.rb +10 -12
  33. data/lib/ruby_lsp/document.rb +40 -54
  34. data/lib/ruby_lsp/erb_document.rb +37 -41
  35. data/lib/ruby_lsp/global_state.rb +52 -57
  36. data/lib/ruby_lsp/internal.rb +2 -0
  37. data/lib/ruby_lsp/listeners/code_lens.rb +82 -89
  38. data/lib/ruby_lsp/listeners/completion.rb +67 -73
  39. data/lib/ruby_lsp/listeners/definition.rb +44 -58
  40. data/lib/ruby_lsp/listeners/document_highlight.rb +123 -150
  41. data/lib/ruby_lsp/listeners/document_link.rb +50 -70
  42. data/lib/ruby_lsp/listeners/document_symbol.rb +38 -52
  43. data/lib/ruby_lsp/listeners/folding_ranges.rb +40 -43
  44. data/lib/ruby_lsp/listeners/hover.rb +92 -110
  45. data/lib/ruby_lsp/listeners/inlay_hints.rb +4 -11
  46. data/lib/ruby_lsp/listeners/semantic_highlighting.rb +54 -56
  47. data/lib/ruby_lsp/listeners/signature_help.rb +12 -27
  48. data/lib/ruby_lsp/listeners/spec_style.rb +155 -0
  49. data/lib/ruby_lsp/listeners/test_discovery.rb +89 -0
  50. data/lib/ruby_lsp/listeners/test_style.rb +167 -90
  51. data/lib/ruby_lsp/node_context.rb +12 -39
  52. data/lib/ruby_lsp/rbs_document.rb +9 -7
  53. data/lib/ruby_lsp/requests/code_action_resolve.rb +63 -59
  54. data/lib/ruby_lsp/requests/code_actions.rb +14 -26
  55. data/lib/ruby_lsp/requests/code_lens.rb +20 -19
  56. data/lib/ruby_lsp/requests/completion.rb +7 -20
  57. data/lib/ruby_lsp/requests/completion_resolve.rb +6 -6
  58. data/lib/ruby_lsp/requests/definition.rb +7 -17
  59. data/lib/ruby_lsp/requests/diagnostics.rb +8 -11
  60. data/lib/ruby_lsp/requests/discover_tests.rb +18 -5
  61. data/lib/ruby_lsp/requests/document_highlight.rb +5 -15
  62. data/lib/ruby_lsp/requests/document_link.rb +6 -17
  63. data/lib/ruby_lsp/requests/document_symbol.rb +5 -8
  64. data/lib/ruby_lsp/requests/folding_ranges.rb +7 -15
  65. data/lib/ruby_lsp/requests/formatting.rb +6 -9
  66. data/lib/ruby_lsp/requests/go_to_relevant_file.rb +85 -0
  67. data/lib/ruby_lsp/requests/hover.rb +10 -20
  68. data/lib/ruby_lsp/requests/inlay_hints.rb +6 -17
  69. data/lib/ruby_lsp/requests/on_type_formatting.rb +32 -40
  70. data/lib/ruby_lsp/requests/prepare_rename.rb +4 -9
  71. data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +5 -15
  72. data/lib/ruby_lsp/requests/range_formatting.rb +5 -6
  73. data/lib/ruby_lsp/requests/references.rb +9 -53
  74. data/lib/ruby_lsp/requests/rename.rb +20 -46
  75. data/lib/ruby_lsp/requests/request.rb +8 -19
  76. data/lib/ruby_lsp/requests/selection_ranges.rb +6 -6
  77. data/lib/ruby_lsp/requests/semantic_highlighting.rb +16 -35
  78. data/lib/ruby_lsp/requests/show_syntax_tree.rb +7 -8
  79. data/lib/ruby_lsp/requests/signature_help.rb +8 -26
  80. data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
  81. data/lib/ruby_lsp/requests/support/common.rb +15 -55
  82. data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +27 -35
  83. data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +11 -14
  84. data/lib/ruby_lsp/requests/support/rubocop_runner.rb +22 -34
  85. data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
  86. data/lib/ruby_lsp/requests/support/sorbet.rb +29 -38
  87. data/lib/ruby_lsp/requests/support/source_uri.rb +20 -32
  88. data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +12 -19
  89. data/lib/ruby_lsp/requests/support/test_item.rb +16 -14
  90. data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +5 -6
  91. data/lib/ruby_lsp/requests/workspace_symbol.rb +4 -4
  92. data/lib/ruby_lsp/response_builders/collection_response_builder.rb +5 -5
  93. data/lib/ruby_lsp/response_builders/document_symbol.rb +14 -19
  94. data/lib/ruby_lsp/response_builders/hover.rb +11 -14
  95. data/lib/ruby_lsp/response_builders/response_builder.rb +1 -1
  96. data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +60 -88
  97. data/lib/ruby_lsp/response_builders/signature_help.rb +5 -6
  98. data/lib/ruby_lsp/response_builders/test_collection.rb +43 -10
  99. data/lib/ruby_lsp/ruby_document.rb +24 -92
  100. data/lib/ruby_lsp/scope.rb +7 -11
  101. data/lib/ruby_lsp/scripts/compose_bundle.rb +6 -4
  102. data/lib/ruby_lsp/server.rb +182 -99
  103. data/lib/ruby_lsp/setup_bundler.rb +65 -60
  104. data/lib/ruby_lsp/static_docs.rb +11 -7
  105. data/lib/ruby_lsp/store.rb +29 -47
  106. data/lib/ruby_lsp/test_helper.rb +2 -12
  107. data/lib/ruby_lsp/test_reporters/lsp_reporter.rb +191 -0
  108. data/lib/ruby_lsp/test_reporters/minitest_reporter.rb +105 -0
  109. data/lib/ruby_lsp/test_reporters/test_unit_reporter.rb +94 -0
  110. data/lib/ruby_lsp/type_inferrer.rb +13 -14
  111. data/lib/ruby_lsp/utils.rb +92 -83
  112. metadata +9 -3
@@ -4,67 +4,51 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class Hover
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
- ALLOWED_TARGETS = T.let(
11
- [
12
- Prism::CallNode,
13
- Prism::ConstantReadNode,
14
- Prism::ConstantWriteNode,
15
- Prism::ConstantPathNode,
16
- Prism::GlobalVariableAndWriteNode,
17
- Prism::GlobalVariableOperatorWriteNode,
18
- Prism::GlobalVariableOrWriteNode,
19
- Prism::GlobalVariableReadNode,
20
- Prism::GlobalVariableTargetNode,
21
- Prism::GlobalVariableWriteNode,
22
- Prism::InstanceVariableReadNode,
23
- Prism::InstanceVariableAndWriteNode,
24
- Prism::InstanceVariableOperatorWriteNode,
25
- Prism::InstanceVariableOrWriteNode,
26
- Prism::InstanceVariableTargetNode,
27
- Prism::InstanceVariableWriteNode,
28
- Prism::SymbolNode,
29
- Prism::StringNode,
30
- Prism::InterpolatedStringNode,
31
- Prism::SuperNode,
32
- Prism::ForwardingSuperNode,
33
- Prism::YieldNode,
34
- Prism::ClassVariableAndWriteNode,
35
- Prism::ClassVariableOperatorWriteNode,
36
- Prism::ClassVariableOrWriteNode,
37
- Prism::ClassVariableReadNode,
38
- Prism::ClassVariableTargetNode,
39
- Prism::ClassVariableWriteNode,
40
- ],
41
- T::Array[T.class_of(Prism::Node)],
42
- )
43
-
44
- ALLOWED_REMOTE_PROVIDERS = T.let(
45
- [
46
- "https://github.com",
47
- "https://gitlab.com",
48
- ].freeze,
49
- T::Array[String],
50
- )
51
-
52
- sig do
53
- params(
54
- response_builder: ResponseBuilders::Hover,
55
- global_state: GlobalState,
56
- uri: URI::Generic,
57
- node_context: NodeContext,
58
- dispatcher: Prism::Dispatcher,
59
- sorbet_level: RubyDocument::SorbetLevel,
60
- ).void
61
- end
9
+ ALLOWED_TARGETS = [
10
+ Prism::CallNode,
11
+ Prism::ConstantReadNode,
12
+ Prism::ConstantWriteNode,
13
+ Prism::ConstantPathNode,
14
+ Prism::GlobalVariableAndWriteNode,
15
+ Prism::GlobalVariableOperatorWriteNode,
16
+ Prism::GlobalVariableOrWriteNode,
17
+ Prism::GlobalVariableReadNode,
18
+ Prism::GlobalVariableTargetNode,
19
+ Prism::GlobalVariableWriteNode,
20
+ Prism::InstanceVariableReadNode,
21
+ Prism::InstanceVariableAndWriteNode,
22
+ Prism::InstanceVariableOperatorWriteNode,
23
+ Prism::InstanceVariableOrWriteNode,
24
+ Prism::InstanceVariableTargetNode,
25
+ Prism::InstanceVariableWriteNode,
26
+ Prism::SymbolNode,
27
+ Prism::StringNode,
28
+ Prism::InterpolatedStringNode,
29
+ Prism::SuperNode,
30
+ Prism::ForwardingSuperNode,
31
+ Prism::YieldNode,
32
+ Prism::ClassVariableAndWriteNode,
33
+ Prism::ClassVariableOperatorWriteNode,
34
+ Prism::ClassVariableOrWriteNode,
35
+ Prism::ClassVariableReadNode,
36
+ Prism::ClassVariableTargetNode,
37
+ Prism::ClassVariableWriteNode,
38
+ ] #: Array[singleton(Prism::Node)]
39
+
40
+ ALLOWED_REMOTE_PROVIDERS = [
41
+ "https://github.com",
42
+ "https://gitlab.com",
43
+ ].freeze #: Array[String]
44
+
45
+ #: (ResponseBuilders::Hover response_builder, GlobalState global_state, URI::Generic uri, NodeContext node_context, Prism::Dispatcher dispatcher, SorbetLevel sorbet_level) -> void
62
46
  def initialize(response_builder, global_state, uri, node_context, dispatcher, sorbet_level) # rubocop:disable Metrics/ParameterLists
63
47
  @response_builder = response_builder
64
48
  @global_state = global_state
65
- @index = T.let(global_state.index, RubyIndexer::Index)
66
- @type_inferrer = T.let(global_state.type_inferrer, TypeInferrer)
67
- @path = T.let(uri.to_standardized_path, T.nilable(String))
49
+ @index = global_state.index #: RubyIndexer::Index
50
+ @type_inferrer = global_state.type_inferrer #: TypeInferrer
51
+ @path = uri.to_standardized_path #: String?
68
52
  @node_context = node_context
69
53
  @sorbet_level = sorbet_level
70
54
 
@@ -100,19 +84,19 @@ module RubyLsp
100
84
  )
101
85
  end
102
86
 
103
- sig { params(node: Prism::StringNode).void }
87
+ #: (Prism::StringNode node) -> void
104
88
  def on_string_node_enter(node)
105
89
  generate_heredoc_hover(node)
106
90
  end
107
91
 
108
- sig { params(node: Prism::InterpolatedStringNode).void }
92
+ #: (Prism::InterpolatedStringNode node) -> void
109
93
  def on_interpolated_string_node_enter(node)
110
94
  generate_heredoc_hover(node)
111
95
  end
112
96
 
113
- sig { params(node: Prism::ConstantReadNode).void }
97
+ #: (Prism::ConstantReadNode node) -> void
114
98
  def on_constant_read_node_enter(node)
115
- return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
99
+ return unless @sorbet_level.ignore?
116
100
 
117
101
  name = RubyIndexer::Index.constant_name(node)
118
102
  return if name.nil?
@@ -120,16 +104,16 @@ module RubyLsp
120
104
  generate_hover(name, node.location)
121
105
  end
122
106
 
123
- sig { params(node: Prism::ConstantWriteNode).void }
107
+ #: (Prism::ConstantWriteNode node) -> void
124
108
  def on_constant_write_node_enter(node)
125
- return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
109
+ return unless @sorbet_level.ignore?
126
110
 
127
111
  generate_hover(node.name.to_s, node.name_loc)
128
112
  end
129
113
 
130
- sig { params(node: Prism::ConstantPathNode).void }
114
+ #: (Prism::ConstantPathNode node) -> void
131
115
  def on_constant_path_node_enter(node)
132
- return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
116
+ return unless @sorbet_level.ignore?
133
117
 
134
118
  name = RubyIndexer::Index.constant_name(node)
135
119
  return if name.nil?
@@ -137,14 +121,14 @@ module RubyLsp
137
121
  generate_hover(name, node.location)
138
122
  end
139
123
 
140
- sig { params(node: Prism::CallNode).void }
124
+ #: (Prism::CallNode node) -> void
141
125
  def on_call_node_enter(node)
142
126
  if @path && File.basename(@path) == GEMFILE_NAME && node.name == :gem
143
127
  generate_gem_hover(node)
144
128
  return
145
129
  end
146
130
 
147
- return if sorbet_level_true_or_higher?(@sorbet_level) && self_receiver?(node)
131
+ return if @sorbet_level.true_or_higher? && self_receiver?(node)
148
132
 
149
133
  message = node.message
150
134
  return unless message
@@ -152,114 +136,114 @@ module RubyLsp
152
136
  handle_method_hover(message)
153
137
  end
154
138
 
155
- sig { params(node: Prism::GlobalVariableAndWriteNode).void }
139
+ #: (Prism::GlobalVariableAndWriteNode node) -> void
156
140
  def on_global_variable_and_write_node_enter(node)
157
141
  handle_global_variable_hover(node.name.to_s)
158
142
  end
159
143
 
160
- sig { params(node: Prism::GlobalVariableOperatorWriteNode).void }
144
+ #: (Prism::GlobalVariableOperatorWriteNode node) -> void
161
145
  def on_global_variable_operator_write_node_enter(node)
162
146
  handle_global_variable_hover(node.name.to_s)
163
147
  end
164
148
 
165
- sig { params(node: Prism::GlobalVariableOrWriteNode).void }
149
+ #: (Prism::GlobalVariableOrWriteNode node) -> void
166
150
  def on_global_variable_or_write_node_enter(node)
167
151
  handle_global_variable_hover(node.name.to_s)
168
152
  end
169
153
 
170
- sig { params(node: Prism::GlobalVariableReadNode).void }
154
+ #: (Prism::GlobalVariableReadNode node) -> void
171
155
  def on_global_variable_read_node_enter(node)
172
156
  handle_global_variable_hover(node.name.to_s)
173
157
  end
174
158
 
175
- sig { params(node: Prism::GlobalVariableTargetNode).void }
159
+ #: (Prism::GlobalVariableTargetNode node) -> void
176
160
  def on_global_variable_target_node_enter(node)
177
161
  handle_global_variable_hover(node.name.to_s)
178
162
  end
179
163
 
180
- sig { params(node: Prism::GlobalVariableWriteNode).void }
164
+ #: (Prism::GlobalVariableWriteNode node) -> void
181
165
  def on_global_variable_write_node_enter(node)
182
166
  handle_global_variable_hover(node.name.to_s)
183
167
  end
184
168
 
185
- sig { params(node: Prism::InstanceVariableReadNode).void }
169
+ #: (Prism::InstanceVariableReadNode node) -> void
186
170
  def on_instance_variable_read_node_enter(node)
187
171
  handle_instance_variable_hover(node.name.to_s)
188
172
  end
189
173
 
190
- sig { params(node: Prism::InstanceVariableWriteNode).void }
174
+ #: (Prism::InstanceVariableWriteNode node) -> void
191
175
  def on_instance_variable_write_node_enter(node)
192
176
  handle_instance_variable_hover(node.name.to_s)
193
177
  end
194
178
 
195
- sig { params(node: Prism::InstanceVariableAndWriteNode).void }
179
+ #: (Prism::InstanceVariableAndWriteNode node) -> void
196
180
  def on_instance_variable_and_write_node_enter(node)
197
181
  handle_instance_variable_hover(node.name.to_s)
198
182
  end
199
183
 
200
- sig { params(node: Prism::InstanceVariableOperatorWriteNode).void }
184
+ #: (Prism::InstanceVariableOperatorWriteNode node) -> void
201
185
  def on_instance_variable_operator_write_node_enter(node)
202
186
  handle_instance_variable_hover(node.name.to_s)
203
187
  end
204
188
 
205
- sig { params(node: Prism::InstanceVariableOrWriteNode).void }
189
+ #: (Prism::InstanceVariableOrWriteNode node) -> void
206
190
  def on_instance_variable_or_write_node_enter(node)
207
191
  handle_instance_variable_hover(node.name.to_s)
208
192
  end
209
193
 
210
- sig { params(node: Prism::InstanceVariableTargetNode).void }
194
+ #: (Prism::InstanceVariableTargetNode node) -> void
211
195
  def on_instance_variable_target_node_enter(node)
212
196
  handle_instance_variable_hover(node.name.to_s)
213
197
  end
214
198
 
215
- sig { params(node: Prism::SuperNode).void }
199
+ #: (Prism::SuperNode node) -> void
216
200
  def on_super_node_enter(node)
217
201
  handle_super_node_hover
218
202
  end
219
203
 
220
- sig { params(node: Prism::ForwardingSuperNode).void }
204
+ #: (Prism::ForwardingSuperNode node) -> void
221
205
  def on_forwarding_super_node_enter(node)
222
206
  handle_super_node_hover
223
207
  end
224
208
 
225
- sig { params(node: Prism::YieldNode).void }
209
+ #: (Prism::YieldNode node) -> void
226
210
  def on_yield_node_enter(node)
227
211
  handle_keyword_documentation(node.keyword)
228
212
  end
229
213
 
230
- sig { params(node: Prism::ClassVariableAndWriteNode).void }
214
+ #: (Prism::ClassVariableAndWriteNode node) -> void
231
215
  def on_class_variable_and_write_node_enter(node)
232
216
  handle_class_variable_hover(node.name.to_s)
233
217
  end
234
218
 
235
- sig { params(node: Prism::ClassVariableOperatorWriteNode).void }
219
+ #: (Prism::ClassVariableOperatorWriteNode node) -> void
236
220
  def on_class_variable_operator_write_node_enter(node)
237
221
  handle_class_variable_hover(node.name.to_s)
238
222
  end
239
223
 
240
- sig { params(node: Prism::ClassVariableOrWriteNode).void }
224
+ #: (Prism::ClassVariableOrWriteNode node) -> void
241
225
  def on_class_variable_or_write_node_enter(node)
242
226
  handle_class_variable_hover(node.name.to_s)
243
227
  end
244
228
 
245
- sig { params(node: Prism::ClassVariableTargetNode).void }
229
+ #: (Prism::ClassVariableTargetNode node) -> void
246
230
  def on_class_variable_target_node_enter(node)
247
231
  handle_class_variable_hover(node.name.to_s)
248
232
  end
249
233
 
250
- sig { params(node: Prism::ClassVariableReadNode).void }
234
+ #: (Prism::ClassVariableReadNode node) -> void
251
235
  def on_class_variable_read_node_enter(node)
252
236
  handle_class_variable_hover(node.name.to_s)
253
237
  end
254
238
 
255
- sig { params(node: Prism::ClassVariableWriteNode).void }
239
+ #: (Prism::ClassVariableWriteNode node) -> void
256
240
  def on_class_variable_write_node_enter(node)
257
241
  handle_class_variable_hover(node.name.to_s)
258
242
  end
259
243
 
260
244
  private
261
245
 
262
- sig { params(node: T.any(Prism::InterpolatedStringNode, Prism::StringNode)).void }
246
+ #: ((Prism::InterpolatedStringNode | Prism::StringNode) node) -> void
263
247
  def generate_heredoc_hover(node)
264
248
  return unless node.heredoc?
265
249
 
@@ -284,7 +268,7 @@ module RubyLsp
284
268
  end
285
269
  end
286
270
 
287
- sig { params(keyword: String).void }
271
+ #: (String keyword) -> void
288
272
  def handle_keyword_documentation(keyword)
289
273
  content = KEYWORD_DOCS[keyword]
290
274
  return unless content
@@ -296,10 +280,10 @@ module RubyLsp
296
280
  @response_builder.push(content, category: :documentation)
297
281
  end
298
282
 
299
- sig { void }
283
+ #: -> void
300
284
  def handle_super_node_hover
301
285
  # Sorbet can handle super hover on typed true or higher
302
- return if sorbet_level_true_or_higher?(@sorbet_level)
286
+ return if @sorbet_level.true_or_higher?
303
287
 
304
288
  surrounding_method = @node_context.surrounding_method
305
289
  return unless surrounding_method
@@ -307,7 +291,7 @@ module RubyLsp
307
291
  handle_method_hover(surrounding_method, inherited_only: true)
308
292
  end
309
293
 
310
- sig { params(message: String, inherited_only: T::Boolean).void }
294
+ #: (String message, ?inherited_only: bool) -> void
311
295
  def handle_method_hover(message, inherited_only: false)
312
296
  type = @type_inferrer.infer_receiver_type(@node_context)
313
297
  return unless type
@@ -315,7 +299,7 @@ module RubyLsp
315
299
  methods = @index.resolve_method(message, type.name, inherited_only: inherited_only)
316
300
  return unless methods
317
301
 
318
- first_method = T.must(methods.first)
302
+ first_method = methods.first #: as !nil
319
303
 
320
304
  title = "#{message}#{first_method.decorated_parameters}"
321
305
  title << first_method.formatted_signatures
@@ -330,11 +314,11 @@ module RubyLsp
330
314
  end
331
315
  end
332
316
 
333
- sig { params(name: String).void }
317
+ #: (String name) -> void
334
318
  def handle_instance_variable_hover(name)
335
319
  # Sorbet enforces that all instance variables be declared on typed strict or higher, which means it will be able
336
320
  # to provide all features for them
337
- return if @sorbet_level == RubyDocument::SorbetLevel::Strict
321
+ return if @sorbet_level.strict?
338
322
 
339
323
  type = @type_inferrer.infer_receiver_type(@node_context)
340
324
  return unless type
@@ -349,7 +333,7 @@ module RubyLsp
349
333
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
350
334
  end
351
335
 
352
- sig { params(name: String).void }
336
+ #: (String name) -> void
353
337
  def handle_global_variable_hover(name)
354
338
  entries = @index[name]
355
339
  return unless entries
@@ -359,7 +343,7 @@ module RubyLsp
359
343
  end
360
344
  end
361
345
 
362
- sig { params(name: String).void }
346
+ #: (String name) -> void
363
347
  def handle_class_variable_hover(name)
364
348
  type = @type_inferrer.infer_receiver_type(@node_context)
365
349
  return unless type
@@ -374,22 +358,23 @@ module RubyLsp
374
358
  # If by any chance we haven't indexed the owner, then there's no way to find the right declaration
375
359
  end
376
360
 
377
- sig { params(name: String, location: Prism::Location).void }
361
+ #: (String name, Prism::Location location) -> void
378
362
  def generate_hover(name, location)
379
363
  entries = @index.resolve(name, @node_context.nesting)
380
364
  return unless entries
381
365
 
382
366
  # We should only show hover for private constants if the constant is defined in the same namespace as the
383
367
  # reference
384
- first_entry = T.must(entries.first)
385
- return if first_entry.private? && first_entry.name != "#{@node_context.fully_qualified_name}::#{name}"
368
+ first_entry = entries.first #: as !nil
369
+ full_name = first_entry.name
370
+ return if first_entry.private? && full_name != "#{@node_context.fully_qualified_name}::#{name}"
386
371
 
387
- categorized_markdown_from_index_entries(name, entries).each do |category, content|
372
+ categorized_markdown_from_index_entries(full_name, entries).each do |category, content|
388
373
  @response_builder.push(content, category: category)
389
374
  end
390
375
  end
391
376
 
392
- sig { params(node: Prism::CallNode).void }
377
+ #: (Prism::CallNode node) -> void
393
378
  def generate_gem_hover(node)
394
379
  first_argument = node.arguments&.arguments&.first
395
380
  return unless first_argument.is_a?(Prism::StringNode)
@@ -397,14 +382,11 @@ module RubyLsp
397
382
  spec = Gem::Specification.find_by_name(first_argument.content)
398
383
  return unless spec
399
384
 
400
- info = T.let(
401
- [
402
- spec.description,
403
- spec.summary,
404
- "This rubygem does not have a description or summary.",
405
- ].find { |text| !text.nil? && !text.empty? },
406
- String,
407
- )
385
+ info = [
386
+ spec.description,
387
+ spec.summary,
388
+ "This rubygem does not have a description or summary.",
389
+ ].find { |text| !text.nil? && !text.empty? } #: String
408
390
 
409
391
  # Remove leading whitespace if a heredoc was used for the summary or description
410
392
  info = info.gsub(/^ +/, "")
@@ -4,18 +4,11 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class InlayHints
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
- RESCUE_STRING_LENGTH = T.let("rescue".length, Integer)
9
+ RESCUE_STRING_LENGTH = "rescue".length #: Integer
11
10
 
12
- sig do
13
- params(
14
- response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::InlayHint],
15
- hints_configuration: RequestConfig,
16
- dispatcher: Prism::Dispatcher,
17
- ).void
18
- end
11
+ #: (ResponseBuilders::CollectionResponseBuilder[Interface::InlayHint] response_builder, RequestConfig hints_configuration, Prism::Dispatcher dispatcher) -> void
19
12
  def initialize(response_builder, hints_configuration, dispatcher)
20
13
  @response_builder = response_builder
21
14
  @hints_configuration = hints_configuration
@@ -23,7 +16,7 @@ module RubyLsp
23
16
  dispatcher.register(self, :on_rescue_node_enter, :on_implicit_node_enter)
24
17
  end
25
18
 
26
- sig { params(node: Prism::RescueNode).void }
19
+ #: (Prism::RescueNode node) -> void
27
20
  def on_rescue_node_enter(node)
28
21
  return unless @hints_configuration.enabled?(:implicitRescue)
29
22
  return unless node.exceptions.empty?
@@ -38,7 +31,7 @@ module RubyLsp
38
31
  )
39
32
  end
40
33
 
41
- sig { params(node: Prism::ImplicitNode).void }
34
+ #: (Prism::ImplicitNode node) -> void
42
35
  def on_implicit_node_enter(node)
43
36
  return unless @hints_configuration.enabled?(:implicitHashValue)
44
37