solargraph 0.39.17 → 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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +2 -7
  3. data/CHANGELOG.md +984 -0
  4. data/SPONSORS.md +1 -0
  5. data/lib/solargraph.rb +2 -4
  6. data/lib/solargraph/api_map.rb +61 -64
  7. data/lib/solargraph/api_map/cache.rb +2 -2
  8. data/lib/solargraph/api_map/store.rb +3 -7
  9. data/lib/solargraph/{bundle.rb → bench.rb} +6 -2
  10. data/lib/solargraph/compat.rb +14 -0
  11. data/lib/solargraph/convention.rb +13 -4
  12. data/lib/solargraph/convention/base.rb +16 -8
  13. data/lib/solargraph/convention/gemfile.rb +2 -5
  14. data/lib/solargraph/convention/gemspec.rb +3 -6
  15. data/lib/solargraph/convention/rspec.rb +3 -6
  16. data/lib/solargraph/environ.rb +11 -6
  17. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +6 -1
  18. data/lib/solargraph/language_server/message/text_document/definition.rb +1 -1
  19. data/lib/solargraph/library.rb +5 -5
  20. data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +1 -1
  21. data/lib/solargraph/parser/legacy/node_processors/send_node.rb +34 -22
  22. data/lib/solargraph/parser/node_processor/base.rb +3 -0
  23. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +1 -1
  24. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +1 -1
  25. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +38 -28
  26. data/lib/solargraph/pin.rb +0 -3
  27. data/lib/solargraph/pin/common.rb +1 -1
  28. data/lib/solargraph/pin/conversions.rb +1 -1
  29. data/lib/solargraph/pin/documenting.rb +3 -9
  30. data/lib/solargraph/pin/method.rb +141 -7
  31. data/lib/solargraph/pin/method_alias.rb +1 -1
  32. data/lib/solargraph/position.rb +2 -14
  33. data/lib/solargraph/source.rb +10 -6
  34. data/lib/solargraph/source/chain.rb +3 -3
  35. data/lib/solargraph/source_map.rb +4 -1
  36. data/lib/solargraph/source_map/clip.rb +3 -2
  37. data/lib/solargraph/source_map/mapper.rb +10 -6
  38. data/lib/solargraph/type_checker.rb +35 -39
  39. data/lib/solargraph/type_checker/param_def.rb +1 -1
  40. data/lib/solargraph/version.rb +1 -1
  41. data/lib/solargraph/yard_map.rb +38 -47
  42. data/lib/solargraph/yard_map/core_fills.rb +185 -0
  43. data/lib/solargraph/yard_map/helpers.rb +16 -0
  44. data/lib/solargraph/yard_map/mapper.rb +11 -5
  45. data/lib/solargraph/{pin/yard_pin/constant.rb → yard_map/mapper/to_constant.rb} +6 -6
  46. data/lib/solargraph/yard_map/mapper/to_method.rb +78 -0
  47. data/lib/solargraph/{pin/yard_pin/namespace.rb → yard_map/mapper/to_namespace.rb} +6 -6
  48. data/lib/solargraph/yard_map/rdoc_to_yard.rb +1 -1
  49. data/lib/solargraph/yard_map/stdlib_fills.rb +43 -0
  50. data/lib/solargraph/{pin/yard_pin/method.rb → yard_map/to_method.rb} +29 -30
  51. data/solargraph.gemspec +4 -4
  52. metadata +20 -34
  53. data/lib/solargraph/core_fills.rb +0 -164
  54. data/lib/solargraph/pin/attribute.rb +0 -49
  55. data/lib/solargraph/pin/base_method.rb +0 -149
  56. data/lib/solargraph/pin/yard_pin.rb +0 -12
  57. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +0 -20
  58. data/lib/solargraph/stdlib_fills.rb +0 -40
  59. data/travis-bundler.rb +0 -11
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ class YardMap
5
+ class Mapper
6
+ module ToMethod
7
+ extend YardMap::Helpers
8
+
9
+ def self.make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
10
+ closure ||= Solargraph::Pin::Namespace.new(
11
+ name: code_object.namespace.to_s,
12
+ gates: [code_object.namespace.to_s]
13
+ )
14
+ location = object_location(code_object, spec)
15
+ comments = code_object.docstring ? code_object.docstring.all.to_s : ''
16
+ Pin::Method.new(
17
+ location: location,
18
+ closure: closure,
19
+ name: name || code_object.name.to_s,
20
+ comments: comments,
21
+ scope: scope || code_object.scope,
22
+ visibility: visibility || code_object.visibility,
23
+ parameters: get_parameters(code_object, location, comments),
24
+ explicit: code_object.is_explicit?
25
+ )
26
+ end
27
+
28
+ class << self
29
+ private
30
+
31
+ # @param code_object [YARD::CodeObjects::Base]
32
+ # @return [Array<Solargraph::Pin::Parameter>]
33
+ def get_parameters code_object, location, comments
34
+ return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
35
+ # HACK: Skip `nil` and `self` parameters that are sometimes emitted
36
+ # for methods defined in C
37
+ # See https://github.com/castwide/solargraph/issues/345
38
+ code_object.parameters.select { |a| a[0] && a[0] != 'self' }.map do |a|
39
+ Solargraph::Pin::Parameter.new(
40
+ location: location,
41
+ closure: self,
42
+ comments: comments,
43
+ name: arg_name(a),
44
+ presence: nil,
45
+ decl: arg_type(a),
46
+ asgn_code: a[1]
47
+ )
48
+ end
49
+ end
50
+
51
+ # @param a [Array]
52
+ # @return [String]
53
+ def arg_name a
54
+ a[0].gsub(/[^a-z0-9_]/i, '')
55
+ end
56
+
57
+ # @param a [Array]
58
+ # @return [::Symbol]
59
+ def arg_type a
60
+ if a[0].start_with?('**')
61
+ :kwrestarg
62
+ elsif a[0].start_with?('*')
63
+ :restarg
64
+ elsif a[0].start_with?('&')
65
+ :blockarg
66
+ elsif a[0].end_with?(':')
67
+ a[1] ? :kwoptarg : :kwarg
68
+ elsif a[1]
69
+ :optarg
70
+ else
71
+ :arg
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -1,18 +1,18 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- module Pin
5
- module YardPin
6
- class Namespace < Pin::Namespace
7
- include YardMixin
4
+ class YardMap
5
+ class Mapper
6
+ module ToNamespace
7
+ extend YardMap::Helpers
8
8
 
