solargraph 0.54.0 → 0.54.5

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 (83) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +45 -0
  3. data/lib/solargraph/api_map/cache.rb +10 -1
  4. data/lib/solargraph/api_map/index.rb +167 -0
  5. data/lib/solargraph/api_map/store.rb +72 -121
  6. data/lib/solargraph/api_map.rb +94 -36
  7. data/lib/solargraph/bench.rb +17 -1
  8. data/lib/solargraph/complex_type/type_methods.rb +17 -11
  9. data/lib/solargraph/complex_type/unique_type.rb +93 -10
  10. data/lib/solargraph/complex_type.rb +68 -18
  11. data/lib/solargraph/convention.rb +1 -0
  12. data/lib/solargraph/doc_map.rb +1 -0
  13. data/lib/solargraph/equality.rb +33 -0
  14. data/lib/solargraph/language_server/host/message_worker.rb +48 -5
  15. data/lib/solargraph/language_server/host.rb +12 -11
  16. data/lib/solargraph/language_server/message/base.rb +19 -12
  17. data/lib/solargraph/language_server/message/initialize.rb +3 -1
  18. data/lib/solargraph/language_server/message/text_document/completion.rb +0 -3
  19. data/lib/solargraph/language_server/message/text_document/definition.rb +3 -3
  20. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +3 -3
  21. data/lib/solargraph/language_server/message/text_document/formatting.rb +4 -0
  22. data/lib/solargraph/language_server/message/text_document/hover.rb +1 -1
  23. data/lib/solargraph/language_server/message/text_document/type_definition.rb +3 -3
  24. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +2 -2
  25. data/lib/solargraph/language_server/progress.rb +19 -2
  26. data/lib/solargraph/library.rb +31 -41
  27. data/lib/solargraph/location.rb +21 -1
  28. data/lib/solargraph/parser/node_methods.rb +1 -1
  29. data/lib/solargraph/parser/node_processor.rb +1 -0
  30. data/lib/solargraph/parser/parser_gem/class_methods.rb +2 -6
  31. data/lib/solargraph/parser/parser_gem/node_methods.rb +3 -3
  32. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +23 -19
  33. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +8 -2
  34. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +1 -1
  35. data/lib/solargraph/parser.rb +2 -5
  36. data/lib/solargraph/pin/base.rb +41 -17
  37. data/lib/solargraph/pin/base_variable.rb +4 -3
  38. data/lib/solargraph/pin/block.rb +6 -26
  39. data/lib/solargraph/pin/callable.rb +147 -0
  40. data/lib/solargraph/pin/closure.rb +8 -3
  41. data/lib/solargraph/pin/common.rb +2 -6
  42. data/lib/solargraph/pin/conversions.rb +3 -2
  43. data/lib/solargraph/pin/instance_variable.rb +2 -2
  44. data/lib/solargraph/pin/method.rb +57 -31
  45. data/lib/solargraph/pin/namespace.rb +5 -5
  46. data/lib/solargraph/pin/parameter.rb +11 -12
  47. data/lib/solargraph/pin/proxy_type.rb +1 -1
  48. data/lib/solargraph/pin/signature.rb +3 -129
  49. data/lib/solargraph/pin.rb +4 -1
  50. data/lib/solargraph/position.rb +7 -0
  51. data/lib/solargraph/range.rb +9 -4
  52. data/lib/solargraph/rbs_map/conversions.rb +77 -38
  53. data/lib/solargraph/rbs_map/core_fills.rb +6 -6
  54. data/lib/solargraph/rbs_map.rb +1 -0
  55. data/lib/solargraph/shell.rb +19 -2
  56. data/lib/solargraph/source/chain/array.rb +7 -6
  57. data/lib/solargraph/source/chain/block_symbol.rb +1 -1
  58. data/lib/solargraph/source/chain/block_variable.rb +1 -1
  59. data/lib/solargraph/source/chain/call.rb +90 -55
  60. data/lib/solargraph/source/chain/hash.rb +5 -0
  61. data/lib/solargraph/source/chain/if.rb +5 -0
  62. data/lib/solargraph/source/chain/link.rb +26 -5
  63. data/lib/solargraph/source/chain/literal.rb +5 -0
  64. data/lib/solargraph/source/chain/or.rb +1 -1
  65. data/lib/solargraph/source/chain.rb +68 -30
  66. data/lib/solargraph/source/cursor.rb +3 -2
  67. data/lib/solargraph/source.rb +104 -86
  68. data/lib/solargraph/source_map/clip.rb +5 -5
  69. data/lib/solargraph/source_map/data.rb +30 -0
  70. data/lib/solargraph/source_map.rb +28 -16
  71. data/lib/solargraph/type_checker/rules.rb +6 -1
  72. data/lib/solargraph/type_checker.rb +15 -15
  73. data/lib/solargraph/version.rb +1 -1
  74. data/lib/solargraph/views/environment.erb +3 -5
  75. data/lib/solargraph/workspace/config.rb +7 -3
  76. data/lib/solargraph/workspace.rb +1 -1
  77. data/lib/solargraph/yard_map/mapper/to_constant.rb +1 -0
  78. data/lib/solargraph/yard_map/mapper/to_namespace.rb +1 -0
  79. data/lib/solargraph/yard_map/mapper.rb +1 -0
  80. data/lib/solargraph/yardoc.rb +1 -1
  81. data/lib/solargraph.rb +1 -0
  82. data/solargraph.gemspec +5 -5
  83. metadata +29 -25
