solargraph 0.39.13 → 0.40.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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -7
  3. data/CHANGELOG.md +984 -0
  4. data/Rakefile +12 -1
  5. data/SPONSORS.md +1 -0
  6. data/lib/solargraph.rb +2 -4
  7. data/lib/solargraph/api_map.rb +75 -74
  8. data/lib/solargraph/api_map/cache.rb +2 -2
  9. data/lib/solargraph/api_map/store.rb +4 -8
  10. data/lib/solargraph/{bundle.rb → bench.rb} +6 -2
  11. data/lib/solargraph/compat.rb +14 -0
  12. data/lib/solargraph/complex_type.rb +2 -2
  13. data/lib/solargraph/convention.rb +14 -5
  14. data/lib/solargraph/convention/base.rb +16 -8
  15. data/lib/solargraph/convention/gemfile.rb +2 -5
  16. data/lib/solargraph/convention/gemspec.rb +3 -6
  17. data/lib/solargraph/convention/rspec.rb +3 -6
  18. data/lib/solargraph/documentor.rb +2 -0
  19. data/lib/solargraph/environ.rb +11 -6
  20. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +6 -1
  21. data/lib/solargraph/language_server/message/text_document/definition.rb +1 -1
  22. data/lib/solargraph/library.rb +7 -7
  23. data/lib/solargraph/parser/legacy/node_chainer.rb +7 -7
  24. data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +1 -1
  25. data/lib/solargraph/parser/legacy/node_processors/send_node.rb +36 -23
  26. data/lib/solargraph/parser/node_processor/base.rb +3 -0
  27. data/lib/solargraph/parser/rubyvm/node_chainer.rb +9 -9
  28. data/lib/solargraph/parser/rubyvm/node_methods.rb +1 -1
  29. data/lib/solargraph/parser/rubyvm/node_processors.rb +1 -0
  30. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +35 -11
  31. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +1 -1
  32. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +40 -29
  33. data/lib/solargraph/pin.rb +0 -3
  34. data/lib/solargraph/pin/common.rb +1 -1
  35. data/lib/solargraph/pin/conversions.rb +3 -4
  36. data/lib/solargraph/pin/documenting.rb +3 -9
  37. data/lib/solargraph/pin/method.rb +141 -7
  38. data/lib/solargraph/pin/method_alias.rb +1 -1
  39. data/lib/solargraph/position.rb +2 -14
  40. data/lib/solargraph/shell.rb +1 -0
  41. data/lib/solargraph/source.rb +10 -6
  42. data/lib/solargraph/source/chain.rb +18 -5
  43. data/lib/solargraph/source_map.rb +4 -1
  44. data/lib/solargraph/source_map/clip.rb +3 -2
  45. data/lib/solargraph/source_map/mapper.rb +10 -6
  46. data/lib/solargraph/type_checker.rb +35 -39
  47. data/lib/solargraph/type_checker/param_def.rb +1 -1
  48. data/lib/solargraph/version.rb +1 -1
  49. data/lib/solargraph/yard_map.rb +40 -47
  50. data/lib/solargraph/yard_map/core_fills.rb +185 -0
  51. data/lib/solargraph/yard_map/helpers.rb +16 -0
  52. data/lib/solargraph/yard_map/mapper.rb +14 -8
  53. data/lib/solargraph/{pin/yard_pin/constant.rb → yard_map/mapper/to_constant.rb} +6 -6
  54. data/lib/solargraph/yard_map/mapper/to_method.rb +78 -0
  55. data/lib/solargraph/{pin/yard_pin/namespace.rb → yard_map/mapper/to_namespace.rb} +6 -6
  56. data/lib/solargraph/yard_map/rdoc_to_yard.rb +1 -1
  57. data/lib/solargraph/yard_map/stdlib_fills.rb +43 -0
  58. data/lib/solargraph/yard_map/to_method.rb +79 -0
  59. data/solargraph.gemspec +4 -4
  60. metadata +20 -34
  61. data/lib/solargraph/core_fills.rb +0 -159
  62. data/lib/solargraph/pin/attribute.rb +0 -49
  63. data/lib/solargraph/pin/base_method.rb +0 -141
  64. data/lib/solargraph/pin/yard_pin.rb +0 -12
  65. data/lib/solargraph/pin/yard_pin/method.rb +0 -80
  66. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +0 -20
  67. data/lib/solargraph/stdlib_fills.rb +0 -40
  68. data/travis-bundler.rb +0 -11
