ruby-lsp 0.23.11 → 0.23.13

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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/VERSION +1 -1
  4. data/exe/ruby-lsp-launcher +12 -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 +81 -115
  8. data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +117 -166
  9. data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +9 -7
  10. data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +88 -200
  11. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +56 -192
  12. data/lib/ruby_indexer/lib/ruby_indexer/location.rb +4 -27
  13. data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +14 -16
  14. data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +22 -45
  15. data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +42 -60
  16. data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +9 -16
  17. data/lib/ruby_indexer/lib/ruby_indexer/visibility_scope.rb +5 -9
  18. data/lib/ruby_indexer/test/configuration_test.rb +42 -3
  19. data/lib/ruby_indexer/test/method_test.rb +28 -2
  20. data/lib/ruby_indexer/test/rbs_indexer_test.rb +1 -1
  21. data/lib/ruby_lsp/addon.rb +44 -71
  22. data/lib/ruby_lsp/base_server.rb +29 -32
  23. data/lib/ruby_lsp/client_capabilities.rb +10 -12
  24. data/lib/ruby_lsp/document.rb +34 -45
  25. data/lib/ruby_lsp/erb_document.rb +24 -36
  26. data/lib/ruby_lsp/global_state.rb +51 -56
  27. data/lib/ruby_lsp/internal.rb +2 -0
  28. data/lib/ruby_lsp/listeners/code_lens.rb +81 -88
  29. data/lib/ruby_lsp/listeners/completion.rb +36 -55
  30. data/lib/ruby_lsp/listeners/definition.rb +37 -51
  31. data/lib/ruby_lsp/listeners/document_highlight.rb +123 -150
  32. data/lib/ruby_lsp/listeners/document_link.rb +43 -62
  33. data/lib/ruby_lsp/listeners/document_symbol.rb +35 -49
  34. data/lib/ruby_lsp/listeners/folding_ranges.rb +32 -39
  35. data/lib/ruby_lsp/listeners/hover.rb +81 -100
  36. data/lib/ruby_lsp/listeners/inlay_hints.rb +4 -11
  37. data/lib/ruby_lsp/listeners/semantic_highlighting.rb +42 -51
  38. data/lib/ruby_lsp/listeners/signature_help.rb +6 -25
  39. data/lib/ruby_lsp/listeners/spec_style.rb +155 -0
  40. data/lib/ruby_lsp/listeners/test_discovery.rb +89 -0
  41. data/lib/ruby_lsp/listeners/test_style.rb +160 -88
  42. data/lib/ruby_lsp/node_context.rb +12 -39
  43. data/lib/ruby_lsp/rbs_document.rb +8 -6
  44. data/lib/ruby_lsp/requests/code_action_resolve.rb +10 -10
  45. data/lib/ruby_lsp/requests/code_actions.rb +14 -26
  46. data/lib/ruby_lsp/requests/code_lens.rb +6 -17
  47. data/lib/ruby_lsp/requests/completion.rb +7 -20
  48. data/lib/ruby_lsp/requests/completion_resolve.rb +5 -5
  49. data/lib/ruby_lsp/requests/definition.rb +8 -17
  50. data/lib/ruby_lsp/requests/diagnostics.rb +8 -11
  51. data/lib/ruby_lsp/requests/discover_tests.rb +18 -5
  52. data/lib/ruby_lsp/requests/document_highlight.rb +5 -15
  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 +87 -0
  58. data/lib/ruby_lsp/requests/hover.rb +8 -18
  59. data/lib/ruby_lsp/requests/inlay_hints.rb +6 -17
  60. data/lib/ruby_lsp/requests/on_type_formatting.rb +28 -38
  61. data/lib/ruby_lsp/requests/prepare_rename.rb +4 -9
  62. data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +4 -13
  63. data/lib/ruby_lsp/requests/range_formatting.rb +5 -6
  64. data/lib/ruby_lsp/requests/references.rb +6 -36
  65. data/lib/ruby_lsp/requests/rename.rb +11 -37
  66. data/lib/ruby_lsp/requests/request.rb +7 -19
  67. data/lib/ruby_lsp/requests/selection_ranges.rb +5 -5
  68. data/lib/ruby_lsp/requests/semantic_highlighting.rb +12 -31
  69. data/lib/ruby_lsp/requests/show_syntax_tree.rb +5 -6
  70. data/lib/ruby_lsp/requests/signature_help.rb +8 -26
  71. data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
  72. data/lib/ruby_lsp/requests/support/common.rb +13 -50
  73. data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +27 -35
  74. data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +9 -12
  75. data/lib/ruby_lsp/requests/support/rubocop_runner.rb +22 -34
  76. data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
  77. data/lib/ruby_lsp/requests/support/sorbet.rb +29 -38
  78. data/lib/ruby_lsp/requests/support/source_uri.rb +16 -30
  79. data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +12 -19
  80. data/lib/ruby_lsp/requests/support/test_item.rb +10 -14
  81. data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +5 -6
  82. data/lib/ruby_lsp/requests/workspace_symbol.rb +4 -4
  83. data/lib/ruby_lsp/response_builders/collection_response_builder.rb +5 -5
  84. data/lib/ruby_lsp/response_builders/document_symbol.rb +10 -16
  85. data/lib/ruby_lsp/response_builders/hover.rb +10 -13
  86. data/lib/ruby_lsp/response_builders/response_builder.rb +1 -1
  87. data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +59 -87
  88. data/lib/ruby_lsp/response_builders/signature_help.rb +5 -6
  89. data/lib/ruby_lsp/response_builders/test_collection.rb +6 -10
  90. data/lib/ruby_lsp/ruby_document.rb +22 -60
  91. data/lib/ruby_lsp/ruby_lsp_reporter_plugin.rb +109 -0
  92. data/lib/ruby_lsp/scope.rb +7 -11
  93. data/lib/ruby_lsp/server.rb +133 -74
  94. data/lib/ruby_lsp/setup_bundler.rb +58 -57
  95. data/lib/ruby_lsp/static_docs.rb +4 -7
  96. data/lib/ruby_lsp/store.rb +21 -40
  97. data/lib/ruby_lsp/test_helper.rb +3 -12
  98. data/lib/ruby_lsp/test_reporter.rb +207 -0
  99. data/lib/ruby_lsp/test_unit_test_runner.rb +98 -0
  100. data/lib/ruby_lsp/type_inferrer.rb +9 -13
  101. data/lib/ruby_lsp/utils.rb +37 -81
  102. metadata +9 -3