@@ -4,40 +4,41 @@ require 'yard'
4
4
  require 'solargraph/yard_tags'
5
5
 
6
6
  module Solargraph
7
- # An index of pins and other ApiMap-related data for a Source.
7
+ # An index of Pins and other ApiMap-related data for a single Source
8
+ # that can be queried.
8
9
  #
9
10
  class SourceMap
10
11
  autoload :Mapper, 'solargraph/source_map/mapper'
11
12
  autoload :Clip, 'solargraph/source_map/clip'
12
13
  autoload :Completion, 'solargraph/source_map/completion'
14
+ autoload :Data, 'solargraph/source_map/data'
13
15
 
14
16
  # @return [Source]
15
17
  attr_reader :source
16
18
 
17
19
  # @return [Array<Pin::Base>]
18
- attr_reader :pins
20
+ def pins
21
+ data.pins
22
+ end
19
23
 
20
24
  # @return [Array<Pin::LocalVariable>]
21
- attr_reader :locals
25
+ def locals
26
+ data.locals
27
+ end
22
28
 
23
29
  # @param source [Source]
24
- # @param pins [Array<Pin::Base>]
25
- # @param locals [Array<Pin::Base>]
26
- def initialize source, pins, locals
27
- # HACK: Keep the library from changing this
28
- @source = source.dup
29
- @pins = pins
30
- @locals = locals
30
+ def initialize source
31
+ @source = source
32
+
31
33
  environ.merge Convention.for_local(self) unless filename.nil?
32
34
  self.convention_pins = environ.pins
33
- @pin_class_hash = pins.to_set.classify(&:class).transform_values(&:to_a)
34
35
  @pin_select_cache = {}
35
36
  end
36
37
 
37
38
  # @param klass [Class]
38
39
  # @return [Array<Pin::Base>]
39
40
  def pins_by_class klass
40
- @pin_select_cache[klass] ||= @pin_class_hash.select { |key, _| key <= klass }.values.flatten
41
+ @pin_select_cache[klass] ||= pin_class_hash.select { |key, _| key <= klass }.values.flatten
41
42
  end
42
43
 
43
44
  # A hash representing the state of the source map's API.
@@ -47,7 +48,7 @@ module Solargraph
47
48
  #
48
49
  # @return [Integer]
49
50
  def api_hash
50
- @api_hash ||= (pins_by_class(Pin::Constant) + pins_by_class(Pin::Namespace).select { |pin| pin.namespace.to_s > '' } + pins_by_class(Pin::Reference) + pins_by_class(Pin::Method).map(&:node)).hash
51
+ @api_hash ||= (pins_by_class(Pin::Constant) + pins_by_class(Pin::Namespace).select { |pin| pin.namespace.to_s > '' } + pins_by_class(Pin::Reference) + pins_by_class(Pin::Method).map(&:node) + locals).hash
51
52
  end
52
53
 
53
54
  # @return [String]
@@ -117,10 +118,13 @@ module Solargraph
117
118
  _locate_pin line, character, Pin::Namespace, Pin::Method, Pin::Block
118
119
  end
119
120
 
121
+ # @todo Candidate for deprecation
122
+ #
120
123
  # @param other_map [SourceMap]
121
124
  # @return [Boolean]
122
125
  def try_merge! other_map
