solargraph 0.39.14 → 0.40.1

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -8
  3. data/CHANGELOG.md +988 -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 +13 -4
  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/language_server/message/text_document/formatting.rb +17 -19
  23. data/lib/solargraph/library.rb +8 -10
  24. data/lib/solargraph/parser/legacy/node_chainer.rb +7 -7
  25. data/lib/solargraph/parser/legacy/node_methods.rb +5 -0
  26. data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +1 -1
  27. data/lib/solargraph/parser/legacy/node_processors/send_node.rb +36 -23
  28. data/lib/solargraph/parser/node_processor/base.rb +3 -0
  29. data/lib/solargraph/parser/rubyvm/node_chainer.rb +9 -9
  30. data/lib/solargraph/parser/rubyvm/node_methods.rb +11 -1
  31. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +1 -1
  32. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +1 -1
  33. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +40 -29
  34. data/lib/solargraph/pin.rb +0 -3
  35. data/lib/solargraph/pin/common.rb +1 -1
  36. data/lib/solargraph/pin/conversions.rb +3 -4
  37. data/lib/solargraph/pin/documenting.rb +3 -9
  38. data/lib/solargraph/pin/method.rb +141 -7
  39. data/lib/solargraph/pin/method_alias.rb +1 -1
  40. data/lib/solargraph/position.rb +2 -14
  41. data/lib/solargraph/shell.rb +1 -1
  42. data/lib/solargraph/source.rb +10 -6
  43. data/lib/solargraph/source/chain.rb +18 -5
  44. data/lib/solargraph/source_map.rb +4 -1
  45. data/lib/solargraph/source_map/clip.rb +3 -2
  46. data/lib/solargraph/source_map/mapper.rb +10 -6
  47. data/lib/solargraph/type_checker.rb +35 -39
  48. data/lib/solargraph/type_checker/param_def.rb +1 -1
  49. data/lib/solargraph/version.rb +1 -1
  50. data/lib/solargraph/yard_map.rb +40 -47
  51. data/lib/solargraph/yard_map/core_fills.rb +185 -0
  52. data/lib/solargraph/yard_map/helpers.rb +16 -0
  53. data/lib/solargraph/yard_map/mapper.rb +14 -8
  54. data/lib/solargraph/{pin/yard_pin/constant.rb → yard_map/mapper/to_constant.rb} +6 -6
  55. data/lib/solargraph/yard_map/mapper/to_method.rb +78 -0
  56. data/lib/solargraph/{pin/yard_pin/namespace.rb → yard_map/mapper/to_namespace.rb} +6 -6
  57. data/lib/solargraph/yard_map/rdoc_to_yard.rb +1 -1
  58. data/lib/solargraph/yard_map/stdlib_fills.rb +43 -0
  59. data/lib/solargraph/yard_map/to_method.rb +79 -0
  60. data/solargraph.gemspec +4 -4
  61. metadata +20 -34
  62. data/lib/solargraph/core_fills.rb +0 -160
  63. data/lib/solargraph/pin/attribute.rb +0 -49
  64. data/lib/solargraph/pin/base_method.rb +0 -141
  65. data/lib/solargraph/pin/yard_pin.rb +0 -12
  66. data/lib/solargraph/pin/yard_pin/method.rb +0 -80
  67. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +0 -20
  68. data/lib/solargraph/stdlib_fills.rb +0 -40
  69. data/travis-bundler.rb +0 -11
@@ -20,7 +20,7 @@ module Solargraph
20
20
  class << self
21
21
  # Get an array of ParamDefs from a method pin.
22
22
  #
23
- # @param pin [Solargraph::Pin::BaseMethod]
23
+ # @param pin [Solargraph::Pin::Method]
24
24
  # @return [Array<ParamDef>]
25
25
  def from pin
26
26
  result = []
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.39.14'
4
+ VERSION = '0.40.1'
5
5
  end
@@ -10,11 +10,15 @@ module Solargraph
10
10
  # stdlib, and gems.
11
11
  #
12
12
  class YardMap
