solargraph 0.47.2 → 0.50.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 (70) 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 +40 -0
  5. data/LICENSE +1 -1
  6. data/README.md +9 -3
  7. data/SPONSORS.md +4 -4
  8. data/lib/solargraph/api_map/store.rb +13 -1
  9. data/lib/solargraph/api_map.rb +30 -12
  10. data/lib/solargraph/cache.rb +53 -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 +32 -3
  14. data/lib/solargraph/convention/rakefile.rb +17 -0
  15. data/lib/solargraph/convention.rb +2 -0
  16. data/lib/solargraph/diagnostics/rubocop.rb +17 -3
  17. data/lib/solargraph/diagnostics/rubocop_helpers.rb +3 -1
  18. data/lib/solargraph/language_server/host/cataloger.rb +1 -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/signature_help.rb +1 -6
  24. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +10 -3
  25. data/lib/solargraph/library.rb +25 -20
  26. data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +12 -2
  27. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +24 -3
  28. data/lib/solargraph/parser/rubyvm/class_methods.rb +6 -1
  29. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +13 -2
  30. data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +20 -8
  31. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +14 -3
  32. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +14 -3
  33. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +4 -2
  34. data/lib/solargraph/parser/rubyvm/node_wrapper.rb +47 -0
  35. data/lib/solargraph/pin/base.rb +5 -2
  36. data/lib/solargraph/pin/base_variable.rb +1 -1
  37. data/lib/solargraph/pin/conversions.rb +2 -6
  38. data/lib/solargraph/pin/method.rb +100 -10
  39. data/lib/solargraph/pin/namespace.rb +4 -1
  40. data/lib/solargraph/pin/parameter.rb +8 -3
  41. data/lib/solargraph/pin/signature.rb +23 -0
  42. data/lib/solargraph/pin.rb +1 -0
  43. data/lib/solargraph/rbs_map/conversions.rb +394 -0
  44. data/lib/solargraph/rbs_map/core_fills.rb +61 -0
  45. data/lib/solargraph/rbs_map/core_map.rb +38 -0
  46. data/lib/solargraph/rbs_map/core_signs.rb +33 -0
  47. data/lib/solargraph/rbs_map/stdlib_map.rb +36 -0
  48. data/lib/solargraph/rbs_map.rb +73 -0
  49. data/lib/solargraph/shell.rb +50 -32
  50. data/lib/solargraph/source/chain/call.rb +35 -24
  51. data/lib/solargraph/source/chain.rb +22 -7
  52. data/lib/solargraph/source_map/clip.rb +5 -0
  53. data/lib/solargraph/source_map/mapper.rb +8 -4
  54. data/lib/solargraph/type_checker.rb +71 -65
  55. data/lib/solargraph/version.rb +1 -1
  56. data/lib/solargraph/views/environment.erb +2 -2
  57. data/lib/solargraph/workspace.rb +11 -14
  58. data/lib/solargraph/yard_map/mapper/to_method.rb +7 -4
  59. data/lib/solargraph/yard_map.rb +35 -194
  60. data/lib/solargraph.rb +2 -2
  61. data/solargraph.gemspec +11 -6
  62. metadata +46 -37
  63. data/.travis.yml +0 -19
  64. data/lib/solargraph/compat.rb +0 -37
  65. data/lib/solargraph/yard_map/core_docs.rb +0 -170
  66. data/lib/solargraph/yard_map/core_fills.rb +0 -208
  67. data/lib/solargraph/yard_map/core_gen.rb +0 -76
  68. data/lib/solargraph/yard_map/rdoc_to_yard.rb +0 -140
  69. data/lib/solargraph/yard_map/stdlib_fills.rb +0 -43
  70. 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
 
@@ -126,12 +106,6 @@ module Solargraph
126
106
  nil
127
107
  end
128
108
 
129
- # @return [Array<Solargraph::Pin::Base>]
130
- def core_pins
131
- # Using a class variable to reduce loads
132
- @@core_pins ||= load_core_pins
133
- end
134
-
135
109
  # @param path [String]
136
110
  # @return [Pin::Base]
137
111
  def path_pin path
@@ -155,10 +129,6 @@ module Solargraph
155
129
  nil
156
130
  end
157
131
 
158
- def stdlib_pins
159
- @stdlib_pins ||= []
160
- end
161
-
162
132
  def base_required