123
126
  return false if pins.length != other_map.pins.length || locals.length != other_map.locals.length || requires.map(&:name).uniq.sort != other_map.requires.map(&:name).uniq.sort
127
+
124
128
  pins.each_index do |i|
125
129
  return false unless pins[i].try_merge!(other_map.pins[i])
126
130
  end
@@ -161,16 +165,24 @@ module Solargraph
161
165
  SourceMap.map(source)
162
166
  end
163
167
 
168
+ # @deprecated
164
169
  # @param source [Source]
165
170
  # @return [SourceMap]
166
171
  def map source
167
- result = SourceMap::Mapper.map(source)
168
- new(source, *result)
172
+ new(source)
169
173
  end
170
174
  end
171
175
 
172
176
  private
173
177
 
178
+ def pin_class_hash
179
+ @pin_class_hash ||= pins.to_set.classify(&:class).transform_values(&:to_a)
180
+ end
181
+
182
+ def data
183
+ @data ||= Data.new(source)
184
+ end
185
+
174
186
  # @return [Array<Pin::Base>]
175
187
  def convention_pins
176
188
  @convention_pins || []
@@ -179,7 +191,7 @@ module Solargraph
179
191
  # @param pins [Array<Pin::Base>]
180
192
  # @return [Array<Pin::Base>]
181
193
  def convention_pins=(pins)
182
- # unmemoizing the document_symbols in case it was called from any of convnetions
194
+ # unmemoizing the document_symbols in case it was called from any of conventions
183
195
  @document_symbols = nil
184
196
  @convention_pins = pins
185
197
  end
@@ -9,7 +9,8 @@ module Solargraph
9
9
  normal: 0,
10
10
  typed: 1,
11
11
  strict: 2,
12
- strong: 3
12
+ strong: 3,
13
+ alpha: 4
13
14
  }.freeze
14
15
 
15
16
  # @return [Symbol]
@@ -52,6 +53,10 @@ module Solargraph
52
53
  def validate_tags?
53
54
  rank > LEVELS[:normal]
54
55
  end
56
+
57
+ def require_all_return_types_match_inferred?
58
+ rank >= LEVELS[:alpha]
59
+ end
55
60
  end
56
61
  end
57
62
  end
@@ -29,6 +29,7 @@ module Solargraph
29
29
  # @todo Smarter directory resolution
30
30
  @api_map = api_map || Solargraph::ApiMap.load(File.dirname(filename))
31
31
  @rules = Rules.new(level)
32
+ # @type [Array<Range>]
32
33
  @marked_ranges = []
33
34
  end
34
35
 
@@ -90,11 +91,11 @@ module Solargraph
90
91
  def method_return_type_problems_for pin
91
92
  return [] if pin.is_a?(Pin::MethodAlias)
92
93
  result = []
93
- declared = pin.typify(api_map).self_to(pin.full_context.namespace)
94
+ declared = pin.typify(api_map).self_to_type(pin.full_context).qualify(api_map, pin.full_context.tag)
94
95
  if declared.undefined?
95
96
  if pin.return_type.undefined? && rules.require_type_tags?
96
97
  if pin.attribute?
97
- inferred = pin.probe(api_map).self_to(pin.full_context.namespace)
98
+ inferred = pin.probe(api_map).self_to_type(pin.full_context)
98
99
  result.push Problem.new(pin.location, "Missing @return tag for #{pin.path}", pin: pin) unless inferred.defined?
99
100
  else
100
101
  result.push Problem.new(pin.location, "Missing @return tag for #{pin.path}", pin: pin)
@@ -106,14 +107,14 @@ module Solargraph
106
107
  end
107
108
  elsif rules.validate_tags?
108
109
  unless pin.node.nil? || declared.void? || virtual_pin?(pin) || abstract?(pin)
109
- inferred = pin.probe(api_map).self_to(pin.full_context.namespace)
110
+ inferred = pin.probe(api_map).self_to_type(pin.full_context)
110
111
  if inferred.undefined?
111
112
  unless rules.ignore_all_undefined? || external?(pin)
112
113
  result.push Problem.new(pin.location, "#{pin.path} return type could not be inferred", pin: pin)
113
114
  end
114
115
  else