13
- autoload :Cache, 'solargraph/yard_map/cache'
14
- autoload :CoreDocs, 'solargraph/yard_map/core_docs'
15
- autoload :CoreGen, 'solargraph/yard_map/core_gen'
16
- autoload :Mapper, 'solargraph/yard_map/mapper'
17
- autoload :RdocToYard, 'solargraph/yard_map/rdoc_to_yard'
13
+ autoload :Cache, 'solargraph/yard_map/cache'
14
+ autoload :CoreDocs, 'solargraph/yard_map/core_docs'
15
+ autoload :CoreGen, 'solargraph/yard_map/core_gen'
16
+ autoload :Mapper, 'solargraph/yard_map/mapper'
17
+ autoload :RdocToYard, 'solargraph/yard_map/rdoc_to_yard'
18
+ autoload :CoreFills, 'solargraph/yard_map/core_fills'
19
+ autoload :StdlibFills, 'solargraph/yard_map/stdlib_fills'
20
+ autoload :Helpers, 'solargraph/yard_map/helpers'
21
+ autoload :ToMethod, 'solargraph/yard_map/to_method'
18
22
 
19
23
  CoreDocs.require_minimum
20
24
 
@@ -50,6 +54,8 @@ module Solargraph
50
54
  def initialize(required: [], gemset: {}, with_dependencies: true)
51
55
  # HACK: YardMap needs its own copy of this array
52
56
  @required = required.clone
57
+ # HACK: Hardcoded YAML handling
58
+ @required.push 'psych' if @required.include?('yaml')
53
59
  @with_dependencies = with_dependencies
54
60
  @gem_paths = {}
55
61
  @stdlib_namespaces = []
@@ -74,6 +80,8 @@ module Solargraph
74
80
  # @param new_gemset [Hash{String => String}]
75
81
  # @return [Boolean]
76
82
  def change new_requires, new_gemset, source_gems = []
83
+ # HACK: Hardcoded YAML handling
84
+ new_requires.push 'psych' if new_requires.include?('yaml')
77
85
  if new_requires.uniq.sort == required.uniq.sort && new_gemset == gemset && @source_gems.uniq.sort == source_gems.uniq.sort
78
86
  false
79
87
  else
@@ -131,7 +139,7 @@ module Solargraph
131
139
  # @param path [String]
132
140
  # @return [Pin::Base]
133
141
  def path_pin path
134
- pins.select{ |p| p.path == path }.first
142
+ pins.select { |p| p.path == path }.first
135
143
  end
136
144
 
137
145
  # Get the location of a file referenced by a require path.
@@ -151,6 +159,10 @@ module Solargraph
151
159
  nil
152
160
  end
153
161
 
162
+ def stdlib_pins
163
+ @stdlib_pins ||= []
164
+ end
165
+
154
166
  private
155
167
 
156
168
  # @return [YardMap::Cache]
@@ -158,10 +170,12 @@ module Solargraph
158
170
  @cache ||= YardMap::Cache.new
159
171
  end
160
172
 
173
+ # @return [Hash]
161
174
  def pin_class_hash
162
175
  @pin_class_hash ||= pins.to_set.classify(&:class).transform_values(&:to_a)
163
176
  end
164
177
 
178
+ # @return [Array<Pin::Base>]
165
179
  def pins_by_class klass
166
180
  @pin_select_cache[klass] ||= pin_class_hash.select { |key, _| key <= klass }.values.flatten
167
181
  end
@@ -179,12 +193,13 @@ module Solargraph
179
193
 
180
194
  # @return [void]
181
195
  def process_requires
182
- pins.clear
196
+ pins.replace core_pins
183
197
  unresolved_requires.clear
184
- # stdnames = {}
198
+ stdlib_pins.clear
199
+ environ = Convention.for_global(self)
185
200
  done = []
186
201
  from_std = []
187
- required.each do |r|
202
+ (required + environ.requires).each do |r|
188
203
  next if r.nil? || r.empty? || done.include?(r)
189
204
  done.push r
190
205
  cached = cache.get_path_pins(r)
@@ -209,7 +224,6 @@ module Solargraph
209
224
  yardocs.unshift yd
210
225
  result.concat process_yardoc yd, spec
211
226
  result.concat add_gem_dependencies(spec) if with_dependencies?
212
- stdlib_fill r, result
213
227
  end