163
133
  @base_required ||= Set.new
164
134
  end
@@ -199,10 +169,9 @@ module Solargraph
199
169
  def process_requires
200
170
  @gemset = process_gemsets
201
171
  required.merge @gemset.keys if required.include?('bundler/require')
202
- pins.replace core_pins
172
+ pins.clear
203
173
  unresolved_requires.clear
204
174
  missing_docs.clear
205
- stdlib_pins.clear
206
175
  environ = Convention.for_global(self)
207
176
  done = []
208
177
  already_errored = []
@@ -214,30 +183,7 @@ module Solargraph
214
183
  pins.concat cached
215
184
  next
216
185
  end
217
- result = []
218
- begin
219
- spec = spec_for_require(r)
220
- if @source_gems.include?(spec.name)
221
- next
222
- end
223
- next if @gem_paths.key?(spec.name)
224
- yd = yardoc_file_for_spec(spec)
225
- # YARD detects gems for certain libraries that do not have a yardoc
226
- # but exist in the stdlib. `fileutils` is an example. Treat those
227
- # cases as errors and check the stdlib yardoc.
228
- if yd.nil?
229
- process_error(r, result, already_errored, nil)
230
- next
231
- end
232
- @gem_paths[spec.name] = spec.full_gem_path
233
- unless yardocs.include?(yd)
234
- yardocs.unshift yd
235
- result.concat process_yardoc yd, spec
236
- result.concat add_gem_dependencies(spec) if with_dependencies?
237
- end
238
- rescue Gem::LoadError, NoYardocError
239
- process_error(r, result, already_errored)
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
@@ -257,14 +203,10 @@ module Solargraph
257
203
  base = req.split('/').first
258
204
  return if already_errored.include?(base)
259
205
  already_errored.push base
260
- stdtmp = load_stdlib_pins(base)
261
206
  if yd.nil?
262
207
  missing_docs.push req
263
- elsif stdtmp.empty?
264
- unresolved_requires.push req
265
208
  else
266
- stdlib_pins.concat stdtmp
267
- result.concat stdtmp
209
+ unresolved_requires.push req
268
210
  end
269
211
  end
270
212
 
@@ -273,31 +215,36 @@ module Solargraph
273
215
  require_from_bundle(directory)
274
216
  end
275
217
 
276
- # @param spec [Gem::Specification]
277
- # @return [void]
278
- def add_gem_dependencies spec
218
+ # @param r [String]
219
+ def pins_for_require r, already_errored
279
220
  result = []
280
- (spec.dependencies - spec.development_dependencies).each do |dep|
281
- begin
282
- next if @source_gems.include?(dep.name) || @gem_paths.key?(dep.name)
283
- depspec = Gem::Specification.find_by_name(dep.name)
284
- next if depspec.nil?
285
- @gem_paths[depspec.name] = depspec.full_gem_path
286
- gy = yardoc_file_for_spec(depspec)
287
- if gy.nil?
288
- missing_docs.push dep.name
289
- else
290
- next if yardocs.include?(gy)
291
- yardocs.unshift gy
292
- result.concat process_yardoc gy, depspec
293
- result.concat add_gem_dependencies(depspec)
221
+ begin
222
+ name = r.split('/').first.to_s
223
+ return [] if name.empty? || @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
294
242
  end
295
- rescue Gem::LoadError
296
- # This error probably indicates a bug in an installed gem
297
- Solargraph::Logging.logger.warn "Failed to resolve #{dep.name} gem dependency for #{spec.name}"
298
243
  end
244
+ rescue Gem::LoadError, NoYardocError
245
+ process_error(r, result, already_errored)
299
246
  end
300
- result
247
+ return result
301
248
  end
302
249
 
303
250
  # @param y [String, nil]
@@ -306,22 +253,8 @@ module Solargraph
306
253
  def process_yardoc y, spec = nil
307
254
  return [] if y.nil?
308
255
  if spec
309
- ser = File.join(CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}.ser")
310
- if File.file?(ser)
311
- Solargraph.logger.info "Loading #{spec.name} #{spec.version} from cache"
312
- file = File.open(ser, 'rb')
313
- dump = file.read
314
- file.close
315
- begin
316
- result = Marshal.load(dump)
317
- return result unless result.nil? || result.empty?
318
- Solargraph.logger.warn "Empty cache for #{spec.name} #{spec.version}. Reloading"
319
- File.unlink ser
320
- rescue StandardError => e
321
- Solargraph.logger.warn "Error loading pin cache: [#{e.class}] #{e.message}"
322
- File.unlink ser
323
- end
324
- end
256
+ cache = Solargraph::Cache.load('gems', "#{spec.name}-#{spec.version}.ser")
257
+ return cache if cache
325
258
  end