115
- unless (rules.rank > 1 ? all_types_match?(api_map, inferred, declared) : any_types_match?(api_map, declared, inferred))
116
- result.push Problem.new(pin.location, "Declared return type #{declared} does not match inferred type #{inferred} for #{pin.path}", pin: pin)
116
+ unless (rules.require_all_return_types_match_inferred? ? all_types_match?(api_map, inferred, declared) : any_types_match?(api_map, declared, inferred))
117
+ result.push Problem.new(pin.location, "Declared return type #{declared.rooted_tags} does not match inferred type #{inferred.rooted_tags} for #{pin.path}", pin: pin)
117
118
  end
118
119
  end
119
120
  end
@@ -154,7 +155,7 @@ module Solargraph
154
155
  break if par.decl == :restarg || par.decl == :kwrestarg || par.decl == :blockarg
155
156
  unless params[par.name]
156
157
  if pin.attribute?
157
- inferred = pin.probe(api_map).self_to(pin.full_context.namespace)
158
+ inferred = pin.probe(api_map).self_to_type(pin.full_context)
158
159
  if inferred.undefined?
159
160
  result.push Problem.new(pin.location, "Missing @param tag for #{par.name} on #{pin.path}", pin: pin)
160
161
  end
@@ -377,7 +378,7 @@ module Solargraph
377
378
  break
378
379
  end
379
380
  ptype = params.key?(par.name) ? params[par.name][:qualified] : ComplexType::UNDEFINED
380
- ptype = ptype.self_to(par.context.namespace)
381
+ ptype = ptype.self_to_type(par.context)
381
382
  if ptype.nil?
382
383
  # @todo Some level (strong, I guess) should require the param here
383
384
  else
@@ -413,7 +414,7 @@ module Solargraph
413
414
  # @param locals [Array<Pin::LocalVariable>]
414
415
  # @param location [Location]
415
416
  # @param pin [Pin::Method]
416
- # @param params [Hash{String => [nil, Hash]}]
417
+ # @param params [Hash{String => Hash{Symbol => String, Solargraph::ComplexType}}]
417
418
  # @param idx [Integer]
418
419
  #
419
420
  # @return [Array<Problem>]
@@ -467,10 +468,11 @@ module Solargraph
467
468
  end
468
469
 
469
470
  # @param pin [Pin::Method]
470
- # @return [Hash{String => Hash{Symbol => BaseObject}}]
471
+ # @return [Hash{String => Hash{Symbol => String, ComplexType}}]
471
472
  def param_hash(pin)
472
473
  tags = pin.docstring.tags(:param)
473
474
  return {} if tags.empty?
475
+ # @type [Hash{String => Hash{Symbol => String, ComplexType}}]
474
476
  result = {}
475
477
  tags.each do |tag|
476
478
  next if tag.types.nil? || tag.types.empty?
@@ -483,11 +485,9 @@ module Solargraph
483
485
  end
484
486
 
485
487
  # @param pins [Array<Pin::Method>]
486
- # @return [Hash{String => Hash{Symbol => BasicObject}}]
488
+ # @return [Hash{String => Hash{Symbol => String, ComplexType}}]
487
489
  def first_param_hash(pins)
488
490
  pins.each do |pin|
489
- # @todo this assignment from parametric use of Hash should not lose its generic
490
- # @type [Hash{String => Hash{Symbol => BasicObject}}]
491
491
  result = param_hash(pin)
492
492
  return result unless result.empty?
493
493
  end
@@ -512,7 +512,7 @@ module Solargraph
512
512
  !internal? pin
513
513
  end
514
514
 
515
- # @param pin [Pin::Base]
515
+ # @param pin [Pin::BaseVariable]
516
516
  def declared_externally? pin
517
517
  return true if pin.assignment.nil?
518
518
  chain = Solargraph::Parser.chain(pin.assignment, filename)
@@ -562,7 +562,7 @@ module Solargraph
562
562
  return [] unless pin.explicit?
563
563
  return [] if parameters.empty? && arguments.empty?
564
564
  return [] if pin.anon_splat?
565
- unchecked = arguments.clone
565
+ unchecked = arguments.dup # creates copy of and unthaws array
566
566
  add_params = 0
567
567
  if unchecked.empty? && parameters.any? { |param| param.decl == :kwarg }
568
568
  return [Problem.new(location, "Missing keyword arguments to #{pin.path}")]
@@ -638,7 +638,7 @@ module Solargraph
638
638
  (pin.closure && pin.closure.docstring.has_tag?('abstract'))
639
639
  end
640
640
 
641
- # @param pin [Pin::Base]
641
+ # @param pin [Pin::Method]
642
642
  # @return [Array<Source::Chain>]