214
228
  rescue Gem::LoadError => e
215
229
  base = r.split('/').first
@@ -219,7 +233,7 @@ module Solargraph
219
233
  if stdtmp.empty?
220
234
  unresolved_requires.push r
221
235
  else
222
- stdlib_fill base, stdtmp
236
+ stdlib_pins.concat stdtmp
223
237
  result.concat stdtmp
224
238
  end
225
239
  end
@@ -229,7 +243,13 @@ module Solargraph
229
243
  pins.concat result
230
244
  end
231
245
  end
232
- pins.concat core_pins
246
+ if required.include?('yaml') && required.include?('psych')
247
+ # HACK: Hardcoded YAML handling
248
+ # @todo Why can't this be handled with an override or a virtual pin?
249
+ pin = path_pin('YAML')
250
+ pin.instance_variable_set(:@return_type, ComplexType.parse('Module<Psych>')) unless pin.nil?
251
+ end
252
+ pins.concat environ.pins
233
253
  end
234
254
 
235
255
  # @param spec [Gem::Specification]
@@ -327,22 +347,6 @@ module Solargraph
327
347
  spec
328
348
  end
329
349
 
330
- # @param path [String]
331
- # @param pins [Array<Pin::Base>]
332
- # @return [void]
333
- def stdlib_fill path, pins
334
- StdlibFills.get(path).each do |ovr|
335
- pin = pins.select { |p| p.path == ovr.name }.first
336
- next if pin.nil?
337
- (ovr.tags.map(&:tag_name) + ovr.delete).uniq.each do |tag|
338
- pin.docstring.delete_tags tag.to_sym
339
- end
340
- ovr.tags.each do |tag|
341
- pin.docstring.add_tag(tag)
342
- end
343
- end
344
- end
345
-
346
350
  def load_core_pins
347
351
  yd = CoreDocs.yardoc_file
348
352
  ser = File.join(File.dirname(yd), 'core.ser')
@@ -360,23 +364,7 @@ module Solargraph
360
364
  else
361
365
  read_core_and_save_cache(yd, ser)
362
366
  end
363
- # HACK: Add Errno exception classes
364
- errno = result.select{ |pin| pin.path == 'Errno' }.first
365
- Errno.constants.each do |const|
366
- result.push Solargraph::Pin::Namespace.new(type: :class, name: const.to_s, closure: errno)
367
- result.push Solargraph::Pin::Reference::Superclass.new(closure: result.last, name: 'SystemCallError')
368
- end
369
- CoreFills::OVERRIDES.each do |ovr|
370
- pin = result.select { |p| p.path == ovr.name }.first
371
- next if pin.nil?
372
- (ovr.tags.map(&:tag_name) + ovr.delete).uniq.each do |tag|
373
- pin.docstring.delete_tags tag.to_sym
374
- end
375
- ovr.tags.each do |tag|
376
- pin.docstring.add_tag(tag)
377
- end
378
- end
379
- result
367
+ ApiMap::Store.new(result + CoreFills::ALL).pins.reject { |pin| pin.is_a?(Pin::Reference::Override) }
380
368
  end
381
369
 
382
370
  def read_core_and_save_cache yd, ser
@@ -384,7 +372,7 @@ module Solargraph
384
372
  load_yardoc yd
385
373
  result.concat Mapper.new(YARD::Registry.all).map
386
374
  # HACK: Assume core methods with a single `args` parameter accept restarg
387
- result.select { |pin| pin.is_a?(Solargraph::Pin::BaseMethod )}.each do |pin|
375
+ result.select { |pin| pin.is_a?(Solargraph::Pin::Method )}.each do |pin|
388
376
  if pin.parameters.length == 1 && pin.parameters.first.name == 'args' && pin.parameters.first.decl == :arg
389
377
  # @todo Smelly instance variable access
390
378
  pin.parameters.first.instance_variable_set(:@decl, :restarg)
@@ -403,7 +391,7 @@ module Solargraph
403
391
 
404
392
  def load_stdlib_pins base
405
393
  ser = File.join(File.dirname(CoreDocs.yardoc_stdlib_file), "#{base}.ser")