326
259
  size = Dir.glob(File.join(y, '**', '*'))
327
260
  .map{ |f| File.size(f) }
@@ -335,10 +268,7 @@ module Solargraph
335
268
  result = Mapper.new(YARD::Registry.all, spec).map
336
269
  raise NoYardocError, "Yardoc at #{y} is empty" if result.empty?
337
270
  if spec
338
- ser = File.join(CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}.ser")
339
- file = File.open(ser, 'wb')
340
- file.write Marshal.dump(result)
341
- file.close
271
+ Solargraph::Cache.save 'gems', "#{spec.name}-#{spec.version}.ser", result
342
272
  end
343
273
  result
344
274
  end
@@ -346,19 +276,13 @@ module Solargraph
346
276
  # @param spec [Gem::Specification]
347
277
  # @return [String]
348
278
  def yardoc_file_for_spec spec
349
- cache_dir = File.join(Solargraph::YardMap::CoreDocs.cache_dir, 'gems', "#{spec.name}-#{spec.version}", 'yardoc')
350
- if File.exist?(cache_dir)
351
- Solargraph.logger.info "Using cached documentation for #{spec.name} at #{cache_dir}"
352
- cache_dir
353
- else
354
- YARD::Registry.yardoc_file_for_gem(spec.name, "= #{spec.version}")
355
- end
279
+ YARD::Registry.yardoc_file_for_gem(spec.name, "= #{spec.version}")
356
280
  end
357
281
 
358
282
  # @param path [String]
359
283
  # @return [Gem::Specification]
360
284
  def spec_for_require path
361
- name = path.split('/').first
285
+ name = path.split('/').first.to_s
362
286
  spec = Gem::Specification.find_by_name(name, @gemset[name])
363
287
 
364
288
  # Avoid loading the spec again if it's going to be skipped anyway
@@ -373,88 +297,5 @@ module Solargraph
373
297
  end
374
298
  spec
375
299
  end
376
-
377
- def load_core_pins
378
- yd = CoreDocs.yardoc_file
379
- ser = File.join(File.dirname(yd), 'core.ser')
380
- result = if File.file?(ser)
381
- file = File.open(ser, 'rb')
382
- dump = file.read
383
- file.close
384
- begin
385
- Marshal.load(dump)
386
- rescue StandardError => e
387
- Solargraph.logger.warn "Error loading core pin cache: [#{e.class}] #{e.message}"
388
- File.unlink ser
389
- read_core_and_save_cache(yd, ser)
390
- end
391
- else
392
- read_core_and_save_cache(yd, ser)
393
- end
394
- ApiMap::Store.new(result + CoreFills::ALL).pins.reject { |pin| pin.is_a?(Pin::Reference::Override) }
395
- end
396
-
397
- def read_core_and_save_cache yd, ser
398
- result = []
399
- load_yardoc yd
400
- result.concat Mapper.new(YARD::Registry.all).map
401
- # HACK: Assume core methods with a single `args` parameter accept restarg
402
- result.select { |pin| pin.is_a?(Solargraph::Pin::Method )}.each do |pin|
403
- if pin.parameters.length == 1 && pin.parameters.first.name == 'args' && pin.parameters.first.decl == :arg
404
- # @todo Smelly instance variable access
405
- pin.parameters.first.instance_variable_set(:@decl, :restarg)
406
- end
407
- end
408
- # HACK: Set missing parameters on `==` methods, e.g., `Symbol#==`
409
- result.select { |pin| pin.name == '==' && pin.parameters.empty? }.each do |pin|
410
- pin.parameters.push Pin::Parameter.new(decl: :arg, name: 'obj2')
411
- end
412
- dump = Marshal.dump(result)
413
- file = File.open(ser, 'wb')
414
- file.write dump
415
- file.close
416
- result
417
- end
418
-
419
- def load_stdlib_pins base
420
- ser = File.join(File.dirname(CoreDocs.yardoc_stdlib_file), "#{base}.ser")
421
- result = if File.file?(ser)
422
- Solargraph.logger.info "Loading #{base} stdlib from cache"
423
- file = File.open(ser, 'rb')
424
- dump = file.read
425
- file.close
426
- begin
427
- Marshal.load(dump)
428
- rescue StandardError => e
429
- Solargraph.logger.warn "Error loading #{base} stdlib pin cache: [#{e.class}] #{e.message}"
430
- File.unlink ser
431
- read_stdlib_and_save_cache(base, ser)
432
- end
433
- else
434
- read_stdlib_and_save_cache(base, ser)
435
- end
436
- fills = StdlibFills.get(base)
437
- unless fills.empty?
438
- result = ApiMap::Store.new(result + fills).pins.reject { |pin| pin.is_a?(Pin::Reference::Override) }
439
- end
440
- result
441
- end
442
-
443
- def read_stdlib_and_save_cache base, ser
444
- result = []
445
- if stdlib_paths[base]
446
- Solargraph.logger.info "Loading #{base} stdlib from yardoc"
447
- result.concat Mapper.new(stdlib_paths[base]).map
448
- unless result.empty?
449
- dump = Marshal.dump(result)
450
- file = File.open(ser, 'wb')
451
- file.write dump
452
- file.close
453
- end
454
- end
455
- result
456
- end
457
300
  end