@@ -4,19 +4,12 @@
4
4
  module RubyLsp
5
5
  module Listeners
6
6
  class FoldingRanges
7
- extend T::Sig
8
7
  include Requests::Support::Common
9
8
 
10
- sig do
11
- params(
12
- response_builder: ResponseBuilders::CollectionResponseBuilder[Interface::FoldingRange],
13
- comments: T::Array[Prism::Comment],
14
- dispatcher: Prism::Dispatcher,
15
- ).void
16
- end
9
+ #: (ResponseBuilders::CollectionResponseBuilder[Interface::FoldingRange] response_builder, Array[Prism::Comment] comments, Prism::Dispatcher dispatcher) -> void
17
10
  def initialize(response_builder, comments, dispatcher)
18
11
  @response_builder = response_builder
19
- @requires = T.let([], T::Array[Prism::CallNode])
12
+ @requires = [] #: Array[Prism::CallNode]
20
13
  @comments = comments
21
14
 
22
15
  dispatcher.register(
@@ -47,33 +40,33 @@ module RubyLsp
47
40
  )
48
41
  end
49
42
 
50
- sig { void }
43
+ #: -> void
51
44
  def finalize_response!
52
45
  push_comment_ranges
53
46
  emit_requires_range
54
47
  end
55
48
 
56
- sig { params(node: Prism::IfNode).void }
49
+ #: (Prism::IfNode node) -> void
57
50
  def on_if_node_enter(node)
58
51
  add_statements_range(node)
59
52
  end
60
53
 
61
- sig { params(node: Prism::InNode).void }
54
+ #: (Prism::InNode node) -> void
62
55
  def on_in_node_enter(node)
63
56
  add_statements_range(node)
64
57
  end
65
58
 
66
- sig { params(node: Prism::RescueNode).void }
59
+ #: (Prism::RescueNode node) -> void
67
60
  def on_rescue_node_enter(node)
68
61
  add_statements_range(node)
69
62
  end
70
63
 
71
- sig { params(node: Prism::WhenNode).void }
64
+ #: (Prism::WhenNode node) -> void
72
65
  def on_when_node_enter(node)
73
66
  add_statements_range(node)
74
67
  end
75
68
 