406
- if File.file?(ser)
394
+ result = if File.file?(ser)
407
395
  Solargraph.logger.info "Loading #{base} stdlib from cache"
408
396
  file = File.open(ser, 'rb')
409
397
  dump = file.read
@@ -418,6 +406,11 @@ module Solargraph
418
406
  else
419
407
  read_stdlib_and_save_cache(base, ser)
420
408
  end
409
+ fills = StdlibFills.get(base)
410
+ unless fills.empty?
411
+ result = ApiMap::Store.new(result + fills).pins.reject { |pin| pin.is_a?(Pin::Reference::Override) }
412
+ end
413
+ result
421
414
  end
422
415
 
423
416
  def read_stdlib_and_save_cache base, ser
@@ -0,0 +1,185 @@
1
+ module Solargraph
2
+ class YardMap
3
+ module CoreFills
4
+ Override = Pin::Reference::Override
5
+
6
+ KEYWORDS = [
7
+ '__ENCODING__', '__LINE__', '__FILE__', 'BEGIN', 'END', 'alias', 'and',
8
+ 'begin', 'break', 'case', 'class', 'def', 'defined?', 'do', 'else',
9
+ 'elsif', 'end', 'ensure', 'false', 'for', 'if', 'in', 'module', 'next',
10
+ 'nil', 'not', 'or', 'redo', 'rescue', 'retry', 'return', 'self', 'super',
11
+ 'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
12
+ ].map { |k| Pin::Keyword.new(k) }
13
+
14
+ methods_with_yieldparam_subtypes = %w[
15
+ Array#each Array#map Array#map! Array#any? Array#all? Array#index
16
+ Array#keep_if Array#delete_if
17
+ Enumerable#each_entry Enumerable#map Enumerable#any? Enumerable#all?
18
+ Enumerable#select Enumerable#reject
19
+ Set#each
20
+ ]
21
+
22
+ OVERRIDES = [
23
+ Override.method_return('Array#concat', 'Array'),
24
+ Override.method_return('Array#keep_if', 'self'),
25
+ Override.method_return('Array#delete_if', 'self'),
26
+ Override.from_comment('Array#map', %(
27
+ @overload map(&block)
28
+ @return [Array]
29
+ @overload map()
30
+ @return [Enumerator]
31
+ )),
32
+ Override.from_comment('Array#reject', %(
33
+ @overload reject(&block)
34
+ @return [self]
35
+ @overload reject()
36
+ @return [Enumerator]
37
+ )),
38
+ Override.method_return('Array#reverse', 'self', delete: ['overload']),
39
+ Override.from_comment('Array#select', %(
40
+ @overload select(&block)
41
+ @return [self]
42
+ @overload select()
43
+ @return [Enumerator]
44
+ )),
45
+ Override.from_comment('Array#[]', %(
46
+ @overload [](range)
47
+ @param range [Range]
48
+ @return [self]
49
+ @overload [](num1, num2)
50
+ @param num1 [Integer]
51
+ @param num2 [Integer]
52
+ @return [self]
53
+ @overload [](num)
54
+ @param num [Integer]
55
+ @return_single_parameter
56
+ @return_single_parameter
57
+ )),
58
+ Override.from_comment('Array#first', %(
59
+ @overload first(num)
60
+ @param num [Integer]
61
+ @return [self]
62
+ @return_single_parameter
63
+ )),
64
+ Override.from_comment('Array#last', %(
65
+ @overload last(num)
66
+ @param num [Integer]
67
+ @return [self]
68
+ @return_single_parameter
69
+ )),
70
+ Override.method_return('Array#map', 'Array'),
71
+ Override.method_return('Array#uniq', 'self'),
72
+ Override.method_return('Array#zip', 'Array, nil'),
73
+
74
+ Override.from_comment('BasicObject#==', %(
75
+ @param other [BasicObject]
76
+ @return [Boolean]
77
+ )),
78
+ Override.method_return('BasicObject#initialize', 'void'),
79
+
80
+ Override.method_return('Class#new', 'self'),
81
+ Override.method_return('Class.new', 'Class<Object>'),
82
+ Override.method_return('Class#allocate', 'self'),
83
+ Override.method_return('Class.allocate', 'Class<Object>'),
84
+
85
+ Override.method_return('Enumerable#select', 'self'),
86
+
87
+ Override.method_return('File.absolute_path', 'String'),
88
+ Override.method_return('File.basename', 'String'),
89
+ Override.method_return('File.dirname', 'String'),
90
+ Override.method_return('File.extname', 'String'),
91
+ Override.method_return('File.join', 'String'),
92
+
93
+ Override.from_comment('Float#+', %(
94
+ @param y [Numeric]
95
+ @return [Numeric]
96
+ )),
97
+
98
+ Override.from_comment('Hash#[]', %(
99
+ @return_value_parameter
100
+ )),
101
+
102
+ # @todo This override isn't robust enough. It needs to allow for
103
+ # parameterized Hash types, e.g., [Hash{Symbol => String}].
104
+ Override.from_comment('Hash#[]=', %(
105
+ @param_tuple
106
+ )),
107
+
108
+ Override.method_return('Hash#merge', 'Hash'),
109
+
110
+ Override.from_comment('Integer#+', %(
111
+ @param y [Numeric]
112
+ @return [Numeric]
113
+ )),
114
+
115
+ Override.method_return('Kernel#puts', 'nil'),
116
+
117
+ Override.from_comment('Numeric#+', %(
118
+ @param y [Numeric]
119
+ @return [Numeric]
120
+ )),
121
+
122
+ Override.method_return('Object#!', 'Boolean'),
123
+ Override.method_return('Object#clone', 'self', delete: [:overload]),
124
+ Override.method_return('Object#dup', 'self', delete: [:overload]),
125
+ Override.method_return('Object#freeze', 'self', delete: [:overload]),
126
+ Override.method_return('Object#inspect', 'String'),
127
+ Override.method_return('Object#taint', 'self'),
128
+ Override.method_return('Object#to_s', 'String'),
129
+ Override.method_return('Object#untaint', 'self'),
130
+ Override.from_comment('Object#tap', %(
131
+ @return [self]
132
+ @yieldparam [self]
133
+ )),
134
+
135
+ Override.from_comment('STDERR', %(
136
+ @type [IO]
137
+ )),
138
+
139
+ Override.from_comment('STDIN', %(
140
+ @type [IO]
141
+ )),
142
+
143
+ Override.from_comment('STDOUT', %(
144
+ @type [IO]
145
+ )),
146
+
147
+ Override.method_return('String#freeze', 'self'),
148
+ Override.method_return('String#split', 'Array<String>'),
149
+ Override.method_return('String#lines', 'Array<String>'),
150
+ Override.from_comment('String#each_line', %(
151
+ @yieldparam [String]
152
+ )),
153
+ Override.from_comment('String.new', %(
154
+ @overload new(*)
155
+ @return [self]
156
+ ))
157
+ ].concat(
158
+ methods_with_yieldparam_subtypes.map do |path|
159
+ Override.from_comment(path, %(
160
+ @yieldparam_single_parameter
161
+ ))
162
+ end
163
+ )
164
+
165
+ PINS = [
166
+ Pin::Reference::Superclass.new(closure: Pin::Namespace.new(name: 'File'), name: 'IO'),
167
+ Pin::Reference::Superclass.new(closure: Pin::Namespace.new(name: 'Integer'), name: 'Numeric'),
168
+ Pin::Reference::Superclass.new(closure: Pin::Namespace.new(name: 'Float'), name: 'Numeric')
169
+ ].concat(
170
+ # HACK: Add Errno exception classes
171
+ begin
172
+ errno = Solargraph::Pin::Namespace.new(name: 'Errno')
173
+ result = []
174
+ Errno.constants.each do |const|
175
+ result.push Solargraph::Pin::Namespace.new(type: :class, name: const.to_s, closure: errno)
176
+ result.push Solargraph::Pin::Reference::Superclass.new(closure: result.last, name: 'SystemCallError')
177
+ end
178
+ result
179
+ end
180
+ )
181
+
182
+ ALL = KEYWORDS + PINS + OVERRIDES
183
+ end
184
+ end
185
+ end
@@ -0,0 +1,16 @@
1
+ module Solargraph
2
+ class YardMap
3
+ module Helpers
4
+ module_function
5
+
6
+ # @param code_object [YARD::CodeObjects::Base]
7
+ # @param spec [Gem::Specification]
8
+ # @return [Solargraph::Location, nil]
9
+ def object_location code_object, spec
10
+ return nil if spec.nil? || code_object.nil? || code_object.file.nil? || code_object.line.nil?
11
+ file = File.join(spec.full_gem_path, code_object.file)
12
+ Solargraph::Location.new(file, Solargraph::Range.from_to(code_object.line - 1, 0, code_object.line - 1, 0))
13
+ end
14
+ end
15
+ end
16
+ end
@@ -3,6 +3,10 @@
3
3
  module Solargraph
