solargraph 0.45.0 → 0.49.0

Sign up to get free protection for your applications and to get access to all the features.
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