76
- sig { params(node: Prism::InterpolatedStringNode).void }
69
+ #: (Prism::InterpolatedStringNode node) -> void
77
70
  def on_interpolated_string_node_enter(node)
78
71
  opening_loc = node.opening_loc || node.location
79
72
  closing_loc = node.closing_loc || node.parts.last&.location || node.location
@@ -81,82 +74,82 @@ module RubyLsp
81
74
  add_lines_range(opening_loc.start_line, closing_loc.start_line - 1)
82
75
  end
83
76
 
84
- sig { params(node: Prism::ArrayNode).void }
77
+ #: (Prism::ArrayNode node) -> void
85
78
  def on_array_node_enter(node)
86
79
  add_simple_range(node)
87
80
  end
88
81
 
89
- sig { params(node: Prism::BlockNode).void }
82
+ #: (Prism::BlockNode node) -> void
90
83
  def on_block_node_enter(node)
91
84
  add_simple_range(node)
92
85
  end
93
86
 
94
- sig { params(node: Prism::CaseNode).void }
87
+ #: (Prism::CaseNode node) -> void
95
88
  def on_case_node_enter(node)
96
89
  add_simple_range(node)
97
90
  end
98
91
 
99
- sig { params(node: Prism::CaseMatchNode).void }
92
+ #: (Prism::CaseMatchNode node) -> void
100
93
  def on_case_match_node_enter(node)
101
94
  add_simple_range(node)
102
95
  end
103
96
 
104
- sig { params(node: Prism::ClassNode).void }
97
+ #: (Prism::ClassNode node) -> void
105
98
  def on_class_node_enter(node)
106
99
  add_simple_range(node)
107
100
  end
108
101
 
109
- sig { params(node: Prism::ModuleNode).void }
102
+ #: (Prism::ModuleNode node) -> void
110
103
  def on_module_node_enter(node)
111
104
  add_simple_range(node)
112
105
  end
113
106
 
114
- sig { params(node: Prism::ForNode).void }
107
+ #: (Prism::ForNode node) -> void
115
108
  def on_for_node_enter(node)
116
109
  add_simple_range(node)
117
110
  end
118
111
 
119
- sig { params(node: Prism::HashNode).void }
112
+ #: (Prism::HashNode node) -> void
120
113
  def on_hash_node_enter(node)
121
114
  add_simple_range(node)
122
115
  end
123
116
 
124
- sig { params(node: Prism::SingletonClassNode).void }
117
+ #: (Prism::SingletonClassNode node) -> void
125
118
  def on_singleton_class_node_enter(node)
126
119
  add_simple_range(node)
127
120
  end
128
121
 
129
- sig { params(node: Prism::UnlessNode).void }
122
+ #: (Prism::UnlessNode node) -> void
130
123
  def on_unless_node_enter(node)
131
124
  add_simple_range(node)
132
125
  end
133
126
 
134
- sig { params(node: Prism::UntilNode).void }
127
+ #: (Prism::UntilNode node) -> void
135
128
  def on_until_node_enter(node)
136
129
  add_simple_range(node)
137
130
  end
138
131
 
139
- sig { params(node: Prism::WhileNode).void }
132
+ #: (Prism::WhileNode node) -> void
140
133
  def on_while_node_enter(node)
141
134
  add_simple_range(node)
142
135
  end
143
136
 
144
- sig { params(node: Prism::ElseNode).void }
137
+ #: (Prism::ElseNode node) -> void
145
138
  def on_else_node_enter(node)
146
139
  add_simple_range(node)
147
140
  end
148
141
 
149
- sig { params(node: Prism::EnsureNode).void }
142
+ #: (Prism::EnsureNode node) -> void
150
143
  def on_ensure_node_enter(node)
151
144
  add_simple_range(node)
152
145
  end
153
146
 
154
- sig { params(node: Prism::BeginNode).void }
147
+ #: (Prism::BeginNode node) -> void
155
148
  def on_begin_node_enter(node)
156
149
  add_simple_range(node)
157
150
  end
158
151
 
159
- sig { params(node: Prism::DefNode).void }
152
+ #: (Prism::DefNode node) -> void
160
153
  def on_def_node_enter(node)
161
154
  params = node.parameters
162
155
  parameter_loc = params&.location
@@ -171,7 +164,7 @@ module RubyLsp
171
164
  end
172
165
  end
173
166
 
