ruby-lsp 0.17.12 → 0.17.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/exe/ruby-lsp +6 -4
  4. data/exe/ruby-lsp-check +1 -1
  5. data/lib/ruby_indexer/lib/ruby_indexer/declaration_listener.rb +1 -1
  6. data/lib/ruby_indexer/lib/ruby_indexer/index.rb +6 -1
  7. data/lib/ruby_indexer/ruby_indexer.rb +0 -8
  8. data/lib/ruby_indexer/test/configuration_test.rb +1 -1
  9. data/lib/ruby_lsp/addon.rb +9 -4
  10. data/lib/ruby_lsp/base_server.rb +7 -2
  11. data/lib/ruby_lsp/document.rb +9 -178
  12. data/lib/ruby_lsp/erb_document.rb +16 -2
  13. data/lib/ruby_lsp/global_state.rb +34 -14
  14. data/lib/ruby_lsp/internal.rb +1 -0
  15. data/lib/ruby_lsp/listeners/completion.rb +5 -5
  16. data/lib/ruby_lsp/listeners/definition.rb +3 -3
  17. data/lib/ruby_lsp/listeners/hover.rb +5 -5
  18. data/lib/ruby_lsp/listeners/signature_help.rb +1 -1
  19. data/lib/ruby_lsp/rbs_document.rb +41 -0
  20. data/lib/ruby_lsp/requests/code_action_resolve.rb +37 -21
  21. data/lib/ruby_lsp/requests/code_actions.rb +3 -3
  22. data/lib/ruby_lsp/requests/completion.rb +3 -3
  23. data/lib/ruby_lsp/requests/definition.rb +2 -2
  24. data/lib/ruby_lsp/requests/diagnostics.rb +1 -1
  25. data/lib/ruby_lsp/requests/document_highlight.rb +1 -1
  26. data/lib/ruby_lsp/requests/formatting.rb +1 -1
  27. data/lib/ruby_lsp/requests/hover.rb +2 -2
  28. data/lib/ruby_lsp/requests/inlay_hints.rb +1 -1
  29. data/lib/ruby_lsp/requests/on_type_formatting.rb +1 -1
  30. data/lib/ruby_lsp/requests/prepare_type_hierarchy.rb +1 -1
  31. data/lib/ruby_lsp/requests/selection_ranges.rb +2 -1
  32. data/lib/ruby_lsp/requests/show_syntax_tree.rb +1 -1
  33. data/lib/ruby_lsp/requests/signature_help.rb +2 -2
  34. data/lib/ruby_lsp/requests/support/common.rb +2 -2
  35. data/lib/ruby_lsp/requests/support/formatter.rb +2 -2
  36. data/lib/ruby_lsp/requests/support/rubocop_diagnostic.rb +1 -1
  37. data/lib/ruby_lsp/requests/support/rubocop_formatter.rb +2 -2
  38. data/lib/ruby_lsp/requests/support/syntax_tree_formatter.rb +2 -2
  39. data/lib/ruby_lsp/ruby_document.rb +183 -1
  40. data/lib/ruby_lsp/server.rb +125 -15
  41. data/lib/ruby_lsp/setup_bundler.rb +15 -4
  42. data/lib/ruby_lsp/store.rb +10 -6
  43. data/lib/ruby_lsp/utils.rb +12 -0
  44. metadata +4 -3
@@ -19,10 +19,10 @@ module RubyLsp
19
19
  def process_message(message)
20
20
  case message[:method]
21
21
  when "initialize"
22
- $stderr.puts("Initializing Ruby LSP v#{VERSION}...")
22
+ send_log_message("Initializing Ruby LSP v#{VERSION}...")
23
23
  run_initialize(message)
24
24
  when "initialized"
25
- $stderr.puts("Finished initializing Ruby LSP!") unless @test_mode
25
+ send_log_message("Finished initializing Ruby LSP!") unless @test_mode
26
26
  run_initialized
27
27
  when "textDocument/didOpen"
28
28
  text_document_did_open(message)
@@ -121,12 +121,20 @@ module RubyLsp
121
121
  end
122
122
  end
123
123
 
