ruby-lsp 0.23.11 → 0.23.12
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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/VERSION +1 -1
- data/exe/ruby-lsp-launcher +12 -11
- data/lib/rubocop/cop/ruby_lsp/use_register_with_handler_method.rb +3 -5
- data/lib/ruby_indexer/lib/ruby_indexer/configuration.rb +52 -77
- data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +61 -144
- data/lib/ruby_indexer/lib/ruby_indexer/enhancement.rb +8 -6
- data/lib/ruby_indexer/lib/ruby_indexer/entry.rb +73 -182
- data/lib/ruby_indexer/lib/ruby_indexer/index.rb +48 -181
- data/lib/ruby_indexer/lib/ruby_indexer/location.rb +4 -27
- data/lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb +12 -14
- data/lib/ruby_indexer/lib/ruby_indexer/rbs_indexer.rb +21 -44
- data/lib/ruby_indexer/lib/ruby_indexer/reference_finder.rb +40 -58
- data/lib/ruby_indexer/lib/ruby_indexer/uri.rb +9 -16
- data/lib/ruby_indexer/lib/ruby_indexer/visibility_scope.rb +5 -9
- data/lib/ruby_indexer/test/configuration_test.rb +32 -2
- data/lib/ruby_indexer/test/method_test.rb +2 -2
- data/lib/ruby_lsp/addon.rb +32 -67
- data/lib/ruby_lsp/base_server.rb +10 -10
- data/lib/ruby_lsp/client_capabilities.rb +4 -6
- data/lib/ruby_lsp/document.rb +21 -32
- data/lib/ruby_lsp/erb_document.rb +17 -27
- data/lib/ruby_lsp/global_state.rb +30 -32
- data/lib/ruby_lsp/internal.rb +2 -0
- data/lib/ruby_lsp/listeners/code_lens.rb +21 -39
- data/lib/ruby_lsp/listeners/completion.rb +34 -53
- data/lib/ruby_lsp/listeners/definition.rb +35 -49
- data/lib/ruby_lsp/listeners/document_highlight.rb +60 -69
- data/lib/ruby_lsp/listeners/document_link.rb +9 -19
- data/lib/ruby_lsp/listeners/document_symbol.rb +34 -48
- data/lib/ruby_lsp/listeners/folding_ranges.rb +31 -38
- data/lib/ruby_lsp/listeners/hover.rb +37 -47
- data/lib/ruby_lsp/listeners/inlay_hints.rb +3 -10
- data/lib/ruby_lsp/listeners/semantic_highlighting.rb +29 -35
- data/lib/ruby_lsp/listeners/signature_help.rb +4 -23
- data/lib/ruby_lsp/listeners/spec_style.rb +199 -0
- data/lib/ruby_lsp/listeners/test_style.rb +136 -30
- data/lib/ruby_lsp/node_context.rb +8 -35
- data/lib/ruby_lsp/rbs_document.rb +7 -5
- data/lib/ruby_lsp/requests/code_action_resolve.rb +10 -10
- data/lib/ruby_lsp/requests/code_actions.rb +5 -14
- data/lib/ruby_lsp/requests/code_lens.rb +4 -13
- data/lib/ruby_lsp/requests/completion.rb +4 -15
- data/lib/ruby_lsp/requests/completion_resolve.rb +4 -4
- data/lib/ruby_lsp/requests/definition.rb +4 -12
- data/lib/ruby_lsp/requests/diagnostics.rb +6 -9
- data/lib/ruby_lsp/requests/discover_tests.rb +15 -3
- data/lib/ruby_lsp/requests/document_highlight.rb +3 -11
- data/lib/ruby_lsp/requests/document_link.rb +4 -13
- data/lib/ruby_lsp/requests/document_symbol.rb +4 -7
- data/lib/ruby_lsp/requests/folding_ranges.rb +4 -7
- data/lib/ruby_lsp/requests/formatting.rb +4 -7
- data/lib/ruby_lsp/requests/go_to_relevant_file.rb +87 -0
- data/lib/ruby_lsp/requests/hover.rb +6 -16
- data/lib/ruby_lsp/requests/inlay_hints.rb +4 -13
- data/lib/ruby_lsp/requests/on_type_formatting.rb +17 -24
- data/lib/ruby_lsp/requests/prepare_rename.rb +3 -8
- data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +4 -13
- data/lib/ruby_lsp/requests/range_formatting.rb +3 -4
- data/lib/ruby_lsp/requests/references.rb +5 -35
- data/lib/ruby_lsp/requests/rename.rb +9 -35
- data/lib/ruby_lsp/requests/request.rb +5 -17
- data/lib/ruby_lsp/requests/selection_ranges.rb +3 -3
- data/lib/ruby_lsp/requests/semantic_highlighting.rb +6 -23
- data/lib/ruby_lsp/requests/show_syntax_tree.rb +4 -5
- data/lib/ruby_lsp/requests/signature_help.rb +6 -24
- data/lib/ruby_lsp/requests/support/annotation.rb +4 -10
- data/lib/ruby_lsp/requests/support/common.rb +12 -49
- data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +12 -14
- data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +7 -10
- data/lib/ruby_lsp/requests/support/rubocop_runner.rb +9 -15
- data/lib/ruby_lsp/requests/support/selection_range.rb +1 -3
- data/lib/ruby_lsp/requests/support/sorbet.rb +1 -7
- data/lib/ruby_lsp/requests/support/source_uri.rb +5 -16
- data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +7 -10
- data/lib/ruby_lsp/requests/support/test_item.rb +14 -13
- data/lib/ruby_lsp/requests/type_hierarchy_supertypes.rb +4 -5
- data/lib/ruby_lsp/requests/workspace_symbol.rb +3 -3
- data/lib/ruby_lsp/response_builders/collection_response_builder.rb +4 -4
- data/lib/ruby_lsp/response_builders/document_symbol.rb +8 -11
- data/lib/ruby_lsp/response_builders/hover.rb +5 -5
- data/lib/ruby_lsp/response_builders/response_builder.rb +1 -1
- data/lib/ruby_lsp/response_builders/semantic_highlighting.rb +18 -40
- data/lib/ruby_lsp/response_builders/signature_help.rb +4 -5
- data/lib/ruby_lsp/response_builders/test_collection.rb +5 -9
- data/lib/ruby_lsp/ruby_document.rb +15 -40
- data/lib/ruby_lsp/ruby_lsp_reporter_plugin.rb +106 -0
- data/lib/ruby_lsp/scope.rb +6 -10
- data/lib/ruby_lsp/server.rb +125 -74
- data/lib/ruby_lsp/setup_bundler.rb +22 -15
- data/lib/ruby_lsp/store.rb +12 -28
- data/lib/ruby_lsp/test_helper.rb +3 -12
- data/lib/ruby_lsp/test_reporter.rb +71 -0
- data/lib/ruby_lsp/test_unit_test_runner.rb +96 -0
- data/lib/ruby_lsp/type_inferrer.rb +9 -13
- data/lib/ruby_lsp/utils.rb +27 -65
- metadata +8 -3
@@ -4,25 +4,11 @@
|
|
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
|
-
|
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, Document::LanguageId language_id, URI::Generic uri, NodeContext node_context, Prism::Dispatcher dispatcher, RubyDocument::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
|
@@ -64,7 +50,7 @@ module RubyLsp
|
|
64
50
|
)
|
65
51
|
end
|
66
52
|
|
67
|
-
|
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
56
|
return if sorbet_level_true_or_higher?(@sorbet_level) && self_receiver?(node)
|
@@ -83,7 +69,7 @@ module RubyLsp
|
|
83
69
|
handle_method_definition(message, inferrer_receiver_type)
|
84
70
|
end
|
85
71
|
|
86
|
-
|
72
|
+
#: (Prism::StringNode node) -> void
|
87
73
|
def on_string_node_enter(node)
|
88
74
|
enclosing_call = @node_context.call_node
|
89
75
|
return unless enclosing_call
|
@@ -94,7 +80,7 @@ module RubyLsp
|
|
94
80
|
handle_require_definition(node, name)
|
95
81
|
end
|
96
82
|
|
97
|
-
|
83
|
+
#: (Prism::SymbolNode node) -> void
|
98
84
|
def on_symbol_node_enter(node)
|
99
85
|
enclosing_call = @node_context.call_node
|
100
86
|
return unless enclosing_call
|
@@ -105,7 +91,7 @@ module RubyLsp
|
|
105
91
|
handle_autoload_definition(enclosing_call)
|
106
92
|
end
|
107
93
|
|
108
|
-
|
94
|
+
#: (Prism::BlockArgumentNode node) -> void
|
109
95
|
def on_block_argument_node_enter(node)
|
110
96
|
expression = node.expression
|
111
97
|
return unless expression.is_a?(Prism::SymbolNode)
|
@@ -116,7 +102,7 @@ module RubyLsp
|
|
116
102
|
handle_method_definition(value, nil)
|
117
103
|
end
|
118
104
|
|
119
|
-
|
105
|
+
#: (Prism::ConstantPathNode node) -> void
|
120
106
|
def on_constant_path_node_enter(node)
|
121
107
|
name = RubyIndexer::Index.constant_name(node)
|
122
108
|
return if name.nil?
|
@@ -124,7 +110,7 @@ module RubyLsp
|
|
124
110
|
find_in_index(name)
|
125
111
|
end
|
126
112
|
|
127
|
-
|
113
|
+
#: (Prism::ConstantReadNode node) -> void
|
128
114
|
def on_constant_read_node_enter(node)
|
129
115
|
name = RubyIndexer::Index.constant_name(node)
|
130
116
|
return if name.nil?
|
@@ -132,109 +118,109 @@ module RubyLsp
|
|
132
118
|
find_in_index(name)
|
133
119
|
end
|
134
120
|
|
135
|
-
|
121
|
+
#: (Prism::GlobalVariableAndWriteNode node) -> void
|
136
122
|
def on_global_variable_and_write_node_enter(node)
|
137
123
|
handle_global_variable_definition(node.name.to_s)
|
138
124
|
end
|
139
125
|
|
140
|
-
|
126
|
+
#: (Prism::GlobalVariableOperatorWriteNode node) -> void
|
141
127
|
def on_global_variable_operator_write_node_enter(node)
|
142
128
|
handle_global_variable_definition(node.name.to_s)
|
143
129
|
end
|
144
130
|
|
145
|
-
|
131
|
+
#: (Prism::GlobalVariableOrWriteNode node) -> void
|
146
132
|
def on_global_variable_or_write_node_enter(node)
|
147
133
|
handle_global_variable_definition(node.name.to_s)
|
148
134
|
end
|
149
135
|
|
150
|
-
|
136
|
+
#: (Prism::GlobalVariableReadNode node) -> void
|
151
137
|
def on_global_variable_read_node_enter(node)
|
152
138
|
handle_global_variable_definition(node.name.to_s)
|
153
139
|
end
|
154
140
|
|
155
|
-
|
141
|
+
#: (Prism::GlobalVariableTargetNode node) -> void
|
156
142
|
def on_global_variable_target_node_enter(node)
|
157
143
|
handle_global_variable_definition(node.name.to_s)
|
158
144
|
end
|
159
145
|
|
160
|
-
|
146
|
+
#: (Prism::GlobalVariableWriteNode node) -> void
|
161
147
|
def on_global_variable_write_node_enter(node)
|
162
148
|
handle_global_variable_definition(node.name.to_s)
|
163
149
|
end
|
164
150
|
|
165
|
-
|
151
|
+
#: (Prism::InstanceVariableReadNode node) -> void
|
166
152
|
def on_instance_variable_read_node_enter(node)
|
167
153
|
handle_instance_variable_definition(node.name.to_s)
|
168
154
|
end
|
169
155
|
|
170
|
-
|
156
|
+
#: (Prism::InstanceVariableWriteNode node) -> void
|
171
157
|
def on_instance_variable_write_node_enter(node)
|
172
158
|
handle_instance_variable_definition(node.name.to_s)
|
173
159
|
end
|
174
160
|
|
175
|
-
|
161
|
+
#: (Prism::InstanceVariableAndWriteNode node) -> void
|
176
162
|
def on_instance_variable_and_write_node_enter(node)
|
177
163
|
handle_instance_variable_definition(node.name.to_s)
|
178
164
|
end
|
179
165
|
|
180
|
-
|
166
|
+
#: (Prism::InstanceVariableOperatorWriteNode node) -> void
|
181
167
|
def on_instance_variable_operator_write_node_enter(node)
|
182
168
|
handle_instance_variable_definition(node.name.to_s)
|
183
169
|
end
|
184
170
|
|
185
|
-
|
171
|
+
#: (Prism::InstanceVariableOrWriteNode node) -> void
|
186
172
|
def on_instance_variable_or_write_node_enter(node)
|
187
173
|
handle_instance_variable_definition(node.name.to_s)
|
188
174
|
end
|
189
175
|
|
190
|
-
|
176
|
+
#: (Prism::InstanceVariableTargetNode node) -> void
|
191
177
|
def on_instance_variable_target_node_enter(node)
|
192
178
|
handle_instance_variable_definition(node.name.to_s)
|
193
179
|
end
|
194
180
|
|
195
|
-
|
181
|
+
#: (Prism::SuperNode node) -> void
|
196
182
|
def on_super_node_enter(node)
|
197
183
|
handle_super_node_definition
|
198
184
|
end
|
199
185
|
|
200
|
-
|
186
|
+
#: (Prism::ForwardingSuperNode node) -> void
|
201
187
|
def on_forwarding_super_node_enter(node)
|
202
188
|
handle_super_node_definition
|
203
189
|
end
|
204
190
|
|
205
|
-
|
191
|
+
#: (Prism::ClassVariableAndWriteNode node) -> void
|
206
192
|
def on_class_variable_and_write_node_enter(node)
|
207
193
|
handle_class_variable_definition(node.name.to_s)
|
208
194
|
end
|
209
195
|
|
210
|
-
|
196
|
+
#: (Prism::ClassVariableOperatorWriteNode node) -> void
|
211
197
|
def on_class_variable_operator_write_node_enter(node)
|
212
198
|
handle_class_variable_definition(node.name.to_s)
|
213
199
|
end
|
214
200
|
|
215
|
-
|
201
|
+
#: (Prism::ClassVariableOrWriteNode node) -> void
|
216
202
|
def on_class_variable_or_write_node_enter(node)
|
217
203
|
handle_class_variable_definition(node.name.to_s)
|
218
204
|
end
|
219
205
|
|
220
|
-
|
206
|
+
#: (Prism::ClassVariableTargetNode node) -> void
|
221
207
|
def on_class_variable_target_node_enter(node)
|
222
208
|
handle_class_variable_definition(node.name.to_s)
|
223
209
|
end
|
224
210
|
|
225
|
-
|
211
|
+
#: (Prism::ClassVariableReadNode node) -> void
|
226
212
|
def on_class_variable_read_node_enter(node)
|
227
213
|
handle_class_variable_definition(node.name.to_s)
|
228
214
|
end
|
229
215
|
|
230
|
-
|
216
|
+
#: (Prism::ClassVariableWriteNode node) -> void
|
231
217
|
def on_class_variable_write_node_enter(node)
|
232
218
|
handle_class_variable_definition(node.name.to_s)
|
233
219
|
end
|
234
220
|
|
235
221
|
private
|
236
222
|
|
237
|
-
|
223
|
+
#: -> void
|
238
224
|
def handle_super_node_definition
|
239
225
|
# Sorbet can handle super hover on typed true or higher
|
240
226
|
return if sorbet_level_true_or_higher?(@sorbet_level)
|
@@ -249,7 +235,7 @@ module RubyLsp
|
|
249
235
|
)
|
250
236
|
end
|
251
237
|
|
252
|
-
|
238
|
+
#: (String name) -> void
|
253
239
|
def handle_global_variable_definition(name)
|
254
240
|
entries = @index[name]
|
255
241
|
|
@@ -268,7 +254,7 @@ module RubyLsp
|
|
268
254
|
end
|
269
255
|
end
|
270
256
|
|
271
|
-
|
257
|
+
#: (String name) -> void
|
272
258
|
def handle_class_variable_definition(name)
|
273
259
|
type = @type_inferrer.infer_receiver_type(@node_context)
|
274
260
|
return unless type
|
@@ -286,7 +272,7 @@ module RubyLsp
|
|
286
272
|
# If by any chance we haven't indexed the owner, then there's no way to find the right declaration
|
287
273
|
end
|
288
274
|
|
289
|
-
|
275
|
+
#: (String name) -> void
|
290
276
|
def handle_instance_variable_definition(name)
|
291
277
|
# Sorbet enforces that all instance variables be declared on typed strict or higher, which means it will be able
|
292
278
|
# to provide all features for them
|
@@ -313,7 +299,7 @@ module RubyLsp
|
|
313
299
|
# If by any chance we haven't indexed the owner, then there's no way to find the right declaration
|
314
300
|
end
|
315
301
|
|
316
|
-
|
302
|
+
#: (String message, TypeInferrer::Type? receiver_type, ?inherited_only: bool) -> void
|
317
303
|
def handle_method_definition(message, receiver_type, inherited_only: false)
|
318
304
|
methods = if receiver_type
|
319
305
|
@index.resolve_method(message, receiver_type.name, inherited_only: inherited_only)
|
@@ -341,7 +327,7 @@ module RubyLsp
|
|
341
327
|
end
|
342
328
|
end
|
343
329
|
|
344
|
-
|
330
|
+
#: (Prism::StringNode node, Symbol message) -> void
|
345
331
|
def handle_require_definition(node, message)
|
346
332
|
case message
|
347
333
|
when :require
|
@@ -378,7 +364,7 @@ module RubyLsp
|
|
378
364
|
end
|
379
365
|
end
|
380
366
|
|
381
|
-
|
367
|
+
#: (Prism::CallNode node) -> void
|
382
368
|
def handle_autoload_definition(node)
|
383
369
|
argument = node.arguments&.arguments&.first
|
384
370
|
return unless argument.is_a?(Prism::SymbolNode)
|
@@ -389,7 +375,7 @@ module RubyLsp
|
|
389
375
|
find_in_index(constant_name)
|
390
376
|
end
|
391
377
|
|
392
|
-
|
378
|
+
#: (String value) -> void
|
393
379
|
def find_in_index(value)
|
394
380
|
entries = @index.resolve(value, @node_context.nesting)
|
395
381
|
return unless entries
|