9
- def initialize code_object, spec, closure = nil
9
+ def self.make code_object, spec, closure = nil
10
10
  closure ||= Solargraph::Pin::Namespace.new(
11
11
  name: code_object.namespace.to_s,
12
12
  closure: Pin::ROOT_PIN,
13
13
  gates: [code_object.namespace.to_s]
14
14
  )
15
- super(
15
+ Pin::Namespace.new(
16
16
  location: object_location(code_object, spec),
17
17
  name: code_object.name.to_s,
18
18
  comments: code_object.docstring ? code_object.docstring.all.to_s : '',
@@ -63,7 +63,7 @@ module Solargraph
63
63
  name_hash[mod.full_name] = namepin
64
64
  # @param met [RDoc::AnyMethod]
65
65
  mod.each_method do |met|
66
- pin = Solargraph::SourceMap.load_string("def Object.tmp#{met.param_seq};end").first_pin('Object.tmp') || Solargraph::Pin::BaseMethod.new
66
+ pin = Solargraph::SourceMap.load_string("def Object.tmp#{met.param_seq};end").first_pin('Object.tmp') || Solargraph::Pin::Method.new
67
67
  pins.push Solargraph::Pin::Method.new(
68
68
  name: met.name,
69
69
  closure: namepin,
@@ -0,0 +1,43 @@
1
+ module Solargraph
2
+ class YardMap
3
+ module StdlibFills
4
+ Override = Pin::Reference::Override
5
+
6
+ LIBS = {
7
+ 'benchmark' => [
8
+ Override.method_return('Benchmark.measure', 'Benchmark::Tms')
9
+ ],
10
+
11
+ 'pathname' => [
12
+ Override.method_return('Pathname#join', 'Pathname'),
13
+ Override.method_return('Pathname#basename', 'Pathname'),
14
+ Override.method_return('Pathname#dirname', 'Pathname'),
15
+ Override.method_return('Pathname#cleanpath', 'Pathname'),
16
+ Override.method_return('Pathname#children', 'Array<Pathname>'),
17
+ Override.method_return('Pathname#entries', 'Array<Pathname>')
18
+ ],
19
+
20
+ 'set' => [
21
+ Override.method_return('Enumerable#to_set', 'Set'),
22
+ Override.method_return('Set#add', 'self'),
23
+ Override.method_return('Set#add?', 'self, nil'),
24
+ Override.method_return('Set#classify', 'Hash'),
25
+ Override.from_comment('Set#each', '@yieldparam_single_parameter'),
26
+ ],
27
+
28
+ 'tempfile' => [
29
+ Override.from_comment('Tempfile.open', %(
30
+ @yieldparam [Tempfile]
31
+ @return [Tempfile]
32
+ ))
33
+ ]
34
+ }.freeze
35
+
36
+ # @param path [String]
37
+ # @return [Array<Pin::Reference::Override>]
38
+ def self.get path
39
+ LIBS[path] || []
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,39 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- module Pin
5
- module YardPin
6
- class Method < Pin::Method
7
- include YardMixin
8
-
9
- # @param code_object [YARD::CodeObjects::Base]
10
- # @param name [String, nil]
11
- # @param scope [Symbol, nil]
12
- # @param visibility [Symbol, nil]
13
- # @param closure [Solargraph::Pin::Closure, nil]
14
- # @param spec [Gem::Specification]
15
- def initialize code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
16
- closure ||= Solargraph::Pin::Namespace.new(
17
- name: code_object.namespace.to_s,
18
- gates: [code_object.namespace.to_s]
19
- )
20
- super(
21
- location: object_location(code_object, spec),
22
- closure: closure,
23
- name: name || code_object.name.to_s,
24
- comments: code_object.docstring ? code_object.docstring.all.to_s : '',
25
- scope: scope || code_object.scope,
26
- visibility: visibility || code_object.visibility,
27
- parameters: get_parameters(code_object),
28
- explicit: code_object.is_explicit?
29
- )
30
- end
31
-
32
- private
4
+ class YardMap
5
+ class ToMethod
6
+ module InnerMethods
7
+ module_function
33
8
 
34
9
  # @param code_object [YARD::CodeObjects::Base]
35
10
  # @return [Array<Solargraph::Pin::Parameter>]
36
- def get_parameters code_object
11
+ def get_parameters code_object, location, comments
37
12
  return [] unless code_object.is_a?(YARD::CodeObjects::MethodObject)
38
13
  # HACK: Skip `nil` and `self` parameters that are sometimes emitted
39
14
  # for methods defined in C
@@ -75,6 +50,30 @@ module Solargraph
75
50
  end
76
51
  end
77
52
  end
53
+ private_constant :InnerMethods
54
+
55
+ # include YardMixin
56
+ # extend YardMixin
57
+ extend Helpers
58
+
59
+ def make code_object, name = nil, scope = nil, visibility = nil, closure = nil, spec = nil
60
+ closure ||= Solargraph::Pin::Namespace.new(
61
+ name: code_object.namespace.to_s,
62
+ gates: [code_object.namespace.to_s]
63
+ )
64
+ location = object_location(code_object, spec)
65
+ comments = code_object.docstring ? code_object.docstring.all.to_s : ''
66
+ Pin::Method.new(
67
+ location: location,
68
+ closure: closure,
69
+ name: name || code_object.name.to_s,
70
+ comments: comments,
71
+ scope: scope || code_object.scope,
72
+ visibility: visibility || code_object.visibility,
73
+ parameters: InnerMethods.get_parameters(code_object, location, comments),
74
+ explicit: code_object.is_explicit?
75
+ )
76
+ end
78
77
  end
79
78
  end
80
79
  end
@@ -17,18 +17,18 @@ Gem::Specification.new do |s|
17
17
  s.license = 'MIT'
18
18
  s.executables = ['solargraph']
19
19
 
20
- s.required_ruby_version = '>= 2.1'
20
+ s.required_ruby_version = '>= 2.4'
21
21
 
22
22
  s.add_runtime_dependency 'backport', '~> 1.1'
23
23
  s.add_runtime_dependency 'benchmark'
24
24
  s.add_runtime_dependency 'bundler', '>= 1.17.2'
25
25
  s.add_runtime_dependency 'e2mmap'
26
26
  s.add_runtime_dependency 'jaro_winkler', '~> 1.5'
27
- s.add_runtime_dependency 'maruku', '~> 0.7', '>= 0.7.3'
28
- s.add_runtime_dependency 'nokogiri', '~> 1.9', '>= 1.9.1'
27
+ s.add_runtime_dependency 'kramdown', '~> 2.3'
28
+ s.add_runtime_dependency 'kramdown-parser-gfm', '~> 1.1'
29
29
  s.add_runtime_dependency 'parser', '~> 2.3'
30
30
  s.add_runtime_dependency 'reverse_markdown', '>= 1.0.5', '< 3'
31
- s.add_runtime_dependency 'rubocop', '~> 0.52'
31
+ s.add_runtime_dependency 'rubocop', '>= 0.52'
32
32
  s.add_runtime_dependency 'thor', '~> 1.0'
33
33
  s.add_runtime_dependency 'tilt', '~> 2.0'
34
34
  s.add_runtime_dependency 'yard', '~> 0.9', '>= 0.9.24'
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.39.17
4
+ version: 0.40.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: 2020-09-28 00:00:00.000000000 Z
11
+ date: 2020-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport
@@ -81,45 +81,33 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '1.5'
83
83
  - !ruby/object:Gem::Dependency
84
- name: maruku
84
+ name: kramdown
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0.7'
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- version: 0.7.3
89
+ version: '2.3'
93
90
  type: :runtime
94
91
  prerelease: false
95
92
  version_requirements: !ruby/object:Gem::Requirement
96
93
  requirements:
97
94
  - - "~>"
98
95
  - !ruby/object:Gem::Version
99
- version: '0.7'
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: 0.7.3
96
+ version: '2.3'
103
97
  - !ruby/object:Gem::Dependency
104
- name: nokogiri
98
+ name: kramdown-parser-gfm
105
99
  requirement: !ruby/object:Gem::Requirement
106
100
  requirements:
107
101
  - - "~>"
108
102
  - !ruby/object:Gem::Version
109
- version: '1.9'
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- version: 1.9.1
103
+ version: '1.1'
113
104
  type: :runtime
114
105
  prerelease: false
115
106
  version_requirements: !ruby/object:Gem::Requirement
116
107
  requirements:
117
108
  - - "~>"
118
109
  - !ruby/object:Gem::Version
119
- version: '1.9'
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: 1.9.1
110
+ version: '1.1'
123
111
  - !ruby/object:Gem::Dependency
124
112
  name: parser
125
113
  requirement: !ruby/object:Gem::Requirement
@@ -158,14 +146,14 @@ dependencies:
158
146
  name: rubocop
159
147
  requirement: !ruby/object:Gem::Requirement
160
148
  requirements:
161
- - - "~>"
149
+ - - ">="
162
150
  - !ruby/object:Gem::Version
163
151
  version: '0.52'
164
152
  type: :runtime
165
153
  prerelease: false
166
154
  version_requirements: !ruby/object:Gem::Requirement
167
155
  requirements:
168
- - - "~>"
156
+ - - ">="
169
157
  - !ruby/object:Gem::Version
170
158
  version: '0.52'
171
159
  - !ruby/object:Gem::Dependency
@@ -303,6 +291,7 @@ files:
303
291
  - ".rspec"
304
292
  - ".travis.yml"
305
293
  - ".yardopts"
294
+ - CHANGELOG.md
306
295
  - Gemfile
307
296
  - LICENSE
308
297
  - README.md
@@ -316,7 +305,7 @@ files:
316
305
  - lib/solargraph/api_map/cache.rb
317
306
  - lib/solargraph/api_map/source_to_yard.rb
318
307
  - lib/solargraph/api_map/store.rb
319
- - lib/solargraph/bundle.rb
308
+ - lib/solargraph/bench.rb
320
309
  - lib/solargraph/compat.rb
321
310
  - lib/solargraph/complex_type.rb
322
311
  - lib/solargraph/complex_type/type_methods.rb
@@ -330,7 +319,6 @@ files:
330
319
  - lib/solargraph/converters/dl.rb
331
320
  - lib/solargraph/converters/dt.rb
332
321
  - lib/solargraph/converters/misc.rb
333
- - lib/solargraph/core_fills.rb
334
322
  - lib/solargraph/diagnostics.rb
335
323
  - lib/solargraph/diagnostics/base.rb
336
324
  - lib/solargraph/diagnostics/require_not_found.rb
@@ -460,9 +448,7 @@ files:
460
448
  - lib/solargraph/parser/rubyvm/node_processors/sym_node.rb
461
449
  - lib/solargraph/parser/snippet.rb
462
450
  - lib/solargraph/pin.rb
463
- - lib/solargraph/pin/attribute.rb
464
451
  - lib/solargraph/pin/base.rb
465
- - lib/solargraph/pin/base_method.rb
466
452
  - lib/solargraph/pin/base_variable.rb
467
453
  - lib/solargraph/pin/block.rb
468
454
  - lib/solargraph/pin/class_variable.rb
@@ -492,11 +478,6 @@ files:
492
478
  - lib/solargraph/pin/reference/superclass.rb
493
479
  - lib/solargraph/pin/singleton.rb
494
480
  - lib/solargraph/pin/symbol.rb
495
- - lib/solargraph/pin/yard_pin.rb
496
- - lib/solargraph/pin/yard_pin/constant.rb
497
- - lib/solargraph/pin/yard_pin/method.rb
498
- - lib/solargraph/pin/yard_pin/namespace.rb
499
- - lib/solargraph/pin/yard_pin/yard_mixin.rb
500
481
  - lib/solargraph/position.rb
501
482
  - lib/solargraph/range.rb
502
483
  - lib/solargraph/server_methods.rb
@@ -524,7 +505,6 @@ files:
524
505
  - lib/solargraph/source_map/clip.rb
525
506
  - lib/solargraph/source_map/completion.rb
526
507
  - lib/solargraph/source_map/mapper.rb
527
- - lib/solargraph/stdlib_fills.rb
528
508
  - lib/solargraph/type_checker.rb
529
509
  - lib/solargraph/type_checker/checks.rb
530
510
  - lib/solargraph/type_checker/param_def.rb
@@ -543,12 +523,18 @@ files:
543
523
  - lib/solargraph/yard_map.rb
544
524
  - lib/solargraph/yard_map/cache.rb
545
525
  - lib/solargraph/yard_map/core_docs.rb
526
+ - lib/solargraph/yard_map/core_fills.rb
546
527
  - lib/solargraph/yard_map/core_gen.rb
528
+ - lib/solargraph/yard_map/helpers.rb
547
529
  - lib/solargraph/yard_map/mapper.rb
530
+ - lib/solargraph/yard_map/mapper/to_constant.rb
531
+ - lib/solargraph/yard_map/mapper/to_method.rb
532
+ - lib/solargraph/yard_map/mapper/to_namespace.rb
548
533
  - lib/solargraph/yard_map/rdoc_to_yard.rb
534
+ - lib/solargraph/yard_map/stdlib_fills.rb
535
+ - lib/solargraph/yard_map/to_method.rb
549
536
  - lib/yard-solargraph.rb
550
537
  - solargraph.gemspec
551
- - travis-bundler.rb
552
538
  - yardoc/2.2.2.tar.gz
553
539
  homepage: http://solargraph.org
554
540
  licenses:
@@ -562,7 +548,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
562
548
  requirements:
563
549
  - - ">="
564
550
  - !ruby/object:Gem::Version
565
- version: '2.1'
551
+ version: '2.4'
566
552
  required_rubygems_version: !ruby/object:Gem::Requirement
567
553
  requirements:
568
554
  - - ">="
@@ -1,164 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- # Overrides for the Ruby core.
5
- #
6
- # The YardMap uses this module to add type information to core methods.
7
- #
8
- module CoreFills
9
- Override = Pin::Reference::Override
10
-
11
- KEYWORDS = [
12
- '__ENCODING__', '__LINE__', '__FILE__', 'BEGIN', 'END', 'alias', 'and',
13
- 'begin', 'break', 'case', 'class', 'def', 'defined?', 'do', 'else',
14
- 'elsif', 'end', 'ensure', 'false', 'for', 'if', 'in', 'module', 'next',
15
- 'nil', 'not', 'or', 'redo', 'rescue', 'retry', 'return', 'self', 'super',
16
- 'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
17
- ].freeze
18
-
19
- methods_with_yieldparam_subtypes = %w[
20
- Array#each Array#map Array#map! Array#any? Array#all? Array#index
21
- Array#keep_if Array#delete_if
22
- Enumerable#each_entry Enumerable#map Enumerable#any? Enumerable#all?
23
- Enumerable#select Enumerable#reject
24
- Set#each
25
- ]
26
-
27
- OVERRIDES = [
28
- Override.method_return('Array#keep_if', 'self'),
29
- Override.method_return('Array#delete_if', 'self'),
30
- Override.from_comment('Array#reject', %(
31
- @overload reject(&block)
32
- @return [self]
33
- @overload reject()
34
- @return [Enumerator]
35
- )),
36
- Override.method_return('Array#reverse', 'self', delete: ['overload']),
37
- Override.from_comment('Array#select', %(
38
- @overload select(&block)
39
- @return [self]
40
- @overload select()
41
- @return [Enumerator]
42
- )),
43
- Override.from_comment('Array#[]', %(
44
- @overload [](range)
45
- @param range [Range]
46
- @return [self]
47
- @overload [](num1, num2)
48
- @param num1 [Integer]
49
- @param num2 [Integer]
50
- @return [self]
51
- @overload [](num)
52
- @param num [Integer]
53
- @return_single_parameter
54
- @return_single_parameter
55
- )),
56
- Override.method_return('Array#concat', 'Array'),
57
- Override.from_comment('Array#first', %(
58
- @overload first(num)
59
- @param num [Integer]
60
- @return [self]
61
- @return_single_parameter
62
- )),
63
- Override.from_comment('Array#last', %(
64
- @overload last(num)
65
- @param num [Integer]
66
- @return [self]
67
- @return_single_parameter
68
- )),
69
- Override.method_return('Array#map', 'Array'),
70
- Override.method_return('Array#uniq', 'self'),
71
- Override.method_return('Array#zip', 'Array, nil'),
72
-
73
- Override.from_comment('BasicObject#==', %(
74
- @param other [BasicObject]
75
- @return [Boolean]
76
- )),
77
- Override.method_return('BasicObject#initialize', 'void'),
78
-
79
- Override.method_return('Class#new', 'self'),
80
- Override.method_return('Class.new', 'Class<Object>'),
81
- Override.method_return('Class#allocate', 'self'),
82
- Override.method_return('Class.allocate', 'Class<Object>'),
83
-
84
- Override.method_return('Enumerable#select', 'self'),
85
-
86
- Override.method_return('File.absolute_path', 'String'),
87
- Override.method_return('File.basename', 'String'),
88
- Override.method_return('File.dirname', 'String'),
89
- Override.method_return('File.extname', 'String'),
90
- Override.method_return('File.join', 'String'),
91
-
92
- Override.from_comment('Float#+', %(
93
- @param y [Numeric]
94
- @return [Numeric]
95
- )),
96
-
97
- Override.from_comment('Hash#[]', %(
98
- @return_value_parameter
99
- )),
100
-
101
- # @todo This override isn't robust enough. It needs to allow for
102
- # parameterized Hash types, e.g., [Hash{Symbol => String}].
103
- Override.from_comment('Hash#[]=', %(
104
- @param_tuple
105
- )),
106
-
107
- Override.method_return('Hash#merge', 'Hash'),
108
-
109
- Override.from_comment('Integer#+', %(
110
- @param y [Numeric]
111
- @return [Numeric]
112
- )),
113
-
114
- Override.method_return('Kernel#puts', 'nil'),
115
-
116
- Override.from_comment('Numeric#+', %(
117
- @param y [Numeric]
118
- @return [Numeric]
119
- )),
120
-
121
- Override.method_return('Object#!', 'Boolean'),
122
- Override.method_return('Object#clone', 'self', delete: [:overload]),
123
- Override.method_return('Object#dup', 'self', delete: [:overload]),
124
- Override.method_return('Object#freeze', 'self', delete: [:overload]),
125
- Override.method_return('Object#inspect', 'String'),
126
- Override.method_return('Object#taint', 'self'),
127
- Override.method_return('Object#to_s', 'String'),
128
- Override.method_return('Object#untaint', 'self'),
129
- Override.from_comment('Object#tap', %(
130
- @return [self]
131
- @yieldparam [self]
132
- )),
133
-
134
- Override.from_comment('STDERR', %(
135
- @type [IO]
136
- )),
137
-
138
- Override.from_comment('STDIN', %(
139
- @type [IO]
140
- )),
141
-
142
- Override.from_comment('STDOUT', %(
143
- @type [IO]
144
- )),
145
-
146
- Override.method_return('String#freeze', 'self'),
147
- Override.method_return('String#split', 'Array<String>'),
148
- Override.method_return('String#lines', 'Array<String>'),
149
- Override.from_comment('String#each_line', %(
150
- @yieldparam [String]
151
- )),
152
- Override.from_comment('String.new', %(
153
- @overload new(*)
154
- @return [self]
155
- ))
156
- ].concat(
157
- methods_with_yieldparam_subtypes.map do |path|
158
- Override.from_comment(path, %(
159
- @yieldparam_single_parameter
160
- ))
161
- end
162
- )
163
- end
164
- end