124
- $stderr.puts("Error processing #{message[:method]}: #{e.full_message}")
124
+ send_log_message("Error processing #{message[:method]}: #{e.full_message}", type: Constant::MessageType::ERROR)
125
125
  end
126
126
 
127
127
  sig { void }
128
128
  def load_addons
129
- Addon.load_addons(@global_state, @outgoing_queue)
129
+ errors = Addon.load_addons(@global_state, @outgoing_queue)
130
+
131
+ if errors.any?
132
+ send_log_message(
133
+ "Error loading addons:\n\n#{errors.map(&:full_message).join("\n\n")}",
134
+ type: Constant::MessageType::WARNING,
135
+ )
136
+ end
137
+
130
138
  errored_addons = Addon.addons.select(&:error?)
131
139
 
132
140
  if errored_addons.any?
@@ -140,7 +148,12 @@ module RubyLsp
140
148
  ),
141
149
  )
142
150
 
143
- $stderr.puts(errored_addons.map(&:errors_details).join("\n\n")) unless @test_mode
151
+ unless @test_mode
152
+ send_log_message(
153
+ errored_addons.map(&:errors_details).join("\n\n"),
154
+ type: Constant::MessageType::WARNING,
155
+ )
156
+ end
144
157
  end
145
158
  end
146
159
 
@@ -149,7 +162,7 @@ module RubyLsp
149
162
  sig { params(message: T::Hash[Symbol, T.untyped]).void }
150
163
  def run_initialize(message)
151
164
  options = message[:params]
152
- @global_state.apply_options(options)
165
+ global_state_notifications = @global_state.apply_options(options)
153
166
 
154
167
  client_name = options.dig(:clientInfo, :name)
155
168
  @store.client_name = client_name if client_name
@@ -258,6 +271,8 @@ module RubyLsp
258
271
  process_indexing_configuration(options.dig(:initializationOptions, :indexing))
259
272
 
260
273
  begin_progress("indexing-progress", "Ruby LSP: indexing files")
274
+
275
+ global_state_notifications.each { |notification| send_message(notification) }
261
276
  end
262
277
 
263
278
  sig { void }
@@ -281,11 +296,14 @@ module RubyLsp
281
296
  @mutex.synchronize do
282
297
  text_document = message.dig(:params, :textDocument)
283
298
  language_id = case text_document[:languageId]
284
- when "erb"
299
+ when "erb", "eruby"
285
300
  Document::LanguageId::ERB
301
+ when "rbs"
302
+ Document::LanguageId::RBS
286
303
  else
287
304
  Document::LanguageId::Ruby
288
305
  end