643
643
  def fake_args_for(pin)
644
644
  args = []
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.54.0'
4
+ VERSION = '0.54.5'
5
5
  end
@@ -35,11 +35,9 @@
35
35
  <li>
36
36
  Core Cache Directory: N/A <%# @todo Fix %>
37
37
  </li>
38
- <% unless Solargraph::Parser.rubyvm? %>
39
- <li>
40
- Parser Target Version: <%= Solargraph::Parser.version %>
41
- </li>
42
- <% end %>
38
+ <li>
39
+ Parser Target Version: <%= Solargraph::Parser.version %>
40
+ </li>
43
41
  <li>
44
42
  Using Bundler: <%= ENV.key?('BUNDLE_BIN_PATH') %>
45
43
  </li>
@@ -15,7 +15,7 @@ module Solargraph
15
15
  attr_reader :directory
16
16
 
17
17
  # @todo To make this strongly typed we'll need a record syntax
18
- # @return [Hash{String => undefined}]
18
+ # @return [Hash{String => Array, Hash, Integer, nil}]
19
19
  attr_reader :raw_data
20
20
 
21
21
  # @param directory [String]
@@ -90,6 +90,7 @@ module Solargraph
90
90
 
91
91
  # A hash of options supported by the formatter
92
92
  #
93
+ # @sg-ignore pending https://github.com/castwide/solargraph/pull/905
93
94
  # @return [Hash]
94
95
  def formatter
95
96
  raw_data['formatter']
@@ -104,6 +105,7 @@ module Solargraph
104
105
 
105
106
  # The maximum number of files to parse from the workspace.
106
107
  #
108
+ # @sg-ignore pending https://github.com/castwide/solargraph/pull/905
107
109
  # @return [Integer]
108
110
  def max_files
109
111
  raw_data['max_files']
@@ -123,7 +125,7 @@ module Solargraph
123
125
  File.join(@directory, '.solargraph.yml')
124
126
  end
125
127
 
126
- # @return [Hash{String => Array, Hash, Integer}]
128
+ # @return [Hash{String => Array<undefined>, Hash{String => undefined}, Integer}]
127
129
  def config_data
128
130
  workspace_config = read_config(workspace_config_path)
129
131
  global_config = read_config(global_config_path)
@@ -226,7 +228,9 @@ module Solargraph
226
228
 
227
229
  # @return [Array<String>]
228
230
  def excluded_directories
229
- @raw_data['exclude']
231
+ # @type [Array<String>]
232
+ excluded = @raw_data['exclude']
233
+ excluded
230
234
  .select { |g| glob_is_directory?(g) }
231
235
  .map { |g| File.absolute_path(glob_to_directory(g), directory) }
232
236
  end
@@ -45,7 +45,7 @@ module Solargraph
45
45
  # or add it to the sources if the workspace is configured to include it.
46
46
  # The source is ignored if the configuration excludes it.
47
47
  #
48
- # @param source [Solargraph::Source]
48
+ # @param sources [Array<Solargraph::Source>]
49
49
  # @return [Boolean] True if the source was added to the workspace
50
50
  def merge *sources
51
51
  unless directory == '*' || sources.all? { |source| source_hash.key?(source.filename) }
@@ -6,6 +6,7 @@ module Solargraph
6
6
  module ToConstant
7
7
  extend YardMap::Helpers
8
8
 
9
+ # @param code_object [YARD::CodeObjects::Base]
9
10
  def self.make code_object, closure = nil, spec = nil