4
4
  class YardMap
5
5
  class Mapper
6
+ autoload :ToMethod, 'solargraph/yard_map/mapper/to_method'
7
+ autoload :ToNamespace, 'solargraph/yard_map/mapper/to_namespace'
8
+ autoload :ToConstant, 'solargraph/yard_map/mapper/to_constant'
9
+
6
10
  # @param code_objects [Array<YARD::CodeObjects::Base>]
7
11
  # @param spec [Gem::Specification]
8
12
  def initialize code_objects, spec = nil
@@ -23,22 +27,24 @@ module Solargraph
23
27
  @pins
24
28
  end
25
29
 
30
+ private
31
+
26
32
  # @param code_object [YARD::CodeObjects::Base]
27
33
  # @return [Array<Pin::Base>]
28
34
  def generate_pins code_object
29
35
  result = []
30
36
  if code_object.is_a?(YARD::CodeObjects::NamespaceObject)
31
- nspin = Solargraph::Pin::YardPin::Namespace.new(code_object, @spec, @namespace_pins[code_object.namespace.to_s])
37
+ nspin = ToNamespace.make(code_object, @spec, @namespace_pins[code_object.namespace.to_s])
32
38
  @namespace_pins[code_object.path] = nspin
33
39
  result.push nspin
34
40
  if code_object.is_a?(YARD::CodeObjects::ClassObject) and !code_object.superclass.nil?