458
301
  end
459
-
460
- 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,35 @@ 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"
20
+ s.metadata["bug_tracker_uri"] = "https://github.com/castwide/solargraph/issues"
21
+ s.metadata["changelog_uri"] = "https://github.com/castwide/solargraph/blob/master/CHANGELOG.md"
22
+ s.metadata["source_code_uri"] = "https://github.com/castwide/solargraph"
19
23
 
20
- s.required_ruby_version = '>= 2.4'
24
+ s.required_ruby_version = '>= 2.6'
21
25
 
22
26
  s.add_runtime_dependency 'backport', '~> 1.2'
23
27
  s.add_runtime_dependency 'benchmark'
24
- s.add_runtime_dependency 'bundler', '>= 1.17.2'
28
+ s.add_runtime_dependency 'bundler', '~> 2.0'
25
29
  s.add_runtime_dependency 'diff-lcs', '~> 1.4'
26
30
  s.add_runtime_dependency 'e2mmap'
27
31
  s.add_runtime_dependency 'jaro_winkler', '~> 1.5'
28
32
  s.add_runtime_dependency 'kramdown', '~> 2.3'
29
33
  s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1'
30
34
  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'
35
+ s.add_runtime_dependency 'rbs', '~> 2.0'
36
+ s.add_runtime_dependency 'reverse_markdown', '~> 2.0'
37
+ s.add_runtime_dependency 'rubocop', '~> 1.38'
33
38
  s.add_runtime_dependency 'thor', '~> 1.0'
34
39
  s.add_runtime_dependency 'tilt', '~> 2.0'
35
40
  s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
36
41
 
37
42
  s.add_development_dependency 'pry'
38
43
  s.add_development_dependency 'public_suffix', '~> 3.1'
39
- s.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
44
+ s.add_development_dependency 'rspec', '~> 3.5'
40
45
  s.add_development_dependency 'simplecov', '~> 0.14'
41
46
  s.add_development_dependency 'webmock', '~> 3.6'
42
47
  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.47.2
4
+ version: 0.50.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-09-30 00:00:00.000000000 Z
11
+ date: 2023-12-05 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,10 +303,10 @@ 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"
307
- - ".travis.yml"
308
310
  - ".yardopts"
309
311
  - CHANGELOG.md
310
312
  - Gemfile
@@ -321,7 +323,7 @@ files:
321
323
  - lib/solargraph/api_map/source_to_yard.rb
322
324
  - lib/solargraph/api_map/store.rb
323
325
  - lib/solargraph/bench.rb
324
- - lib/solargraph/compat.rb
326
+ - lib/solargraph/cache.rb
325
327
  - lib/solargraph/complex_type.rb
326
328
  - lib/solargraph/complex_type/type_methods.rb
327
329
  - lib/solargraph/complex_type/unique_type.rb
@@ -329,6 +331,7 @@ files:
329
331
  - lib/solargraph/convention/base.rb
330
332
  - lib/solargraph/convention/gemfile.rb
331
333
  - lib/solargraph/convention/gemspec.rb