10
11
  closure ||= Solargraph::Pin::Namespace.new(
11
12
  name: code_object.namespace.to_s,
@@ -6,6 +6,7 @@ module Solargraph
6
6
  module ToNamespace
7
7
  extend YardMap::Helpers
8
8
 
9
+ # @param code_object [YARD::CodeObjects::NamespaceObject]
9
10
  def self.make code_object, spec, closure = nil
10
11
  closure ||= Solargraph::Pin::Namespace.new(
11
12
  name: code_object.namespace.to_s,
@@ -12,6 +12,7 @@ module Solargraph
12
12
  def initialize code_objects, spec = nil
13
13
  @code_objects = code_objects
14
14
  @spec = spec
15
+ # @type [Array<Solargraph::Pin::Base>]
15
16
  @pins = []
16
17
  @namespace_pins = {}
17
18
  end
@@ -35,7 +35,7 @@ module Solargraph
35
35
  # @param gemspec [Gem::Specification]
36
36
  # @return [String]
37
37
  def path_for(gemspec)
38
- File.join(Solargraph::Cache.work_dir, 'gems', "#{gemspec.name}-#{gemspec.version}.yardoc")
38
+ File.join(Solargraph::Cache.base_dir, "yard-#{YARD::VERSION}", "#{gemspec.name}-#{gemspec.version}.yardoc")
39
39
  end
40
40
 
41
41
  # Load a gem's yardoc and return its code objects.
data/lib/solargraph.rb CHANGED
@@ -42,6 +42,7 @@ module Solargraph
42
42
  autoload :Logging, 'solargraph/logging'
43
43
  autoload :TypeChecker, 'solargraph/type_checker'
44
44
  autoload :Environ, 'solargraph/environ'
45
+ autoload :Equality, 'solargraph/equality'
45
46
  autoload :Convention, 'solargraph/convention'
46
47
  autoload :Parser, 'solargraph/parser'
47
48
  autoload :RbsMap, 'solargraph/rbs_map'
data/solargraph.gemspec CHANGED
@@ -24,10 +24,10 @@ Gem::Specification.new do |s|
24
24
  s.required_ruby_version = '>= 3.0'
25
25
 
26
26
  s.add_runtime_dependency 'backport', '~> 1.2'
27
- s.add_runtime_dependency 'benchmark'
27
+ s.add_runtime_dependency 'benchmark', '~> 0.4'
28
28
  s.add_runtime_dependency 'bundler', '~> 2.0'
29
29
  s.add_runtime_dependency 'diff-lcs', '~> 1.4'
30
- s.add_runtime_dependency 'jaro_winkler', '~> 1.6'
30
+ s.add_runtime_dependency 'jaro_winkler', '~> 1.6', '>= 1.6.1'
31
31
  s.add_runtime_dependency 'kramdown', '~> 2.3'
32
32
  s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1'
33
33
  s.add_runtime_dependency 'logger', '~> 1.6'
@@ -35,19 +35,19 @@ Gem::Specification.new do |s|
35
35
  s.add_runtime_dependency 'ostruct', '~> 0.6'
36
36
  s.add_runtime_dependency 'parser', '~> 3.0'
37
37
  s.add_runtime_dependency 'rbs', '~> 3.3'
38
- s.add_runtime_dependency 'reverse_markdown', '>= 2.0', '< 4'
38
+ s.add_runtime_dependency 'reverse_markdown', '~> 3.0'
39
39
  s.add_runtime_dependency 'rubocop', '~> 1.38'
40
40
  s.add_runtime_dependency 'thor', '~> 1.0'
41
41
  s.add_runtime_dependency 'tilt', '~> 2.0'
42
42
  s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
43
43
  s.add_runtime_dependency 'yard-solargraph', '~> 0.1'
44
44
 
45
- s.add_development_dependency 'pry'
45
+ s.add_development_dependency 'pry', '~> 0.15'
46
46
  s.add_development_dependency 'public_suffix', '~> 3.1'
47
47
  s.add_development_dependency 'rake', '~> 13.2'
48
48
  s.add_development_dependency 'rspec', '~> 3.5'
49
49
  s.add_development_dependency 'simplecov', '~> 0.14'
50
50
  s.add_development_dependency 'webmock', '~> 3.6'
51
51
  # work around missing yard dependency needed as of Ruby 3.5
52
- s.add_development_dependency 'irb'
52
+ s.add_development_dependency 'irb', '~> 1.15'
53
53
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solargraph
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.54.0
4
+ version: 0.54.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-04-14 00:00:00.000000000 Z
11
+ date: 2025-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: benchmark
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '0.4'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '0.4'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -73,6 +73,9 @@ dependencies:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '1.6'
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: 1.6.1
76
79
  type: :runtime
77
80
  prerelease: false
78
81
  version_requirements: !ruby/object:Gem::Requirement
@@ -80,6 +83,9 @@ dependencies:
80
83
  - - "~>"
81
84
  - !ruby/object:Gem::Version
82
85
  version: '1.6'
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: 1.6.1
83
89
  - !ruby/object:Gem::Dependency
84
90
  name: kramdown
85
91
  requirement: !ruby/object:Gem::Requirement
@@ -182,22 +188,16 @@ dependencies:
182
188
  name: reverse_markdown
183
189
  requirement: !ruby/object:Gem::Requirement
184
190
  requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '2.0'
188
- - - "<"
191
+ - - "~>"
189
192
  - !ruby/object:Gem::Version
190
- version: '4'
193
+ version: '3.0'
191
194
  type: :runtime
192
195
  prerelease: false
193
196
  version_requirements: !ruby/object:Gem::Requirement
194
197
  requirements:
195
- - - ">="
196
- - !ruby/object:Gem::Version
197
- version: '2.0'
198
- - - "<"
198
+ - - "~>"
199
199
  - !ruby/object:Gem::Version
200
- version: '4'
200
+ version: '3.0'
201
201
  - !ruby/object:Gem::Dependency
202
202
  name: rubocop
203
203
  requirement: !ruby/object:Gem::Requirement
@@ -278,16 +278,16 @@ dependencies:
278
278
  name: pry
279
279
  requirement: !ruby/object:Gem::Requirement
280
280
  requirements:
281
- - - ">="
281
+ - - "~>"
282
282
  - !ruby/object:Gem::Version
283
- version: '0'
283
+ version: '0.15'
284
284
  type: :development
285
285
  prerelease: false
286
286
  version_requirements: !ruby/object:Gem::Requirement
287
287
  requirements:
288
- - - ">="
288
+ - - "~>"
289
289
  - !ruby/object:Gem::Version
290
- version: '0'
290
+ version: '0.15'
291
291
  - !ruby/object:Gem::Dependency
292
292
  name: public_suffix
293
293
  requirement: !ruby/object:Gem::Requirement
@@ -362,16 +362,16 @@ dependencies:
362
362
  name: irb
363
363
  requirement: !ruby/object:Gem::Requirement
364
364
  requirements:
365
- - - ">="
365
+ - - "~>"
366
366
  - !ruby/object:Gem::Version
367
- version: '0'
367
+ version: '1.15'
368
368
  type: :development
369
369
  prerelease: false
370
370
  version_requirements: !ruby/object:Gem::Requirement
371
371
  requirements:
372
- - - ">="
372
+ - - "~>"
373
373
  - !ruby/object:Gem::Version
374
- version: '0'
374
+ version: '1.15'
375
375
  description: IDE tools for code completion, inline documentation, and static analysis
376
376
  email: admin@castwide.com
377
377
  executables:
@@ -397,6 +397,7 @@ files:
397
397
  - lib/solargraph.rb
398
398
  - lib/solargraph/api_map.rb
399
399
  - lib/solargraph/api_map/cache.rb
400
+ - lib/solargraph/api_map/index.rb
400
401
  - lib/solargraph/api_map/source_to_yard.rb
401
402
  - lib/solargraph/api_map/store.rb
402
403
  - lib/solargraph/bench.rb
@@ -423,6 +424,7 @@ files:
423
424
  - lib/solargraph/diagnostics/update_errors.rb
424
425
  - lib/solargraph/doc_map.rb
425
426
  - lib/solargraph/environ.rb
427
+ - lib/solargraph/equality.rb
426
428
  - lib/solargraph/gem_pins.rb
427
429
  - lib/solargraph/language_server.rb
428
430
  - lib/solargraph/language_server/completion_item_kinds.rb
@@ -524,6 +526,7 @@ files:
524
526
  - lib/solargraph/pin/base.rb
525
527
  - lib/solargraph/pin/base_variable.rb
526
528
  - lib/solargraph/pin/block.rb
529
+ - lib/solargraph/pin/callable.rb
527
530
  - lib/solargraph/pin/class_variable.rb
528
531
  - lib/solargraph/pin/closure.rb
529
532
  - lib/solargraph/pin/common.rb
@@ -589,6 +592,7 @@ files:
589
592
  - lib/solargraph/source_map.rb
590
593
  - lib/solargraph/source_map/clip.rb
591
594
  - lib/solargraph/source_map/completion.rb
595
+ - lib/solargraph/source_map/data.rb
592
596
  - lib/solargraph/source_map/mapper.rb
593
597
  - lib/solargraph/type_checker.rb
594
598
  - lib/solargraph/type_checker/checks.rb
@@ -639,7 +643,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
639
643
  - !ruby/object:Gem::Version
640
644
  version: '0'
641
645
  requirements: []
642
- rubygems_version: 3.3.7
646
+ rubygems_version: 3.5.22
643
647
  signing_key:
644
648
  specification_version: 4
645
649
  summary: A Ruby language server