35
41
  # This method of superclass detection is a bit of a hack. If
36
42
  # the superclass is a Proxy, it is assumed to be undefined in its
37
43
  # yardoc and converted to a fully qualified namespace.
38
- if code_object.superclass.is_a?(YARD::CodeObjects::Proxy)
39
- superclass = "::#{code_object.superclass}"
44
+ superclass = if code_object.superclass.is_a?(YARD::CodeObjects::Proxy)
45
+ "::#{code_object.superclass}"
40
46
  else
41
- superclass = code_object.superclass.to_s
47
+ code_object.superclass.to_s
42
48
  end
43
49
  result.push Solargraph::Pin::Reference::Superclass.new(name: superclass, closure: nspin)
44
50
  end
@@ -55,14 +61,14 @@ module Solargraph
55
61
  closure = @namespace_pins[code_object.namespace.to_s]
56
62
  if code_object.name == :initialize && code_object.scope == :instance
57
63
  # @todo Check the visibility of <Class>.new
58
- result.push Solargraph::Pin::YardPin::Method.new(code_object, 'new', :class, :public, closure, @spec)
59
- result.push Solargraph::Pin::YardPin::Method.new(code_object, 'initialize', :instance, :private, closure, @spec)
64
+ result.push ToMethod.make(code_object, 'new', :class, :public, closure, @spec)
65
+ result.push ToMethod.make(code_object, 'initialize', :instance, :private, closure, @spec)
60
66
  else
61
- result.push Solargraph::Pin::YardPin::Method.new(code_object, nil, nil, nil, closure, @spec)
67
+ result.push ToMethod.make(code_object, nil, nil, nil, closure, @spec)
62
68
  end
63
69
  elsif code_object.is_a?(YARD::CodeObjects::ConstantObject)
64
70
  closure = @namespace_pins[code_object.namespace]
65
- result.push Solargraph::Pin::YardPin::Constant.new(code_object, closure, @spec)
71
+ result.push ToConstant.make(code_object, closure, @spec)
66
72
  end
67
73
  result
68
74
  end