334
+ - lib/solargraph/convention/rakefile.rb
332
335
  - lib/solargraph/convention/rspec.rb
333
336
  - lib/solargraph/converters/dd.rb
334
337
  - lib/solargraph/converters/dl.rb
@@ -463,6 +466,7 @@ files:
463
466
  - lib/solargraph/parser/rubyvm/node_processors/scope_node.rb
464
467
  - lib/solargraph/parser/rubyvm/node_processors/send_node.rb
465
468
  - lib/solargraph/parser/rubyvm/node_processors/sym_node.rb
469
+ - lib/solargraph/parser/rubyvm/node_wrapper.rb
466
470
  - lib/solargraph/parser/snippet.rb
467
471
  - lib/solargraph/pin.rb
468
472
  - lib/solargraph/pin/base.rb
@@ -493,10 +497,17 @@ files:
493
497
  - lib/solargraph/pin/reference/require.rb
494
498
  - lib/solargraph/pin/reference/superclass.rb
495
499
  - lib/solargraph/pin/search.rb
500
+ - lib/solargraph/pin/signature.rb
496
501
  - lib/solargraph/pin/singleton.rb
497
502
  - lib/solargraph/pin/symbol.rb
498
503
  - lib/solargraph/position.rb
499
504
  - lib/solargraph/range.rb
505
+ - lib/solargraph/rbs_map.rb
506
+ - lib/solargraph/rbs_map/conversions.rb
507
+ - lib/solargraph/rbs_map/core_fills.rb
508
+ - lib/solargraph/rbs_map/core_map.rb
509
+ - lib/solargraph/rbs_map/core_signs.rb
510
+ - lib/solargraph/rbs_map/stdlib_map.rb
500
511
  - lib/solargraph/server_methods.rb
501
512
  - lib/solargraph/shell.rb
502
513
  - lib/solargraph/source.rb
@@ -541,24 +552,22 @@ files:
541
552
  - lib/solargraph/workspace/config.rb
542
553
  - lib/solargraph/yard_map.rb
543
554
  - lib/solargraph/yard_map/cache.rb
544
- - lib/solargraph/yard_map/core_docs.rb
545
- - lib/solargraph/yard_map/core_fills.rb
546
- - lib/solargraph/yard_map/core_gen.rb
547
555
  - lib/solargraph/yard_map/helpers.rb
548
556
  - lib/solargraph/yard_map/mapper.rb
549
557
  - lib/solargraph/yard_map/mapper/to_constant.rb
550
558
  - lib/solargraph/yard_map/mapper/to_method.rb
551
559
  - lib/solargraph/yard_map/mapper/to_namespace.rb
552
- - lib/solargraph/yard_map/rdoc_to_yard.rb
553
- - lib/solargraph/yard_map/stdlib_fills.rb
554
560
  - lib/solargraph/yard_map/to_method.rb
555
561
  - lib/yard-solargraph.rb
556
562
  - solargraph.gemspec
557
- - yardoc/2.2.2.tar.gz
558
- homepage: http://solargraph.org
563
+ homepage: https://solargraph.org
559
564
  licenses:
560
565
  - MIT
561
- metadata: {}
566
+ metadata:
567
+ funding_uri: https://www.patreon.com/castwide
568
+ bug_tracker_uri: https://github.com/castwide/solargraph/issues
569
+ changelog_uri: https://github.com/castwide/solargraph/blob/master/CHANGELOG.md
570
+ source_code_uri: https://github.com/castwide/solargraph
562
571
  post_install_message:
563
572
  rdoc_options: []
564
573
  require_paths:
@@ -567,7 +576,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
567
576
  requirements:
568
577
  - - ">="
569
578
  - !ruby/object:Gem::Version
570
- version: '2.4'
579
+ version: '2.6'
571
580
  required_rubygems_version: !ruby/object:Gem::Requirement
572
581
  requirements:
573
582
  - - ">="
data/.travis.yml DELETED
@@ -1,19 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4
4
- - 2.5
5
- - 2.6
6
- - 2.7
7
- - 3.0
8
- - jruby-head
9
- matrix:
10
- include:
11
- - rvm: 2.7
12
- os: osx
13
- allow_failures:
14
- - rvm: jruby-head
15
- before_install:
16
- - gem update --system
17
- - gem install bundler
18
- before_script: yard gems
19
- script: rspec
@@ -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