174
- sig { params(node: Prism::CallNode).void }
167
+ #: (Prism::CallNode node) -> void
175
168
  def on_call_node_enter(node)
176
169
  # If we find a require, don't visit the child nodes (prevent `super`), so that we can keep accumulating into
177
170
  # the `@requires` array and then push the range whenever we find a node that isn't a CallNode
@@ -184,14 +177,14 @@ module RubyLsp
184
177
  add_lines_range(location.start_line, location.end_line - 1)
185
178
  end
186
179
 
187
- sig { params(node: Prism::LambdaNode).void }
180
+ #: (Prism::LambdaNode node) -> void
188
181
  def on_lambda_node_enter(node)
189
182
  add_simple_range(node)
190
183
  end
191
184
 
192
185
  private
193
186
 
194
- sig { void }
187
+ #: -> void
195
188
  def push_comment_ranges
196
189
  # Group comments that are on consecutive lines and then push ranges for each group that has at least 2 comments
197
190
  @comments.chunk_while do |this, other|
@@ -207,7 +200,7 @@ module RubyLsp
207
200
  end
208
201
  end
209
202
 
210
- sig { void }
203
+ #: -> void
211
204
  def emit_requires_range
212
205
  if @requires.length > 1
213
206
  @response_builder << Interface::FoldingRange.new(
@@ -220,7 +213,7 @@ module RubyLsp
220
213
  @requires.clear
221
214
  end
222
215
 
223
- sig { params(node: Prism::CallNode).returns(T::Boolean) }
216
+ #: (Prism::CallNode node) -> bool
224
217
  def require?(node)
225
218
  message = node.message
226
219
  return false unless message == "require" || message == "require_relative"
@@ -234,7 +227,7 @@ module RubyLsp
234
227
  arguments.length == 1 && arguments.first.is_a?(Prism::StringNode)
235
228
  end
236
229
 
237
- sig { params(node: T.any(Prism::IfNode, Prism::InNode, Prism::RescueNode, Prism::WhenNode)).void }
230
+ #: ((Prism::IfNode | Prism::InNode | Prism::RescueNode | Prism::WhenNode) node) -> void
238
231
  def add_statements_range(node)
239
232
  statements = node.statements
240
233
  return unless statements
@@ -245,13 +238,13 @@ module RubyLsp
245
238
  add_lines_range(node.location.start_line, statement.location.end_line)
246
239
  end
247
240
 
248
- sig { params(node: Prism::Node).void }
241
+ #: (Prism::Node node) -> void
249
242
  def add_simple_range(node)
250
243
  location = node.location
251
244
  add_lines_range(location.start_line, location.end_line - 1)
252
245
  end
253
246
 
254
- sig { params(start_line: Integer, end_line: Integer).void }
247
+ #: (Integer start_line, Integer end_line) -> void
255
248
  def add_lines_range(start_line, end_line)
256
249
  emit_requires_range
257
250
  return if start_line >= end_line
@@ -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, RubyDocument::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,17 +84,17 @@ 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
99
  return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
116
100
 
@@ -120,14 +104,14 @@ 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
109
  return if @sorbet_level != RubyDocument::SorbetLevel::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
116
  return if @sorbet_level != RubyDocument::SorbetLevel::Ignore
133
117
 
@@ -137,7 +121,7 @@ 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)
@@ -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,7 +280,7 @@ 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
286
  return if sorbet_level_true_or_higher?(@sorbet_level)
@@ -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
@@ -330,7 +314,7 @@ 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
@@ -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,7 +358,7 @@ 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
@@ -389,7 +373,7 @@ module RubyLsp
389
373
  end
390
374
  end
391
375
 
392
- sig { params(node: Prism::CallNode).void }
376
+ #: (Prism::CallNode node) -> void
393
377
  def generate_gem_hover(node)
394
378
  first_argument = node.arguments&.arguments&.first
395
379
  return unless first_argument.is_a?(Prism::StringNode)
@@ -397,14 +381,11 @@ module RubyLsp
397
381
  spec = Gem::Specification.find_by_name(first_argument.content)
398
382
  return unless spec
399
383
 
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
- )
384
+ info = [
385
+ spec.description,
386
+ spec.summary,
387
+ "This rubygem does not have a description or summary.",
388
+ ].find { |text| !text.nil? && !text.empty? } #: String
408
389
 
409
390
  # Remove leading whitespace if a heredoc was used for the summary or description
410
391
  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