data/Rakefile CHANGED
@@ -11,4 +11,15 @@ end
11
11
  desc "Open a Pry session preloaded with this library"
12
12
  task :console do
13
13
  sh "pry -I lib -r solargraph.rb"
14
- end
14
+ end
15
+
16
+ desc "Run the type checker"
17
+ task :typecheck do
18
+ sh "bundle exec solargraph typecheck --level typed"
19
+ end
20
+
21
+ desc "Run all tests"
22
+ task :test do
23
+ Rake::Task["typecheck"].invoke
24
+ Rake::Task["spec"].invoke
25
+ end
@@ -12,3 +12,4 @@ The following people and organizations provide funding or other resources. [Beco
12
12
 
13
13
  - Emily Strickland
14
14
  - Tom de Grunt
15
+ - Akira Yamada
@@ -27,15 +27,13 @@ module Solargraph
27
27
  autoload :YardMap, 'solargraph/yard_map'
28
28
  autoload :Pin, 'solargraph/pin'
29
29
  autoload :ServerMethods, 'solargraph/server_methods'
30
- autoload :CoreFills, 'solargraph/core_fills'
31
- autoload :StdlibFills, 'solargraph/stdlib_fills'
32
30
  autoload :LanguageServer, 'solargraph/language_server'
33
31
  autoload :Workspace, 'solargraph/workspace'
34
32
  autoload :Page, 'solargraph/page'
35
33
  autoload :Library, 'solargraph/library'
36
34
  autoload :Diagnostics, 'solargraph/diagnostics'
37
35
  autoload :ComplexType, 'solargraph/complex_type'
38
- autoload :Bundle, 'solargraph/bundle'
36
+ autoload :Bench, 'solargraph/bench'
39
37
  autoload :Logging, 'solargraph/logging'
40
38
  autoload :TypeChecker, 'solargraph/type_checker'
41
39
  autoload :Environ, 'solargraph/environ'
@@ -56,7 +54,7 @@ module Solargraph
56
54
  end
57
55
 
58
56
  # A helper method that runs Bundler.with_unbundled_env or falls back to
59
- # Bundler.with_clean env for earlier versions of Bundler.
57
+ # Bundler.with_clean_env for earlier versions of Bundler.
60
58
  #
61
59
  def self.with_clean_env &block
62
60
  meth = if Bundler.respond_to?(:with_unbundled_env)
@@ -33,11 +33,7 @@ module Solargraph
33
33
  # @param pins [Array<Pin::Base>]
34
34
  # @return [self]
35
35
  def index pins
36
- @source_map_hash.clear
37
- @cache.clear
38
- @store = Store.new(pins + YardMap.new.pins)
39
- @unresolved_requires = []
40
- workspace_filenames.clear
36
+ catalog Bench.new(pins: pins)
41
37
  self
42
38
  end
43
39
 
@@ -46,7 +42,7 @@ module Solargraph
46
42
  # @param source [Source]
47
43
  # @return [self]
48
44
  def map source
49
- catalog Bundle.new(opened: [source])
45
+ catalog Bench.new(opened: [source])
50
46
  self
51
47
  end
52
48
 
@@ -56,17 +52,19 @@ module Solargraph
56
52
  store.named_macros[name]
57
53
  end
58
54
 
59
- # Catalog a bundle.
55
+ # Catalog a bench.
60
56
  #
61
- # @param bundle [Bundle]
57
+ # @param bench [Bench]
62
58
  # @return [self]
63
- def catalog bundle
59
+ def catalog bench
64
60
  new_map_hash = {}
65
- # Bundle always needs to be merged if it adds or removes sources
66
- merged = (bundle.sources.length == source_map_hash.values.length)
67
- bundle.sources.each do |source|
61
+ # Bench always needs to be merged if it adds or removes sources
62
+ merged = (bench.sources.length == source_map_hash.values.length)
63
+ bench.sources.each do |source|
68
64
  if source_map_hash.key?(source.filename)
69
- if source_map_hash[source.filename].code == source.code && source_map_hash[source.filename].source.synchronized? && source.synchronized?
65
+ if source_map_hash[source.filename].code == source.code &&
66
+ source_map_hash[source.filename].source.synchronized? &&
67
+ source.synchronized?
70
68
  new_map_hash[source.filename] = source_map_hash[source.filename]
71
69
  elsif !source.synchronized?
72
70
  new_map_hash[source.filename] = source_map_hash[source.filename]
@@ -87,23 +85,28 @@ module Solargraph
87
85
  merged = false
88
86
  end
89
87
  end
90
- return self if merged
88
+ return self if bench.pins.empty? && @store && merged
91
89
  implicit.clear
92
90
  pins = []
93
91
  reqs = Set.new
94
92
  # @param map [SourceMap]
95
- new_map_hash.values.each do |map|
96
- implicit.merge map.environ
93
+ new_map_hash.each_value do |map|
97
94
  pins.concat map.pins
98
95
  reqs.merge map.requires.map(&:name)
99
96
  end
100
- reqs.merge bundle.workspace.config.required
97
+ pins.concat bench.pins
98
+ reqs.merge bench.workspace.config.required
99
+ @required = reqs
100
+ bench.sources.each do |src|
101
+ implicit.merge new_map_hash[src.filename].environ
102
+ end
103
+ # implicit.merge Convention.for_global(self)
101
104
  local_path_hash.clear
102
- unless bundle.workspace.require_paths.empty?
105
+ unless bench.workspace.require_paths.empty?
103
106
  file_keys = new_map_hash.keys
104
- workspace_path = Pathname.new(bundle.workspace.directory)
107
+ workspace_path = Pathname.new(bench.workspace.directory)
105
108
  reqs.delete_if do |r|
106
- bundle.workspace.require_paths.any? do |base|
109
+ bench.workspace.require_paths.any? do |base|
107
110
  pn = workspace_path.join(base, "#{r}.rb").to_s
108
111
  if file_keys.include? pn
109
112
  local_path_hash[r] = pn
@@ -115,22 +118,25 @@ module Solargraph
115
118
  end
116
119
  end
117
120
  reqs.merge implicit.requires
118
- pins.concat implicit.overrides
119
- br = reqs.include?('bundler/require') ? require_from_bundle(bundle.workspace.directory) : {}
121
+ br = reqs.include?('bundler/require') ? require_from_bundle(bench.workspace.directory) : {}
120
122
  reqs.merge br.keys
121
- yard_map.change(reqs.to_a, br, bundle.workspace.gemnames)
122
- new_store = Store.new(pins + yard_map.pins)
123
+ yard_map.change(reqs.to_a, br, bench.workspace.gemnames)
124
+ new_store = Store.new(yard_map.pins + implicit.pins + pins)
123
125
  @cache.clear
124
126
  @source_map_hash = new_map_hash
125
127
  @store = new_store
126
128
  @unresolved_requires = yard_map.unresolved_requires
127
129
  workspace_filenames.clear
128
- workspace_filenames.concat bundle.workspace.filenames
130
+ workspace_filenames.concat bench.workspace.filenames
129
131
  @rebindable_method_names = nil
130
132
  store.block_pins.each { |blk| blk.rebind(self) }
131
133
  self
132
134
  end
133
135
 
136
+ def required
137
+ @required ||= Set.new
138
+ end
139
+
134
140
  # @return [Environ]
135
141
  def implicit
136
142
  @implicit ||= Environ.new
@@ -146,7 +152,7 @@ module Solargraph
146
152
  # @return [Source::Cursor]
147
153
  def cursor_at filename, position
148
154
  position = Position.normalize(position)
149
- raise FileNotFoundError, "File not found: #{filename}" unless source_map_hash.has_key?(filename)
155
+ raise FileNotFoundError, "File not found: #{filename}" unless source_map_hash.key?(filename)
150
156
  source_map_hash[filename].cursor_at(position)
151
157
  end
152
158
 
@@ -165,9 +171,9 @@ module Solargraph
165
171
  # @param directory [String]
166
172
  # @return [ApiMap]
167
173
  def self.load directory
168
- api_map = self.new
174
+ api_map = new
169
175
  workspace = Solargraph::Workspace.new(directory)
170
- api_map.catalog Bundle.new(workspace: workspace)
176
+ api_map.catalog Bench.new(workspace: workspace)
171
177
  api_map
172
178
  end
173
179
 
@@ -189,10 +195,8 @@ module Solargraph
189
195
  # An array of pins based on Ruby keywords (`if`, `end`, etc.).
190
196
  #
191
197
  # @return [Array<Solargraph::Pin::Keyword>]
192
- def self.keywords
193
- @keywords ||= CoreFills::KEYWORDS.map{ |s|
194
- Pin::Keyword.new(s)
195
- }.freeze
198
+ def keyword_pins
199
+ store.pins_by_class(Pin::Keyword)
196
200
  end
197
201
 
198
202
  # An array of namespace names defined in the ApiMap.
@@ -296,7 +300,7 @@ module Solargraph
296
300
  # @param scope [Symbol] :class or :instance
297
301
  # @param visibility [Array<Symbol>] :public, :protected, and/or :private
298
302
  # @param deep [Boolean] True to include superclasses, mixins, etc.
299
- # @return [Array<Solargraph::Pin::BaseMethod>]
303
+ # @return [Array<Solargraph::Pin::Method>]
300
304
  def get_methods fqns, scope: :instance, visibility: [:public], deep: true
301
305
  cached = cache.get_methods(fqns, scope, visibility, deep)
302
306
  return cached.clone unless cached.nil?
@@ -373,9 +377,9 @@ module Solargraph
373
377
  # @param fqns [String]
374
378
  # @param name [String]
375
379
  # @param scope [Symbol] :instance or :class
376
- # @return [Array<Solargraph::Pin::BaseMethod>]
380
+ # @return [Array<Solargraph::Pin::Method>]
377
381
  def get_method_stack fqns, name, scope: :instance
378
- get_methods(fqns, scope: scope, visibility: [:private, :protected, :public]).select{|p| p.name == name}
382
+ get_methods(fqns, scope: scope, visibility: [:private, :protected, :public]).select { |p| p.name == name }
379
383
  end
380
384
 
381
385
  # Get an array of all suggestions that match the specified path.
@@ -386,9 +390,7 @@ module Solargraph
386
390
  # @return [Array<Solargraph::Pin::Base>]
387
391
  def get_path_suggestions path
388
392
  return [] if path.nil?
389
- result = []
390
- result.concat store.get_path_pins(path)
391
- resolve_method_aliases(result)
393
+ resolve_method_aliases store.get_path_pins(path)
392
394
  end
393
395
 
394
396
  # Get an array of pins that match the specified path.
@@ -410,8 +412,9 @@ module Solargraph
410
412
  rake_yard(store)
411
413
  found = []
412
414
  code_object_paths.each do |k|
413
- if found.empty? || (query.include?('.') || query.include?('#')) || !(k.include?('.') || k.include?('#'))
414
- found.push k if k.downcase.include?(query.downcase)
415
+ if (found.empty? || (query.include?('.') || query.include?('#')) || !(k.include?('.') || k.include?('#'))) &&
416
+ k.downcase.include?(query.downcase)
417
+ found.push k
415
418
  end
416
419
  end
417
420
  found
@@ -437,24 +440,22 @@ module Solargraph
437
440
  # @return [Array<Pin::Base>]
438
441
  def query_symbols query
439
442
  result = []
440
- source_map_hash.values.each do |s|
441
- result.concat s.query_symbols(query)
442
- end
443
+ source_map_hash.each_value { |s| result.concat s.query_symbols(query) }
443
444
  result
444
445
  end
445
446
 
446
447
  # @param location [Solargraph::Location]
447
448
  # @return [Array<Solargraph::Pin::Base>]
448
449
  def locate_pins location
449
- return [] if location.nil? || !source_map_hash.has_key?(location.filename)
450
- source_map_hash[location.filename].locate_pins(location)
450
+ return [] if location.nil? || !source_map_hash.key?(location.filename)
451
+ resolve_method_aliases source_map_hash[location.filename].locate_pins(location)
451
452
  end
452
453
 
453
454
  # @raise [FileNotFoundError] if the cursor's file is not in the ApiMap
454
455
  # @param cursor [Source::Cursor]
455
456
  # @return [SourceMap::Clip]
456
457
  def clip cursor
457
- raise FileNotFoundError, "ApiMap did not catalog #{cursor.filename}" unless source_map_hash.has_key?(cursor.filename)
458
+ raise FileNotFoundError, "ApiMap did not catalog #{cursor.filename}" unless source_map_hash.key?(cursor.filename)
458
459
  SourceMap::Clip.new(self, cursor)
459
460
  end
460
461
 
@@ -463,8 +464,8 @@ module Solargraph
463
464
  # @param filename [String]
464
465
  # @return [Array<Pin::Symbol>]
465
466
  def document_symbols filename
466
- return [] unless source_map_hash.has_key?(filename) # @todo Raise error?
467
- source_map_hash[filename].document_symbols
467
+ return [] unless source_map_hash.key?(filename) # @todo Raise error?
468
+ resolve_method_aliases source_map_hash[filename].document_symbols
468
469
  end
469
470
 
470
471
  # @return [Array<SourceMap>]
@@ -477,7 +478,7 @@ module Solargraph
477
478
  # @param filename [String]
478
479
  # @return [SourceMap]
479
480
  def source_map filename
480
- raise FileNotFoundError, "Source map for `#{filename}` not found" unless source_map_hash.has_key?(filename)
481
+ raise FileNotFoundError, "Source map for `#{filename}` not found" unless source_map_hash.key?(filename)
481
482
  source_map_hash[filename]
482
483
  end
483
484
 
@@ -500,7 +501,7 @@ module Solargraph
500
501
  # @return [Location]
501
502
  def require_reference_at location
502
503
  map = source_map(location.filename)
503
- pin = map.requires.select { |pin| pin.location.range.contain?(location.range.start) }.first
504
+ pin = map.requires.select { |p| p.location.range.contain?(location.range.start) }.first
504
505
  return nil if pin.nil?
505
506
  if local_path_hash.key?(pin.name)
506
507
  return Location.new(local_path_hash[pin.name], Solargraph::Range.from_to(0, 0, 0, 0))
@@ -525,6 +526,11 @@ module Solargraph
525
526
  false
526
527
  end
527
528
 
529
+ # @return [YardMap]
530
+ def yard_map
531
+ @yard_map ||= YardMap.new
532
+ end
533
+
528
534
  private
529
535
 
530
536
  # @return [Array<String>]
@@ -532,27 +538,16 @@ module Solargraph
532
538
  @workspace_filenames ||= []
533
539
  end
534
540
 
535
- # @return [YardMap]
536
- def yard_map
537
- @yard_map ||= YardMap.new
538
- end
539
-
540
541
  # A hash of source maps with filename keys.
541
542
  #
542
543
  # @return [Hash{String => SourceMap}]
543
- def source_map_hash
544
- @source_map_hash
545
- end
544
+ attr_reader :source_map_hash
546
545
 
547
546
  # @return [ApiMap::Store]
548
- def store
549
- @store
550
- end
547
+ attr_reader :store
551
548
 
552
549
  # @return [Solargraph::ApiMap::Cache]
553
- def cache
554
- @cache
555
- end
550
+ attr_reader :cache
556
551
 
557
552
  # @param fqns [String] A fully qualified namespace
558
553
  # @param scope [Symbol] :class or :instance
@@ -659,6 +654,7 @@ module Solargraph
659
654
  return nil if name.nil?
660
655
  return nil if skip.include?(root)
661
656
  skip.add root
657
+ possibles = []
662
658
  if name == ''
663
659
  if root == ''
664
660
  return ''
@@ -674,16 +670,19 @@ module Solargraph
674
670
  incs = store.get_includes(roots.join('::'))
675
671
  incs.each do |inc|
676
672
  foundinc = inner_qualify(name, inc, skip)
677
- return foundinc unless foundinc.nil?
673
+ possibles.push foundinc unless foundinc.nil?
678
674
  end
679
675
  roots.pop
680
676
  end
681
- incs = store.get_includes('')
682
- incs.each do |inc|
683
- foundinc = inner_qualify(name, inc, skip)
684
- return foundinc unless foundinc.nil?
677
+ if possibles.empty?
678
+ incs = store.get_includes('')
679
+ incs.each do |inc|
680
+ foundinc = inner_qualify(name, inc, skip)
681
+ possibles.push foundinc unless foundinc.nil?
682
+ end
685
683
  end
686
684
  return name if store.namespace_exists?(name)
685
+ return possibles.last
687
686
  end
688
687
  end
689
688
 
@@ -723,29 +722,31 @@ module Solargraph
723
722
  result = []
724
723
  pins.each do |pin|
725
724
  resolved = resolve_method_alias(pin)
726
- next unless visibility.include?(resolved.visibility)
725
+ next if resolved.respond_to?(:visibility) && !visibility.include?(resolved.visibility)
727
726
  result.push resolved
728
727
  end
729
728
  result
730
729
  end
731
730
 
732
731
  # @param pin [Pin::MethodAlias, Pin::Base]
733
- # @return [Pin::BaseMethod]
732
+ # @return [Pin::Method]
734
733
  def resolve_method_alias pin
735
734
  return pin if !pin.is_a?(Pin::MethodAlias) || @method_alias_stack.include?(pin.path)
736
735
  @method_alias_stack.push pin.path
737
736
  origin = get_method_stack(pin.full_context.namespace, pin.original, scope: pin.scope).first
738
737
  @method_alias_stack.pop
739
738
  return pin if origin.nil?
740
- Pin::Method.new(
739
+ args = {
741
740
  location: pin.location,
742
741
  closure: pin.closure,
743
742
  name: pin.name,
744
743
  comments: origin.comments,
745
744
  scope: origin.scope,
746
745
  visibility: origin.visibility,
747
- parameters: origin.parameters
748
- )
746
+ parameters: origin.parameters,
747
+ attribute: origin.attribute?
748
+ }
749
+ Pin::Method.new **args
749
750
  end
750
751
  end
751
752
  end
@@ -10,7 +10,7 @@ module Solargraph
10
10
  @receiver_definitions = {}
11
11
  end
12
12
 
13
- # @return [Array<Pin::BaseMethod>]
13
+ # @return [Array<Pin::Method>]
14
14
  def get_methods fqns, scope, visibility, deep
15
15
  @methods[[fqns, scope, visibility.sort, deep]]
16
16
  end
@@ -41,7 +41,7 @@ module Solargraph
41
41
  @receiver_definitions.key? path
42
42
  end
43
43
 
44
- # @return [Pin::BaseMethod]
44
+ # @return [Pin::Method]
45
45
  def get_receiver_definition path
46
46
  @receiver_definitions[path]
47
47
  end
@@ -29,7 +29,7 @@ module Solargraph
29
29
  # @return [Array<Solargraph::Pin::Base>]
30
30
  def get_methods fqns, scope: :instance, visibility: [:public]
31
31
  namespace_children(fqns).select do |pin|
32
- pin.is_a?(Pin::BaseMethod) && pin.scope == scope && visibility.include?(pin.visibility)
32
+ pin.is_a?(Pin::Method) && pin.scope == scope && visibility.include?(pin.visibility)
33
33
  end
34
34
  end
35
35
 
@@ -102,9 +102,9 @@ module Solargraph
102
102
  pins_by_class(Solargraph::Pin::Namespace)
103
103
  end
104
104
 
105
- # @return [Array<Solargraph::Pin::BaseMethod>]
105
+ # @return [Array<Solargraph::Pin::Method>]
106
106
  def method_pins
107
- pins_by_class(Solargraph::Pin::BaseMethod)
107
+ pins_by_class(Solargraph::Pin::Method)
108
108
  end
109
109
 
110
110
  # @param fqns [String]
@@ -218,7 +218,7 @@ module Solargraph
218
218
  @pin_select_cache = {}
219
219
  @namespace_map = set.classify(&:namespace).transform_values(&:to_a)
220
220
  @path_pin_hash = set.classify(&:path).transform_values(&:to_a)
221
- @namespaces = @path_pin_hash.keys.compact
221
+ @namespaces = @path_pin_hash.keys.compact.to_set
222
222
  pins_by_class(Pin::Reference::Include).each do |pin|
223
223
  include_references[pin.namespace] ||= []
224
224
  include_references[pin.namespace].push pin.name
@@ -245,10 +245,6 @@ module Solargraph
245
245
  pin.docstring.add_tag(tag)
246
246
  end
247
247
  end
248
- # @todo This is probably not the best place for these overrides
249
- superclass_references['Integer'] = ['Numeric']
250
- superclass_references['Float'] = ['Numeric']
251
- superclass_references['File'] = ['IO']
252
248
  end
253
249
  end
254
250
  end