solargraph 0.45.0 → 0.49.0

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 (76) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/rspec.yml +1 -1
  4. data/CHANGELOG.md +41 -0
  5. data/LICENSE +1 -1
  6. data/README.md +8 -0
  7. data/SPONSORS.md +2 -4
  8. data/lib/solargraph/api_map/store.rb +13 -1
  9. data/lib/solargraph/api_map.rb +55 -32
  10. data/lib/solargraph/cache.rb +51 -0
  11. data/lib/solargraph/complex_type/type_methods.rb +10 -6
  12. data/lib/solargraph/complex_type/unique_type.rb +57 -0
  13. data/lib/solargraph/complex_type.rb +35 -2
  14. data/lib/solargraph/convention/rakefile.rb +17 -0
  15. data/lib/solargraph/convention.rb +2 -0
  16. data/lib/solargraph/diagnostics/require_not_found.rb +16 -0
  17. data/lib/solargraph/diagnostics/rubocop.rb +17 -3
  18. data/lib/solargraph/diagnostics/rubocop_helpers.rb +3 -1
  19. data/lib/solargraph/language_server/host.rb +22 -18
  20. data/lib/solargraph/language_server/message/extended/download_core.rb +1 -5
  21. data/lib/solargraph/language_server/message/initialize.rb +2 -0
  22. data/lib/solargraph/language_server/message/text_document/formatting.rb +1 -1
  23. data/lib/solargraph/language_server/message/text_document/hover.rb +16 -4
  24. data/lib/solargraph/language_server/message/text_document/signature_help.rb +1 -6
  25. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +10 -3
  26. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +1 -1
  27. data/lib/solargraph/library.rb +21 -20
  28. data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +12 -2
  29. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +24 -3
  30. data/lib/solargraph/parser/rubyvm/class_methods.rb +7 -2
  31. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +13 -2
  32. data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +20 -9
  33. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +14 -3
  34. data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +2 -2
  35. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +14 -3
  36. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +4 -2
  37. data/lib/solargraph/parser/rubyvm/node_wrapper.rb +47 -0
  38. data/lib/solargraph/pin/base.rb +5 -2
  39. data/lib/solargraph/pin/block.rb +2 -1
  40. data/lib/solargraph/pin/conversions.rb +2 -6
  41. data/lib/solargraph/pin/method.rb +100 -10
  42. data/lib/solargraph/pin/namespace.rb +4 -1
  43. data/lib/solargraph/pin/parameter.rb +10 -7
  44. data/lib/solargraph/pin/search.rb +56 -0
  45. data/lib/solargraph/pin/signature.rb +23 -0
  46. data/lib/solargraph/pin.rb +2 -0
  47. data/lib/solargraph/rbs_map/conversions.rb +394 -0
  48. data/lib/solargraph/rbs_map/core_fills.rb +61 -0
  49. data/lib/solargraph/rbs_map/core_map.rb +38 -0
  50. data/lib/solargraph/rbs_map/core_signs.rb +33 -0
  51. data/lib/solargraph/rbs_map/stdlib_map.rb +36 -0
  52. data/lib/solargraph/rbs_map.rb +73 -0
  53. data/lib/solargraph/shell.rb +38 -30
  54. data/lib/solargraph/source/chain/call.rb +34 -23
  55. data/lib/solargraph/source/chain.rb +21 -6
  56. data/lib/solargraph/source.rb +1 -1
  57. data/lib/solargraph/source_map/clip.rb +5 -0
  58. data/lib/solargraph/source_map/mapper.rb +31 -2
  59. data/lib/solargraph/source_map.rb +1 -10
  60. data/lib/solargraph/type_checker/checks.rb +13 -0
  61. data/lib/solargraph/type_checker.rb +88 -68
  62. data/lib/solargraph/version.rb +1 -1
  63. data/lib/solargraph/views/environment.erb +2 -2
  64. data/lib/solargraph/workspace.rb +12 -14
  65. data/lib/solargraph/yard_map/mapper/to_method.rb +7 -4
  66. data/lib/solargraph/yard_map.rb +51 -195
  67. data/lib/solargraph.rb +2 -2
  68. data/solargraph.gemspec +8 -6
  69. metadata +44 -36
  70. data/lib/solargraph/compat.rb +0 -37
  71. data/lib/solargraph/yard_map/core_docs.rb +0 -170
  72. data/lib/solargraph/yard_map/core_fills.rb +0 -208
  73. data/lib/solargraph/yard_map/core_gen.rb +0 -76
  74. data/lib/solargraph/yard_map/rdoc_to_yard.rb +0 -140
  75. data/lib/solargraph/yard_map/stdlib_fills.rb +0 -43
  76. data/yardoc/2.2.2.tar.gz +0 -0