306
+
289
307
  @store.set(
290
308
  uri: text_document[:uri],
291
309
  source: text_document[:text],
@@ -326,7 +344,12 @@ module RubyLsp
326
344
  def text_document_selection_range(message)
327
345
  uri = message.dig(:params, :textDocument, :uri)
328
346
  ranges = @store.cache_fetch(uri, "textDocument/selectionRange") do |document|
329
- Requests::SelectionRanges.new(document).perform
347
+ case document
348
+ when RubyDocument, ERBDocument
349
+ Requests::SelectionRanges.new(document).perform
350
+ else
351
+ []
352
+ end
330
353
  end
331
354
 
332
355
  # Per the selection range request spec (https://microsoft.github.io/language-server-protocol/specification#textDocument_selectionRange),
@@ -348,6 +371,11 @@ module RubyLsp
348
371
  uri = URI(message.dig(:params, :textDocument, :uri))
349
372
  document = @store.get(uri)
350
373
 
374
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
375
+ send_empty_response(message[:id])
376
+ return
377
+ end
378
+
351
379
  # If the response has already been cached by another request, return it
352
380
  cached_response = document.cache_get(message[:method])
353
381
  if cached_response
@@ -392,6 +420,12 @@ module RubyLsp
392
420
  range = params[:range]
393
421
  uri = params.dig(:textDocument, :uri)
394
422
  document = @store.get(uri)
423
+
424
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
425
+ send_empty_response(message[:id])
426
+ return
427
+ end
428
+
395
429
  start_line = range.dig(:start, :line)
396
430
  end_line = range.dig(:end, :line)
397
431
 
@@ -421,6 +455,10 @@ module RubyLsp
421
455
  end
422
456
 
423
457
  document = @store.get(uri)
458
+ unless document.is_a?(RubyDocument)
459
+ send_empty_response(message[:id])
460
+ return
461
+ end
424
462
 
425
463
  response = Requests::Formatting.new(@global_state, document).perform
426
464
  send_message(Result.new(id: message[:id], response: response))
@@ -437,6 +475,12 @@ module RubyLsp
437
475
  params = message[:params]
438
476
  dispatcher = Prism::Dispatcher.new
439
477
  document = @store.get(params.dig(:textDocument, :uri))
478
+
479
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
480
+ send_empty_response(message[:id])
481
+ return
482
+ end
483
+
440
484
  request = Requests::DocumentHighlight.new(document, params[:position], dispatcher)
441
485
  dispatcher.dispatch(document.parse_result.value)
442
486
  send_message(Result.new(id: message[:id], response: request.perform))
@@ -447,6 +491,11 @@ module RubyLsp
447
491
  params = message[:params]
448
492
  document = @store.get(params.dig(:textDocument, :uri))
449
493
 
494
+ unless document.is_a?(RubyDocument)
495
+ send_empty_response(message[:id])
496
+ return
497
+ end
498
+
450
499
  send_message(
451
500
  Result.new(
452
501
  id: message[:id],
@@ -466,6 +515,11 @@ module RubyLsp
466
515
  dispatcher = Prism::Dispatcher.new
467
516
  document = @store.get(params.dig(:textDocument, :uri))
468
517
 
518
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
519
+ send_empty_response(message[:id])
520
+ return
521
+ end
522
+
469
523
  send_message(
470
524
  Result.new(
471
525
  id: message[:id],
@@ -480,9 +534,10 @@ module RubyLsp
480
534
  )
481
535
  end
482
536
 
483
- sig { params(document: Document).returns(Document::SorbetLevel) }
537
+ sig { params(document: Document[T.untyped]).returns(RubyDocument::SorbetLevel) }
484
538
  def sorbet_level(document)
485
- return Document::SorbetLevel::Ignore unless @global_state.has_type_checker
539
+ return RubyDocument::SorbetLevel::Ignore unless @global_state.has_type_checker
540
+ return RubyDocument::SorbetLevel::Ignore unless document.is_a?(RubyDocument)
486
541
 
487
542
  document.sorbet_level
488
543
  end
@@ -493,6 +548,12 @@ module RubyLsp
493
548
  hints_configurations = T.must(@store.features_configuration.dig(:inlayHint))
494
549
  dispatcher = Prism::Dispatcher.new
495
550
  document = @store.get(params.dig(:textDocument, :uri))
551
+
552
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
553
+ send_empty_response(message[:id])
554
+ return
555
+ end
556
+
496
557
  request = Requests::InlayHints.new(document, params[:range], hints_configurations, dispatcher)
497
558
  dispatcher.visit(document.parse_result.value)
498
559
  send_message(Result.new(id: message[:id], response: request.perform))
@@ -503,6 +564,11 @@ module RubyLsp
503
564
  params = message[:params]
504
565
  document = @store.get(params.dig(:textDocument, :uri))
505
566
 
567
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
568
+ send_empty_response(message[:id])
569
+ return
570
+ end
571
+
506
572
  send_message(
507
573
  Result.new(
508
574
  id: message[:id],
@@ -520,6 +586,12 @@ module RubyLsp
520
586
  params = message[:params]
521
587
  uri = URI(params.dig(:data, :uri))
522
588
  document = @store.get(uri)
589
+
590
+ unless document.is_a?(RubyDocument)
591
+ send_message(Notification.window_show_error("Code actions are currently only available for Ruby documents"))
592
+ raise Requests::CodeActionResolve::CodeActionError
593
+ end
594
+
523
595
  result = Requests::CodeActionResolve.new(document, params).perform
524
596
 
525
597
  case result
@@ -559,7 +631,10 @@ module RubyLsp
559
631
  document = @store.get(uri)
560
632
 
561
633
  response = document.cache_fetch("textDocument/diagnostic") do |document|
562
- Requests::Diagnostics.new(@global_state, document).perform
634
+ case document
635
+ when RubyDocument
636
+ Requests::Diagnostics.new(@global_state, document).perform
637
+ end
563
638
  end
564
639
 
565
640
  send_message(
@@ -582,6 +657,11 @@ module RubyLsp
582
657
  dispatcher = Prism::Dispatcher.new
583
658
  document = @store.get(params.dig(:textDocument, :uri))
584
659
 
660
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
661
+ send_empty_response(message[:id])
662
+ return
663
+ end
664
+
585
665
  send_message(
586
666
  Result.new(
587
667
  id: message[:id],
@@ -610,6 +690,11 @@ module RubyLsp
610
690
  dispatcher = Prism::Dispatcher.new
611
691
  document = @store.get(params.dig(:textDocument, :uri))
612
692
 
693
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
694
+ send_empty_response(message[:id])
695
+ return
696
+ end
697
+
613
698
  send_message(
614
699
  Result.new(
615
700
  id: message[:id],
@@ -631,6 +716,11 @@ module RubyLsp
631
716
  dispatcher = Prism::Dispatcher.new
632
717
  document = @store.get(params.dig(:textDocument, :uri))
633
718
 
719
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
720
+ send_empty_response(message[:id])
721
+ return
722
+ end
723
+
634
724
  send_message(
635
725
  Result.new(
636
726
  id: message[:id],
@@ -688,9 +778,16 @@ module RubyLsp
688
778
  sig { params(message: T::Hash[Symbol, T.untyped]).void }
689
779
  def text_document_show_syntax_tree(message)
690
780
  params = message[:params]
781
+ document = @store.get(params.dig(:textDocument, :uri))
782
+
783
+ unless document.is_a?(RubyDocument)
784
+ send_empty_response(message[:id])
785
+ return
786
+ end
787
+
691
788
  response = {
692
789
  ast: Requests::ShowSyntaxTree.new(
693
- @store.get(params.dig(:textDocument, :uri)),
790
+ document,
694
791
  params[:range],
695
792
  ).perform,
696
793
  }
@@ -700,11 +797,19 @@ module RubyLsp
700
797
  sig { params(message: T::Hash[Symbol, T.untyped]).void }
701
798
  def text_document_prepare_type_hierarchy(message)
702
799
  params = message[:params]
800
+ document = @store.get(params.dig(:textDocument, :uri))
801
+
802
+ unless document.is_a?(RubyDocument) || document.is_a?(ERBDocument)
803
+ send_empty_response(message[:id])
804
+ return
805
+ end
806
+
703
807
  response = Requests::PrepareTypeHierarchy.new(
704
- @store.get(params.dig(:textDocument, :uri)),
808
+ document,
705
809
  @global_state.index,
706
810
  params[:position],
707
811
  ).perform
812
+
708
813
  send_message(Result.new(id: message[:id], response: response))
709
814
  end
710
815
 
@@ -771,6 +876,11 @@ module RubyLsp
771
876
  send_message(Notification.window_show_error("Error while indexing: #{error.message}"))
772
877
  end
773
878
 
879
+ # Indexing produces a high number of short lived object allocations. That might lead to some fragmentation and
880
+ # an unnecessarily expanded heap. Compacting ensures that the heap is as small as possible and that future
881
+ # allocations and garbage collections are faster
882
+ GC.compact
883
+
774
884
  # Always end the progress notification even if indexing failed or else it never goes away and the user has no
775
885
  # way of dismissing it
776
886
  end_progress("indexing-progress")
@@ -862,7 +972,7 @@ module RubyLsp
862
972
 
863
973
  if File.exist?(index_path)
864
974
  begin
865
- RubyIndexer.configuration.apply_config(YAML.parse_file(index_path).to_ruby)
975
+ @global_state.index.configuration.apply_config(YAML.parse_file(index_path).to_ruby)
866
976
  send_message(
867
977
  Notification.new(
868
978
  method: "window/showMessage",
@@ -891,7 +1001,7 @@ module RubyLsp
891
1001
  return unless indexing_options
892
1002
 
893
1003
  # The index expects snake case configurations, but VS Code standardizes on camel case settings
894
- RubyIndexer.configuration.apply_config(
1004
+ @global_state.index.configuration.apply_config(
895
1005
  indexing_options.transform_keys { |key| key.to_s.gsub(/([A-Z])/, "_\\1").downcase },
896
1006
  )
897
1007
  end
@@ -50,6 +50,7 @@ module RubyLsp
50
50
  @last_updated_path = T.let(@custom_dir + "last_updated", Pathname)
51
51
 
52
52
  @dependencies = T.let(load_dependencies, T::Hash[String, T.untyped])
53
+ @rails_app = T.let(rails_app?, T::Boolean)
53
54
  @retry = T.let(false, T::Boolean)
54
55
  end
55
56
 
@@ -62,7 +63,7 @@ module RubyLsp
62
63
  # Do not set up a custom bundle if LSP dependencies are already in the Gemfile
63
64
  if @dependencies["ruby-lsp"] &&
64
65
  @dependencies["debug"] &&
65
- (@dependencies["rails"] ? @dependencies["ruby-lsp-rails"] : true)
66
+ (@rails_app ? @dependencies["ruby-lsp-rails"] : true)
66
67
  $stderr.puts(
67
68
  "Ruby LSP> Skipping custom bundle setup since LSP dependencies are already in #{@gemfile}",
68
69
  )
@@ -148,7 +149,7 @@ module RubyLsp
148
149
  parts << 'gem "debug", require: false, group: :development, platforms: :mri'
149
150
  end
150
151
 
151
- if @dependencies["rails"] && !@dependencies["ruby-lsp-rails"]
152
+ if @rails_app && !@dependencies["ruby-lsp-rails"]
152
153
  parts << 'gem "ruby-lsp-rails", require: false, group: :development'
153
154
  end
154
155
 
@@ -209,7 +210,7 @@ module RubyLsp
209
210
  command << " && bundle update "
210
211
  command << "ruby-lsp " unless @dependencies["ruby-lsp"]
211
212
  command << "debug " unless @dependencies["debug"]
212
- command << "ruby-lsp-rails " if @dependencies["rails"] && !@dependencies["ruby-lsp-rails"]
213
+ command << "ruby-lsp-rails " if @rails_app && !@dependencies["ruby-lsp-rails"]
213
214
  command << "--pre" if @experimental
214
215
  command.delete_suffix!(" ")
215
216
  command << ")"
@@ -244,7 +245,7 @@ module RubyLsp
244
245
  def should_bundle_update?
245
246
  # If `ruby-lsp`, `ruby-lsp-rails` and `debug` are in the Gemfile, then we shouldn't try to upgrade them or else it
246
247
  # will produce version control changes
247
- if @dependencies["rails"]
248
+ if @rails_app
248
249
  return false if @dependencies.values_at("ruby-lsp", "ruby-lsp-rails", "debug").all?
249
250
 
250
251
  # If the custom lockfile doesn't include `ruby-lsp`, `ruby-lsp-rails` or `debug`, we need to run bundle install
@@ -280,5 +281,15 @@ module RubyLsp
280
281
 
281
282
  @custom_lockfile.write(content)
282
283
  end
284
+
285
+ # Detects if the project is a Rails app by looking if the superclass of the main class is `Rails::Application`
286
+ sig { returns(T::Boolean) }
287
+ def rails_app?
288
+ config = Pathname.new("config/application.rb").expand_path
289
+ application_contents = config.read if config.exist?
290
+ return false unless application_contents
291
+
292
+ /class .* < (::)?Rails::Application/.match?(application_contents)
293
+ end
283
294
  end
284
295
  end
@@ -18,7 +18,7 @@ module RubyLsp
18
18
 
19
19
  sig { void }
20
20
  def initialize
21
- @state = T.let({}, T::Hash[String, Document])
21
+ @state = T.let({}, T::Hash[String, Document[T.untyped]])
22
22
  @supports_progress = T.let(true, T::Boolean)
23
23
  @features_configuration = T.let(
24
24
  {
@@ -33,7 +33,7 @@ module RubyLsp
33
33
  @client_name = T.let("Unknown", String)
34
34
  end
35
35
 
36
- sig { params(uri: URI::Generic).returns(Document) }
36
+ sig { params(uri: URI::Generic).returns(Document[T.untyped]) }
37
37
  def get(uri)
38
38
  document = @state[uri.to_s]
39
39
  return document unless document.nil?
@@ -44,8 +44,11 @@ module RubyLsp
44
44
  raise NonExistingDocumentError, uri.to_s unless path
45
45
 
46
46
  ext = File.extname(path)
47
- language_id = if ext == ".erb" || ext == ".rhtml"
47
+ language_id = case ext
48
+ when ".erb", ".rhtml"
48
49
  Document::LanguageId::ERB
50
+ when ".rbs"
51
+ Document::LanguageId::RBS
49
52
  else
50
53
  Document::LanguageId::Ruby
51
54
  end
@@ -66,13 +69,14 @@ module RubyLsp
66
69
  ).void
67
70
  end
68
71
  def set(uri:, source:, version:, language_id:, encoding: Encoding::UTF_8)
69
- document = case language_id
72
+ @state[uri.to_s] = case language_id
70
73
  when Document::LanguageId::ERB
71
74
  ERBDocument.new(source: source, version: version, uri: uri, encoding: encoding)
75
+ when Document::LanguageId::RBS
76
+ RBSDocument.new(source: source, version: version, uri: uri, encoding: encoding)
72
77
  else
73
78
  RubyDocument.new(source: source, version: version, uri: uri, encoding: encoding)
74
79
  end
75
- @state[uri.to_s] = document
76
80
  end
77
81
 
78
82
  sig { params(uri: URI::Generic, edits: T::Array[T::Hash[Symbol, T.untyped]], version: Integer).void }
@@ -100,7 +104,7 @@ module RubyLsp
100
104
  .params(
101
105
  uri: URI::Generic,
102
106
  request_name: String,
103
- block: T.proc.params(document: Document).returns(T.type_parameter(:T)),
107
+ block: T.proc.params(document: Document[T.untyped]).returns(T.type_parameter(:T)),
104
108
  ).returns(T.type_parameter(:T))
105
109
  end
106
110
  def cache_fetch(uri, request_name, &block)
@@ -53,6 +53,7 @@ module RubyLsp
53
53
  class Notification < Message
54
54
  class << self
55
55
  extend T::Sig
56
+
56
57
  sig { params(message: String).returns(Notification) }
57
58
  def window_show_error(message)
58
59
  new(
@@ -63,6 +64,14 @@ module RubyLsp
63
64
  ),
64
65
  )
65
66
  end
67
+
68
+ sig { params(message: String, type: Integer).returns(Notification) }
69
+ def window_log_message(message, type: Constant::MessageType::LOG)
70
+ new(
71
+ method: "window/logMessage",
72
+ params: Interface::LogMessageParams.new(type: type, message: message),
73
+ )
74
+ end
66
75
  end
67
76
 
68
77
  extend T::Sig
@@ -122,6 +131,9 @@ module RubyLsp
122
131
  sig { returns(T.untyped) }
123
132
  attr_reader :response
124
133
 
134
+ sig { returns(Integer) }
135
+ attr_reader :id
136
+
125
137
  sig { params(id: Integer, response: T.untyped).void }
126
138
  def initialize(id:, response:)
127
139
  @id = id
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-lsp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.17.12
4
+ version: 0.17.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shopify
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-08-08 00:00:00.000000000 Z
11
+ date: 2024-08-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: language_server-protocol
@@ -137,6 +137,7 @@ files:
137
137
  - lib/ruby_lsp/load_sorbet.rb
138
138
  - lib/ruby_lsp/node_context.rb
139
139
  - lib/ruby_lsp/parameter_scope.rb
140
+ - lib/ruby_lsp/rbs_document.rb
140
141
  - lib/ruby_lsp/requests.rb
141
142
  - lib/ruby_lsp/requests/code_action_resolve.rb
142
143
  - lib/ruby_lsp/requests/code_actions.rb
@@ -206,7 +207,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
206
207
  - !ruby/object:Gem::Version
207
208
  version: '0'
208
209
  requirements: []
209
- rubygems_version: 3.5.16
210
+ rubygems_version: 3.5.17
210
211
  signing_key:
211
212
  specification_version: 4
212
213
  summary: An opinionated language server for Ruby