@@ -13,34 +13,13 @@ module Solargraph
13
13
  class NoYardocError < StandardError; end
14
14
 
15
15
  autoload :Cache, 'solargraph/yard_map/cache'
16
- autoload :CoreDocs, 'solargraph/yard_map/core_docs'
17
- autoload :CoreGen, 'solargraph/yard_map/core_gen'
18
16
  autoload :Mapper, 'solargraph/yard_map/mapper'
19
17
  autoload :RdocToYard, 'solargraph/yard_map/rdoc_to_yard'
20
- autoload :CoreFills, 'solargraph/yard_map/core_fills'
21
- autoload :StdlibFills, 'solargraph/yard_map/stdlib_fills'
22
18
  autoload :Helpers, 'solargraph/yard_map/helpers'
23
19
  autoload :ToMethod, 'solargraph/yard_map/to_method'
24
20
 
25
21
  include ApiMap::BundlerMethods
26
22
 
27
- CoreDocs.require_minimum
28
-
29
- def stdlib_paths
30
- @@stdlib_paths ||= begin
31
- result = {}
32
- YARD::Registry.load! CoreDocs.yardoc_stdlib_file
33
- YARD::Registry.all.each do |co|
34
- next if co.file.nil?
35
- path = co.file.sub(/^(ext|lib)\//, '').sub(/\.(rb|c)$/, '')
36
- base = path.split('/').first
37
- result[base] ||= []
38
- result[base].push co
39
- end
40
- result
41
- end
42
- end
43
-
44
23
  # @return [Boolean]
45
24
  attr_writer :with_dependencies
46
25
 
@@ -80,6 +59,7 @@ module Solargraph
80
59
  @rebindable_method_names = nil
81
60
  @pin_class_hash = nil
82
61
  @pin_select_cache = {}
62
+ pins.each { |p| p.source = :yard }
83
63
  true
84
64
  end
85
65
 
@@ -107,6 +87,11 @@ module Solargraph
107
87
  @unresolved_requires ||= []
108
88
  end
109
89
 
90
+ # @return [Array<String>]
91
+ def missing_docs
92
+ @missing_docs ||= []
93
+ end
94
+
110
95
  # @param y [String]
111
96
  # @return [YARD::Registry]
112
97
  def load_yardoc y
@@ -121,12 +106,6 @@ module Solargraph
121
106
  nil
122
107
  end
123
108
 
124
- # @return [Array<Solargraph::Pin::Base>]
125
- def core_pins
126
- # Using a class variable to reduce loads
127
- @@core_pins ||= load_core_pins
128
- end
129
-
130
109
  # @param path [String]
131
110
  # @return [Pin::Base]
132
111
  def path_pin path
@@ -150,10 +129,6 @@ module Solargraph
150
129
  nil
151
130
  end
152
131
 
153
- def stdlib_pins
154
- @stdlib_pins ||= []
155
- end
156
-
157
132
  def base_required
158
133
  @base_required ||= Set.new
159
134
  end
@@ -194,12 +169,12 @@ module Solargraph
194
169
  def process_requires
195
170
  @gemset = process_gemsets
196
171
  required.merge @gemset.keys if required.include?('bundler/require')
197
- pins.replace core_pins
172
+ pins.clear
198
173
  unresolved_requires.clear
199
- stdlib_pins.clear
174
+ missing_docs.clear
200
175
  environ = Convention.for_global(self)
201
176
  done = []
202
- from_std = []
177
+ already_errored = []
203
178
  (required + environ.requires).each do |r|
204
179
  next if r.nil? || r.empty? || done.include?(r)
205
180
  done.push r
@@ -208,36 +183,7 @@ module Solargraph
208
183
  pins.concat cached
209
184
  next
210
185
  end
211
- result = []
212
- begin
213
- spec = spec_for_require(r)
214
- if @source_gems.include?(spec.name)
215
- next
216
- end
217
- next if @gem_paths.key?(spec.name)
218
- yd = yardoc_file_for_spec(spec)
219
- # YARD detects gems for certain libraries that do not have a yardoc
220
- # but exist in the stdlib. `fileutils` is an example. Treat those
221
- # cases as errors and check the stdlib yardoc.
222
- raise Gem::LoadError if yd.nil?
223
- @gem_paths[spec.name] = spec.full_gem_path
224
- unless yardocs.include?(yd)
225
- yardocs.unshift yd
226
- result.concat process_yardoc yd, spec
227
- result.concat add_gem_dependencies(spec) if with_dependencies?
228
- end
229
- rescue Gem::LoadError, NoYardocError => e
230
- base = r.split('/').first
231
- next if from_std.include?(base)
232
- from_std.push base
233
- stdtmp = load_stdlib_pins(base)
234
- if stdtmp.empty?
235
- unresolved_requires.push r
236
- else
237
- stdlib_pins.concat stdtmp
238
- result.concat stdtmp
239
- end
240
- end
186
+ result = pins_for_require r, already_errored
241
187
  result.delete_if(&:nil?)
242
188
  unless result.empty?
243
189
  cache.set_path_pins r, result
@@ -253,36 +199,52 @@ module Solargraph
253
199
  pins.concat environ.pins
254
200
  end
255
201
 
202
+ def process_error(req, result, already_errored, yd = 1)
203
+ base = req.split('/').first
204
+ return if already_errored.include?(base)
205
+ already_errored.push base
206
+ if yd.nil?
207
+ missing_docs.push req
208
+ else
209
+ unresolved_requires.push req
210
+ end
211
+ end
212
+
256
213
  def process_gemsets
257
214
  return {} if directory.empty? || !File.file?(File.join(directory, 'Gemfile'))
258
215
  require_from_bundle(directory)
259
216
  end
260
217
 
261
- # @param spec [Gem::Specification]
262
- # @return [void]
263
- def add_gem_dependencies spec
218
+ # @param r [String]
219
+ def pins_for_require r, already_errored
264
220
  result = []
265
- (spec.dependencies - spec.development_dependencies).each do |dep|
266
- begin
267
- next if @source_gems.include?(dep.name) || @gem_paths.key?(dep.name)
268
- depspec = Gem::Specification.find_by_name(dep.name)
269
- next if depspec.nil?
270
- @gem_paths[depspec.name] = depspec.full_gem_path
271
- gy = yardoc_file_for_spec(depspec)
272
- if gy.nil?
273
- unresolved_requires.push dep.name
274
- else
275
- next if yardocs.include?(gy)
276
- yardocs.unshift gy
277
- result.concat process_yardoc gy, depspec
278
- result.concat add_gem_dependencies(depspec)
221
+ begin
222
+ name = r.split('/').first
223
+ return [] if @source_gems.include?(name) || @gem_paths.key?(name)
224
+ spec = spec_for_require(name)
225
+ @gem_paths[name] = spec.full_gem_path
226
+
227
+ yd = yardoc_file_for_spec(spec)
228
+ # YARD detects gems for certain libraries that do not have a yardoc
229
+ # but exist in the stdlib. `fileutils` is an example. Treat those
230
+ # cases as errors and check the stdlib yardoc.
231
+ if yd.nil?
232
+ process_error(r, result, already_errored, nil)
233
+ return []
234
+ end
235
+ unless yardocs.include?(yd)
236
+ yardocs.unshift yd
237
+ result.concat process_yardoc yd, spec
238
+ if with_dependencies?
239
+ (spec.dependencies - spec.development_dependencies).each do |dep|
240
+ result.concat pins_for_require dep.name, already_errored
241
+ end
279
242
  end
280
- rescue Gem::LoadError
281
- # This error probably indicates a bug in an installed gem
282
- Solargraph::Logging.logger.warn "Failed to resolve #{dep.name} gem dependency for #{spec.name}"
283
243
  end
244
+ rescue Gem::LoadError, NoYardocError
245
+ process_error(r, result, already_errored)
284
246
  end
285
- result
247
+ return result
286
248
  end
287
249
 
288
250
  # @param y [String, nil]
@@ -291,22 +253,8 @@ module Solargraph
291
253
  def process_yardoc y, spec = nil
292
254
  return [] if y.nil?
293
255
  if spec
294
- ser = File.join(CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}.ser")
295
- if File.file?(ser)
296
- Solargraph.logger.info "Loading #{spec.name} #{spec.version} from cache"
297
- file = File.open(ser, 'rb')
298
- dump = file.read
299
- file.close
300
- begin
301
- result = Marshal.load(dump)
302
- return result unless result.nil? || result.empty?
303
- Solargraph.logger.warn "Empty cache for #{spec.name} #{spec.version}. Reloading"
304
- File.unlink ser
305
- rescue StandardError => e
306
- Solargraph.logger.warn "Error loading pin cache: [#{e.class}] #{e.message}"
307
- File.unlink ser
308
- end
309
- end
256
+ cache = Solargraph::Cache.load('gems', "#{spec.name}-#{spec.version}.ser")
257
+ return cache if cache
310
258
  end
311
259
  size = Dir.glob(File.join(y, '**', '*'))
312
260
  .map{ |f| File.size(f) }
@@ -320,10 +268,7 @@ module Solargraph
320
268
  result = Mapper.new(YARD::Registry.all, spec).map
321
269
  raise NoYardocError, "Yardoc at #{y} is empty" if result.empty?
322
270
  if spec
323
- ser = File.join(CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}.ser")
324
- file = File.open(ser, 'wb')
325
- file.write Marshal.dump(result)
326
- file.close
271
+ Solargraph::Cache.save 'gems', "#{spec.name}-#{spec.version}.ser", result
327
272
  end
328
273
  result
329
274
  end
@@ -331,13 +276,7 @@ module Solargraph
331
276
  # @param spec [Gem::Specification]
332
277
  # @return [String]
333
278
  def yardoc_file_for_spec spec
334
- cache_dir = File.join(Solargraph::YardMap::CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}", 'yardoc')
335
- if File.exist?(cache_dir)
336
- Solargraph.logger.info "Using cached documentation for #{spec.name} at #{cache_dir}"
337
- cache_dir
338
- else
339
- YARD::Registry.yardoc_file_for_gem(spec.name, "= #{spec.version}")
340
- end
279
+ YARD::Registry.yardoc_file_for_gem(spec.name, "= #{spec.version}")
341
280
  end
342
281
 
343
282
  # @param path [String]
@@ -358,88 +297,5 @@ module Solargraph
358
297
  end
359
298
  spec
360
299
  end
361
-
362
- def load_core_pins
363
- yd = CoreDocs.yardoc_file
364
- ser = File.join(File.dirname(yd), 'core.ser')
365
- result = if File.file?(ser)
366
- file = File.open(ser, 'rb')
367
- dump = file.read
368
- file.close
369
- begin
370
- Marshal.load(dump)
371
- rescue StandardError => e
372
- Solargraph.logger.warn "Error loading core pin cache: [#{e.class}] #{e.message}"
373
- File.unlink ser
374
- read_core_and_save_cache(yd, ser)
375
- end
376
- else
377
- read_core_and_save_cache(yd, ser)
378
- end
379
- ApiMap::Store.new(result + CoreFills::ALL).pins.reject { |pin| pin.is_a?(Pin::Reference::Override) }
380
- end
381
-
382
- def read_core_and_save_cache yd, ser
383
- result = []
384
- load_yardoc yd
385
- result.concat Mapper.new(YARD::Registry.all).map
386
- # HACK: Assume core methods with a single `args` parameter accept restarg
387
- result.select { |pin| pin.is_a?(Solargraph::Pin::Method )}.each do |pin|
388
- if pin.parameters.length == 1 && pin.parameters.first.name == 'args' && pin.parameters.first.decl == :arg
389
- # @todo Smelly instance variable access
390
- pin.parameters.first.instance_variable_set(:@decl, :restarg)
391
- end
392
- end
393
- # HACK: Set missing parameters on `==` methods, e.g., `Symbol#==`
394
- result.select { |pin| pin.name == '==' && pin.parameters.empty? }.each do |pin|
395
- pin.parameters.push Pin::Parameter.new(decl: :arg, name: 'obj2')
396
- end
397
- dump = Marshal.dump(result)
398
- file = File.open(ser, 'wb')
399
- file.write dump
400
- file.close
401
- result
402
- end
403
-
404
- def load_stdlib_pins base
405
- ser = File.join(File.dirname(CoreDocs.yardoc_stdlib_file), "#{base}.ser")
406
- result = if File.file?(ser)
407
- Solargraph.logger.info "Loading #{base} stdlib from cache"
408
- file = File.open(ser, 'rb')
409
- dump = file.read
410
- file.close
411
- begin
412
- Marshal.load(dump)
413
- rescue StandardError => e
414
- Solargraph.logger.warn "Error loading #{base} stdlib pin cache: [#{e.class}] #{e.message}"
415
- File.unlink ser
416
- read_stdlib_and_save_cache(base, ser)
417
- end
418
- else
419
- read_stdlib_and_save_cache(base, ser)
420
- end
421
- fills = StdlibFills.get(base)
422
- unless fills.empty?
423
- result = ApiMap::Store.new(result + fills).pins.reject { |pin| pin.is_a?(Pin::Reference::Override) }
424
- end
425
- result
426
- end
427
-
428
- def read_stdlib_and_save_cache base, ser
429
- result = []
430
- if stdlib_paths[base]
431
- Solargraph.logger.info "Loading #{base} stdlib from yardoc"
432
- result.concat Mapper.new(stdlib_paths[base]).map
433
- unless result.empty?
434
- dump = Marshal.dump(result)
435
- file = File.open(ser, 'wb')
436
- file.write dump
437
- file.close
438
- end
439
- end
440
- result
441
- end
442
300
  end
443
301
  end
444
-
445
- Solargraph::YardMap::CoreDocs.require_minimum
data/lib/solargraph.rb CHANGED
@@ -2,7 +2,6 @@
2
2
 
3
3
  Encoding.default_external = 'UTF-8'
4
4
 
5
- require 'solargraph/compat'
6
5
  require 'solargraph/version'
7
6
 
8
7
  # The top-level namespace for the Solargraph code mapping, documentation,
@@ -41,9 +40,10 @@ module Solargraph
41
40
  autoload :Convention, 'solargraph/convention'
42
41
  autoload :Documentor, 'solargraph/documentor'
43
42
  autoload :Parser, 'solargraph/parser'
43
+ autoload :RbsMap, 'solargraph/rbs_map'
44
+ autoload :Cache, 'solargraph/cache'
44
45
 
45
46
  dir = File.dirname(__FILE__)
46
- YARDOC_PATH = File.realpath(File.join(dir, '..', 'yardoc'))
47
47
  YARD_EXTENSION_FILE = File.join(dir, 'yard-solargraph.rb')
48
48
  VIEWS_PATH = File.join(dir, 'solargraph', 'views')
49
49
 
data/solargraph.gemspec CHANGED
@@ -13,30 +13,32 @@ Gem::Specification.new do |s|
13
13
  s.files = Dir.chdir(File.expand_path('..', __FILE__)) do
14
14
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
15
15
  end
16
- s.homepage = 'http://solargraph.org'
16
+ s.homepage = 'https://solargraph.org'
17
17
  s.license = 'MIT'
18
18
  s.executables = ['solargraph']
19
+ s.metadata["funding_uri"] = "https://www.patreon.com/castwide"
19
20
 
20
- s.required_ruby_version = '>= 2.4'
21
+ s.required_ruby_version = '>= 2.6'
21
22
 
22
23
  s.add_runtime_dependency 'backport', '~> 1.2'
23
24
  s.add_runtime_dependency 'benchmark'
24
- s.add_runtime_dependency 'bundler', '>= 1.17.2'
25
+ s.add_runtime_dependency 'bundler', '~> 2.0'
25
26
  s.add_runtime_dependency 'diff-lcs', '~> 1.4'
26
27
  s.add_runtime_dependency 'e2mmap'
27
28
  s.add_runtime_dependency 'jaro_winkler', '~> 1.5'
28
29
  s.add_runtime_dependency 'kramdown', '~> 2.3'
29
30
  s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1'
30
31
  s.add_runtime_dependency 'parser', '~> 3.0'
31
- s.add_runtime_dependency 'reverse_markdown', '>= 1.0.5', '< 3'
32
- s.add_runtime_dependency 'rubocop', '>= 0.52'
32
+ s.add_runtime_dependency 'rbs', '~> 2.0'
33
+ s.add_runtime_dependency 'reverse_markdown', '~> 2.0'
34
+ s.add_runtime_dependency 'rubocop', '~> 1.38'
33
35
  s.add_runtime_dependency 'thor', '~> 1.0'
34
36
  s.add_runtime_dependency 'tilt', '~> 2.0'
35
37
  s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
36
38
 
37
39
  s.add_development_dependency 'pry'
38
40
  s.add_development_dependency 'public_suffix', '~> 3.1'
39
- s.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
41
+ s.add_development_dependency 'rspec', '~> 3.5'
40
42
  s.add_development_dependency 'simplecov', '~> 0.14'
41
43
  s.add_development_dependency 'webmock', '~> 3.6'
42
44
  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.45.0
4
+ version: 0.49.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-23 00:00:00.000000000 Z
11
+ date: 2023-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.17.2
47
+ version: '2.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.17.2
54
+ version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: diff-lcs
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -137,39 +137,47 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: reverse_markdown
140
+ name: rbs
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: 1.0.5
146
- - - "<"
143
+ - - "~>"
147
144
  - !ruby/object:Gem::Version
148
- version: '3'
145
+ version: '2.0'
149
146
  type: :runtime
150
147
  prerelease: false
151
148
  version_requirements: !ruby/object:Gem::Requirement
152
149
  requirements:
153
- - - ">="
150
+ - - "~>"
154
151
  - !ruby/object:Gem::Version
155
- version: 1.0.5
156
- - - "<"
152
+ version: '2.0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: reverse_markdown
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
157
158
  - !ruby/object:Gem::Version
158
- version: '3'
159
+ version: '2.0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '2.0'
159
167
  - !ruby/object:Gem::Dependency
160
168
  name: rubocop
161
169
  requirement: !ruby/object:Gem::Requirement
162
170
  requirements:
163
- - - ">="
171
+ - - "~>"
164
172
  - !ruby/object:Gem::Version
165
- version: '0.52'
173
+ version: '1.38'
166
174
  type: :runtime
167
175
  prerelease: false
168
176
  version_requirements: !ruby/object:Gem::Requirement
169
177
  requirements:
170
- - - ">="
178
+ - - "~>"
171
179
  - !ruby/object:Gem::Version
172
- version: '0.52'
180
+ version: '1.38'
173
181
  - !ruby/object:Gem::Dependency
174
182
  name: thor
175
183
  requirement: !ruby/object:Gem::Requirement
@@ -253,9 +261,6 @@ dependencies:
253
261
  - - "~>"
254
262
  - !ruby/object:Gem::Version
255
263
  version: '3.5'
256
- - - ">="
257
- - !ruby/object:Gem::Version
258
- version: 3.5.0
259
264
  type: :development
260
265
  prerelease: false
261
266
  version_requirements: !ruby/object:Gem::Requirement
@@ -263,9 +268,6 @@ dependencies:
263
268
  - - "~>"
264
269
  - !ruby/object:Gem::Version
265
270
  version: '3.5'
266
- - - ">="
267
- - !ruby/object:Gem::Version
268
- version: 3.5.0
269
271
  - !ruby/object:Gem::Dependency
270
272
  name: simplecov
271
273
  requirement: !ruby/object:Gem::Requirement
@@ -301,6 +303,7 @@ executables:
301
303
  extensions: []
302
304
  extra_rdoc_files: []
303
305
  files:
306
+ - ".github/FUNDING.yml"
304
307
  - ".github/workflows/rspec.yml"
305
308
  - ".gitignore"
306
309
  - ".rspec"
@@ -321,7 +324,7 @@ files:
321
324
  - lib/solargraph/api_map/source_to_yard.rb
322
325
  - lib/solargraph/api_map/store.rb
323
326
  - lib/solargraph/bench.rb
324
- - lib/solargraph/compat.rb
327
+ - lib/solargraph/cache.rb
325
328
  - lib/solargraph/complex_type.rb
326
329
  - lib/solargraph/complex_type/type_methods.rb
327
330
  - lib/solargraph/complex_type/unique_type.rb
@@ -329,6 +332,7 @@ files:
329
332
  - lib/solargraph/convention/base.rb
330
333
  - lib/solargraph/convention/gemfile.rb
331
334
  - lib/solargraph/convention/gemspec.rb
335
+ - lib/solargraph/convention/rakefile.rb
332
336
  - lib/solargraph/convention/rspec.rb
333
337
  - lib/solargraph/converters/dd.rb
334
338
  - lib/solargraph/converters/dl.rb
@@ -463,6 +467,7 @@ files:
463
467
  - lib/solargraph/parser/rubyvm/node_processors/scope_node.rb
464
468
  - lib/solargraph/parser/rubyvm/node_processors/send_node.rb
465
469
  - lib/solargraph/parser/rubyvm/node_processors/sym_node.rb
470
+ - lib/solargraph/parser/rubyvm/node_wrapper.rb
466
471
  - lib/solargraph/parser/snippet.rb
467
472
  - lib/solargraph/pin.rb
468
473
  - lib/solargraph/pin/base.rb
@@ -492,10 +497,18 @@ files:
492
497
  - lib/solargraph/pin/reference/prepend.rb
493
498
  - lib/solargraph/pin/reference/require.rb
494
499
  - lib/solargraph/pin/reference/superclass.rb
500
+ - lib/solargraph/pin/search.rb
501
+ - lib/solargraph/pin/signature.rb
495
502
  - lib/solargraph/pin/singleton.rb
496
503
  - lib/solargraph/pin/symbol.rb
497
504
  - lib/solargraph/position.rb
498
505
  - lib/solargraph/range.rb
506
+ - lib/solargraph/rbs_map.rb
507
+ - lib/solargraph/rbs_map/conversions.rb
508
+ - lib/solargraph/rbs_map/core_fills.rb
509
+ - lib/solargraph/rbs_map/core_map.rb
510
+ - lib/solargraph/rbs_map/core_signs.rb
511
+ - lib/solargraph/rbs_map/stdlib_map.rb
499
512
  - lib/solargraph/server_methods.rb
500
513
  - lib/solargraph/shell.rb
501
514
  - lib/solargraph/source.rb
@@ -540,24 +553,19 @@ files:
540
553
  - lib/solargraph/workspace/config.rb
541
554
  - lib/solargraph/yard_map.rb
542
555
  - lib/solargraph/yard_map/cache.rb
543
- - lib/solargraph/yard_map/core_docs.rb
544
- - lib/solargraph/yard_map/core_fills.rb
545
- - lib/solargraph/yard_map/core_gen.rb
546
556
  - lib/solargraph/yard_map/helpers.rb
547
557
  - lib/solargraph/yard_map/mapper.rb
548
558
  - lib/solargraph/yard_map/mapper/to_constant.rb
549
559
  - lib/solargraph/yard_map/mapper/to_method.rb
550
560
  - lib/solargraph/yard_map/mapper/to_namespace.rb
551
- - lib/solargraph/yard_map/rdoc_to_yard.rb
552
- - lib/solargraph/yard_map/stdlib_fills.rb
553
561
  - lib/solargraph/yard_map/to_method.rb
554
562
  - lib/yard-solargraph.rb
555
563
  - solargraph.gemspec
556
- - yardoc/2.2.2.tar.gz
557
- homepage: http://solargraph.org
564
+ homepage: https://solargraph.org
558
565
  licenses:
559
566
  - MIT
560
- metadata: {}
567
+ metadata:
568
+ funding_uri: https://www.patreon.com/castwide
561
569
  post_install_message:
562
570
  rdoc_options: []
563
571
  require_paths:
@@ -566,7 +574,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
566
574
  requirements:
567
575
  - - ">="
568
576
  - !ruby/object:Gem::Version
569
- version: '2.4'
577
+ version: '2.6'
570
578
  required_rubygems_version: !ruby/object:Gem::Requirement
571
579
  requirements:
572
580
  - - ">="
@@ -1,37 +0,0 @@
1
- unless Hash.method_defined?(:transform_keys)
2
- class Hash
3
- def transform_keys &block
4
- result = {}
5
- each_pair do |k, v|
6
- result[block.call(k)] = v
7
- end
8
- result
9
- end
10
- end
11
- end
12
-
13
- unless Hash.method_defined?(:transform_values)
14
- class Hash
15
- def transform_values &block
16
- result = {}
17
- each_pair do |k, v|
18
- result[k] = block.call(v)
19
- end
20
- result
21
- end
22
- end
23
- end
24
-
25
- unless Array.method_defined?(:sum)
26
- class Array
27
- def sum &block
28
- inject(0) do |s, x|
29
- if block
30
- s + block.call(x)
31
- else
32
- s + x
33
- end
34
- end
35
- end
36
- end
37
- end