typeprof 0.9.2 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (170) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -2
  3. data/lib/typeprof/analyzer.rb +82 -59
  4. data/lib/typeprof/block.rb +34 -0
  5. data/lib/typeprof/builtin.rb +169 -64
  6. data/lib/typeprof/cli.rb +2 -0
  7. data/lib/typeprof/config.rb +13 -1
  8. data/lib/typeprof/export.rb +114 -69
  9. data/lib/typeprof/import.rb +50 -28
  10. data/lib/typeprof/iseq.rb +23 -4
  11. data/lib/typeprof/method.rb +29 -7
  12. data/lib/typeprof/type.rb +41 -13
  13. data/lib/typeprof/version.rb +1 -1
  14. data/smoke/alias.rb +4 -4
  15. data/smoke/alias2.rb +3 -1
  16. data/smoke/arguments.rb +2 -2
  17. data/smoke/arguments2.rb +5 -5
  18. data/smoke/array-each.rb +1 -1
  19. data/smoke/array-each3.rb +1 -1
  20. data/smoke/array-map.rb +1 -1
  21. data/smoke/array-map2.rb +1 -1
  22. data/smoke/array-map3.rb +3 -3
  23. data/smoke/array-mul.rb +2 -2
  24. data/smoke/array-plus1.rb +1 -1
  25. data/smoke/array-plus2.rb +1 -0
  26. data/smoke/array-range-aref.rb +11 -11
  27. data/smoke/array-replace.rb +1 -1
  28. data/smoke/array1.rb +5 -5
  29. data/smoke/array10.rb +1 -1
  30. data/smoke/array11.rb +1 -1
  31. data/smoke/array12.rb +1 -1
  32. data/smoke/array14.rb +1 -1
  33. data/smoke/array15.rb +1 -1
  34. data/smoke/array2.rb +2 -2
  35. data/smoke/array3.rb +1 -0
  36. data/smoke/array6.rb +2 -1
  37. data/smoke/array8.rb +1 -1
  38. data/smoke/array9.rb +1 -1
  39. data/smoke/attr-module.rb +1 -0
  40. data/smoke/attr-vis.rb +43 -0
  41. data/smoke/attr-vis.rbs +4 -0
  42. data/smoke/attr.rb +2 -2
  43. data/smoke/block-ambiguous.rb +4 -4
  44. data/smoke/block-args1-rest.rb +6 -5
  45. data/smoke/block-args1.rb +5 -5
  46. data/smoke/block-args2-rest.rb +6 -5
  47. data/smoke/block-args2.rb +5 -5
  48. data/smoke/block-args3-rest.rb +7 -6
  49. data/smoke/block-args3.rb +6 -6
  50. data/smoke/block-blockarg.rb +3 -3
  51. data/smoke/block-kwarg.rb +4 -4
  52. data/smoke/block1.rb +1 -1
  53. data/smoke/block10.rb +1 -1
  54. data/smoke/block11.rb +2 -2
  55. data/smoke/block2.rb +1 -1
  56. data/smoke/block3.rb +1 -1
  57. data/smoke/block5.rb +1 -0
  58. data/smoke/block_given.rb +37 -0
  59. data/smoke/class_method.rb +2 -2
  60. data/smoke/class_method2.rb +2 -2
  61. data/smoke/constant2.rb +3 -2
  62. data/smoke/context-sensitive1.rb +1 -1
  63. data/smoke/cvar.rb +3 -2
  64. data/smoke/define_method.rb +2 -2
  65. data/smoke/define_method3.rb +1 -0
  66. data/smoke/define_method4.rb +1 -1
  67. data/smoke/define_method6.rb +19 -0
  68. data/smoke/demo.rb +6 -6
  69. data/smoke/demo1.rb +1 -1
  70. data/smoke/demo11.rb +1 -1
  71. data/smoke/demo2.rb +1 -1
  72. data/smoke/demo3.rb +1 -1
  73. data/smoke/demo4.rb +3 -3
  74. data/smoke/demo5.rb +1 -1
  75. data/smoke/demo6.rb +2 -1
  76. data/smoke/demo7.rb +1 -1
  77. data/smoke/demo9.rb +1 -0
  78. data/smoke/dummy-execution1.rb +1 -1
  79. data/smoke/dummy-execution2.rb +1 -1
  80. data/smoke/dummy_element.rb +1 -1
  81. data/smoke/ensure1.rb +1 -1
  82. data/smoke/enum_for.rb +15 -0
  83. data/smoke/enum_for2.rb +17 -0
  84. data/smoke/fib.rb +2 -2
  85. data/smoke/flow1.rb +1 -1
  86. data/smoke/flow10.rb +17 -0
  87. data/smoke/flow2.rb +1 -1
  88. data/smoke/flow3.rb +1 -1
  89. data/smoke/flow5.rb +1 -1
  90. data/smoke/flow6.rb +1 -1
  91. data/smoke/flow7.rb +1 -1
  92. data/smoke/flow8.rb +1 -1
  93. data/smoke/flow9.rb +1 -1
  94. data/smoke/function.rb +1 -1
  95. data/smoke/gvar.rb +1 -1
  96. data/smoke/gvar2.rb +1 -1
  97. data/smoke/hash-fetch.rb +3 -3
  98. data/smoke/inheritance.rb +4 -4
  99. data/smoke/initialize.rb +3 -2
  100. data/smoke/instance_eval.rb +1 -1
  101. data/smoke/int_times.rb +1 -1
  102. data/smoke/integer.rb +1 -1
  103. data/smoke/ivar.rb +3 -2
  104. data/smoke/ivar2.rb +2 -2
  105. data/smoke/ivar3.rb +2 -1
  106. data/smoke/ivar4.rb +1 -0
  107. data/smoke/kernel-class.rb +1 -1
  108. data/smoke/keyword4.rb +1 -1
  109. data/smoke/kwrest.rb +1 -0
  110. data/smoke/kwsplat1.rb +2 -2
  111. data/smoke/kwsplat2.rb +1 -1
  112. data/smoke/manual-rbs.rb +1 -0
  113. data/smoke/manual-rbs3.rb +1 -0
  114. data/smoke/method_missing.rb +4 -3
  115. data/smoke/module3.rb +1 -1
  116. data/smoke/module4.rb +1 -0
  117. data/smoke/module5.rb +1 -1
  118. data/smoke/module_function1.rb +3 -2
  119. data/smoke/module_function2.rb +3 -2
  120. data/smoke/multiple-include.rb +1 -0
  121. data/smoke/next1.rb +1 -1
  122. data/smoke/object-send1.rb +3 -3
  123. data/smoke/optional1.rb +1 -1
  124. data/smoke/optional2.rb +1 -1
  125. data/smoke/optional3.rb +1 -1
  126. data/smoke/parameterizedd-self.rb +2 -1
  127. data/smoke/prepend1.rb +33 -0
  128. data/smoke/prepend2.rb +10 -0
  129. data/smoke/prepend2.rbs +9 -0
  130. data/smoke/primitive_method.rb +19 -0
  131. data/smoke/proc4.rb +1 -1
  132. data/smoke/public.rb +4 -0
  133. data/smoke/range.rb +1 -1
  134. data/smoke/rbs-attr.rb +2 -2
  135. data/smoke/rbs-proc2.rb +1 -1
  136. data/smoke/rbs-proc3.rb +1 -1
  137. data/smoke/rbs-tyvar4.rb +3 -2
  138. data/smoke/rbs-tyvar6.rb +3 -3
  139. data/smoke/redo1.rb +1 -1
  140. data/smoke/redo2.rb +1 -1
  141. data/smoke/rescue1.rb +1 -1
  142. data/smoke/rescue2.rb +1 -1
  143. data/smoke/rescue3.rb +1 -0
  144. data/smoke/rescue4.rb +1 -1
  145. data/smoke/respond_to.rb +1 -1
  146. data/smoke/rest1.rb +2 -2
  147. data/smoke/rest2.rb +1 -1
  148. data/smoke/rest3.rb +6 -6
  149. data/smoke/rest4.rb +2 -2
  150. data/smoke/rest5.rb +1 -1
  151. data/smoke/rest6.rb +1 -1
  152. data/smoke/retry1.rb +2 -2
  153. data/smoke/simple.rb +1 -1
  154. data/smoke/step.rb +3 -3
  155. data/smoke/struct-keyword_init.rb +5 -15
  156. data/smoke/struct5.rb +1 -1
  157. data/smoke/struct6.rb +1 -1
  158. data/smoke/super1.rb +4 -4
  159. data/smoke/super3.rb +3 -2
  160. data/smoke/super4.rb +7 -5
  161. data/smoke/super5.rb +6 -4
  162. data/smoke/symbol-proc-attr.rb +1 -1
  163. data/smoke/tap1.rb +2 -2
  164. data/smoke/toplevel.rb +1 -1
  165. data/smoke/type_var.rb +3 -3
  166. data/smoke/user-demo.rb +1 -1
  167. data/smoke/wrong-extend.rb +1 -0
  168. data/smoke/wrong-include.rb +1 -0
  169. data/smoke/wrong-include2.rb +1 -1
  170. metadata +14 -3
@@ -207,7 +207,7 @@ module TypeProf
207
207
  end
208
208
 
209
209
  # find a pattern: getlocal, ..., send (is_a?, respond_to?), branch
210
- send_branch_list = []
210
+ getlocal_send_branch_list = []
211
211
  (@insns.size - 1).times do |i|
212
212
  insn, operands = @insns[i]
213
213
  if insn == :getlocal && operands[1] == 0
@@ -216,7 +216,7 @@ module TypeProf
216
216
  while @insns[j]
217
217
  sp = check_send_branch(sp, j)
218
218
  if sp == :match
219
- send_branch_list << [i, j]
219
+ getlocal_send_branch_list << [i, j]
220
220
  break
221
221
  end
222
222
  break if !sp
@@ -224,13 +224,32 @@ module TypeProf
224
224
  end
225
225
  end
226
226
  end
227
- send_branch_list.each do |i, j|
227
+ getlocal_send_branch_list.each do |i, j|
228
228
  next if (i + 1 .. j + 1).any? {|i| branch_targets[i] }
229
229
  _insn, getlocal_operands = @insns[i]
230
230
  _insn, send_operands = @insns[j]
231
231
  _insn, branch_operands = @insns[j + 1]
232
232
  @insns[j] = [:nop]
233
- @insns[j + 1] = [:send_branch, [getlocal_operands, send_operands, branch_operands]]
233
+ @insns[j + 1] = [:getlocal_send_branch, [getlocal_operands, send_operands, branch_operands]]
234
+ end
235
+
236
+ # find a pattern: send (block_given?), branch
237
+ send_branch_list = []
238
+ (@insns.size - 1).times do |i|
239
+ insn, _operands = @insns[i]
240
+ if insn == :send
241
+ insn, _operands = @insns[i + 1]
242
+ if insn == :branch
243
+ send_branch_list << i
244
+ end
245
+ end
246
+ end
247
+ send_branch_list.each do |i|
248
+ next if branch_targets[i + 1]
249
+ _insn, send_operands = @insns[i]
250
+ _insn, branch_operands = @insns[i + 1]
251
+ @insns[i] = [:nop]
252
+ @insns[i + 1] = [:send_branch, [send_operands, branch_operands]]
234
253
  end
235
254
 
236
255
  # find a pattern: getlocal, dup, branch
@@ -1,5 +1,7 @@
1
1
  module TypeProf
2
2
  class MethodDef
3
+ attr_accessor :pub_meth
4
+
3
5
  include Utils::StructuralEquality
4
6
  end
5
7
 
@@ -12,8 +14,6 @@ module TypeProf
12
14
  @pub_meth = pub_meth
13
15
  end
14
16
 
15
- attr_accessor :pub_meth
16
-
17
17
  def do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn)
18
18
  recv = recv.base_type while recv.respond_to?(:base_type)
19
19
  recv = scratch.globalize_type(recv, caller_env, caller_ep)
@@ -153,14 +153,34 @@ module TypeProf
153
153
  end
154
154
  end
155
155
 
156
+ class AliasMethodDef < MethodDef
157
+ def initialize(orig_mid, mdef, def_ep)
158
+ @orig_mid = orig_mid
159
+ @mdef = mdef
160
+ @pub_meth = mdef.pub_meth
161
+ @def_ep = def_ep
162
+ end
163
+
164
+ attr_reader :orig_mid, :mdef, :def_ep
165
+
166
+ def do_send(recv, _mid, aargs, caller_ep, caller_env, scratch, &ctn)
167
+ @mdef.do_send(recv, @orig_mid, aargs, caller_ep, caller_env, scratch, &ctn)
168
+ end
169
+
170
+ def do_check_send(msig, recv, mid, ep, scratch)
171
+ @mdef.do_check_send(msig, recv, mid, ep, scratch)
172
+ end
173
+ end
174
+
156
175
  class AttrMethodDef < MethodDef
157
- def initialize(ivar, kind, absolute_path)
176
+ def initialize(ivar, kind, pub_meth, def_ep)
158
177
  @ivar = ivar
159
178
  @kind = kind # :reader | :writer
160
- @absolute_path = absolute_path
179
+ @pub_meth = pub_meth
180
+ @def_ep = def_ep
161
181
  end
162
182
 
163
- attr_reader :ivar, :kind, :absolute_path
183
+ attr_reader :ivar, :kind, :def_ep
164
184
 
165
185
  def do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn)
166
186
  case @kind
@@ -185,9 +205,10 @@ module TypeProf
185
205
  end
186
206
 
187
207
  class TypedMethodDef < MethodDef
188
- def initialize(sig_rets, rbs_source) # sig_rets: Array<[MethodSignature, (return)Type]>
208
+ def initialize(sig_rets, rbs_source, pub_meth) # sig_rets: Array<[MethodSignature, (return)Type]>
189
209
  @sig_rets = sig_rets
190
210
  @rbs_source = rbs_source
211
+ @pub_meth = pub_meth
191
212
  end
192
213
 
193
214
  attr_reader :rbs_source
@@ -286,8 +307,9 @@ module TypeProf
286
307
  end
287
308
 
288
309
  class CustomMethodDef < MethodDef
289
- def initialize(impl)
310
+ def initialize(impl, pub_meth)
290
311
  @impl = impl
312
+ @pub_meth = pub_meth
291
313
  end
292
314
 
293
315
  def do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn)
@@ -781,31 +781,56 @@ module TypeProf
781
781
  class Signature
782
782
  include Utils::StructuralEquality
783
783
 
784
- def screen_name(scratch)
785
- str = @lead_tys.map {|ty| ty.screen_name(scratch) }
784
+ def screen_name(iseq, scratch)
785
+ fargs = @lead_tys.map {|ty| ty.screen_name(scratch) }
786
+ farg_names = []
787
+ farg_names += iseq.locals[0, @lead_tys.size] if iseq
786
788
  if @opt_tys
787
- str += @opt_tys.map {|ty| "?" + ty.screen_name(scratch) }
789
+ fargs += @opt_tys.map {|ty| "?" + ty.screen_name(scratch) }
790
+ farg_names += iseq.locals[@lead_tys.size, @opt_tys.size] if iseq
788
791
  end
789
792
  if @rest_ty
790
- str << ("*" + @rest_ty.screen_name(scratch))
793
+ fargs << ("*" + @rest_ty.screen_name(scratch))
794
+ if iseq
795
+ rest_index = iseq.fargs_format[:rest_start]
796
+ farg_names << (rest_index ? iseq.locals[rest_index] : nil)
797
+ end
791
798
  end
792
799
  if @post_tys
793
- str += @post_tys.map {|ty| ty.screen_name(scratch) }
800
+ fargs += @post_tys.map {|ty| ty.screen_name(scratch) }
801
+ if iseq
802
+ post_start = iseq.fargs_format[:post_start]
803
+ farg_names += (post_start ? iseq.locals[post_start, @post_tys.size] : [nil] * @post_tys.size)
804
+ end
794
805
  end
795
806
  if @kw_tys
796
807
  @kw_tys.each do |req, sym, ty|
797
808
  opt = req ? "" : "?"
798
- str << "#{ opt }#{ sym }: #{ ty.screen_name(scratch) }"
809
+ fargs << "#{ opt }#{ sym }: #{ ty.screen_name(scratch) }"
799
810
  end
800
811
  end
801
812
  if @kw_rest_ty
802
- str << ("**" + @kw_rest_ty.screen_name(scratch))
813
+ all_val_ty = Type.bot
814
+ @kw_rest_ty.each_child_global do |ty|
815
+ if ty == Type.any
816
+ val_ty = ty
817
+ else
818
+ # ty is a Type::Hash
819
+ _key_ty, val_ty = ty.elems.squash
820
+ end
821
+ all_val_ty = all_val_ty.union(val_ty)
822
+ end
823
+ fargs << ("**" + all_val_ty.screen_name(scratch))
824
+ end
825
+ if Config.options[:show_parameter_names]
826
+ farg_names = farg_names.map {|name| name == :type ? :type_ : name } # XXX: workaround of RBS parser bug
827
+ fargs = fargs.zip(farg_names).map {|farg, name| name ? "#{ farg } #{ name }" : farg }
803
828
  end
804
- str = str.empty? ? "" : "(#{ str.join(", ") })"
829
+ fargs = fargs.empty? ? "" : "(#{ fargs.join(", ") })"
805
830
 
806
831
  # Dirty Hack: Stop the iteration at most once!
807
832
  # I'll remove this hack if RBS removes the limitation of nesting blocks
808
- return str if caller_locations.any? {|frame| frame.label == "show_block_signature" }
833
+ return fargs if caller_locations.any? {|frame| frame.label == "show_block_signature" }
809
834
 
810
835
  optional = false
811
836
  blks = []
@@ -818,12 +843,12 @@ module TypeProf
818
843
  end
819
844
  end
820
845
  if blks != []
821
- str << " " if str != ""
822
- str << "?" if optional
823
- str << scratch.show_block_signature(blks)
846
+ fargs << " " if fargs != ""
847
+ fargs << "?" if optional
848
+ fargs << scratch.show_block_signature(blks)
824
849
  end
825
850
 
826
- str
851
+ fargs
827
852
  end
828
853
  end
829
854
 
@@ -838,6 +863,9 @@ module TypeProf
838
863
  @kw_tys = kw_tys
839
864
  kw_tys.each {|a| raise if a.size != 3 } if kw_tys
840
865
  @kw_rest_ty = kw_rest_ty
866
+ kw_rest_ty&.each_child_global do |ty|
867
+ raise ty.inspect if ty != Type.any && !ty.is_a?(Type::Hash)
868
+ end
841
869
  @blk_ty = blk_ty
842
870
  end
843
871
 
@@ -1,3 +1,3 @@
1
1
  module TypeProf
2
- VERSION = "0.9.2"
2
+ VERSION = "0.10.0"
3
3
  end
@@ -21,11 +21,11 @@ __END__
21
21
  # Classes
22
22
  class Object
23
23
  private
24
- def foo: (Integer) -> Integer
25
- def bar: (String) -> String
24
+ def foo: (Integer | String x) -> (Integer | String)
25
+ alias bar foo
26
26
  end
27
27
 
28
28
  class Test
29
- def baz: (Integer) -> Integer
30
- def qux: (String) -> String
29
+ def baz: (Integer | String x) -> (Integer | String)
30
+ alias qux baz
31
31
  end
@@ -15,5 +15,7 @@ class Foo
15
15
  @a: :x
16
16
  @b: :y
17
17
  @c: :z
18
- def initialize: (:x, :y, :z) -> [:x, :y, :z]
18
+
19
+ alias self.[] self.new
20
+ def initialize: (:x a, :y b, :z c) -> [:x, :y, :z]
19
21
  end
@@ -12,6 +12,6 @@ smoke/arguments.rb:6: [error] wrong number of arguments (given 2, expected 1)
12
12
  # Classes
13
13
  class Object
14
14
  private
15
- def foo: (untyped) -> nil
16
- def bar: (untyped) -> nil
15
+ def foo: (untyped x) -> nil
16
+ def bar: (untyped x) -> nil
17
17
  end
@@ -44,13 +44,13 @@ __END__
44
44
  class Object
45
45
  private
46
46
  def f1: -> nil
47
- def f2: (:x, :y, :z) -> nil
48
- def f3: (?String, ?String) -> nil
49
- def f4: (*:a | :b | :c) -> nil
50
- def f5: (:x, ?String, :z) -> nil
47
+ def f2: (:x x, :y y, :z z) -> nil
48
+ def f3: (?String x, ?String y) -> nil
49
+ def f4: (*:a | :b | :c r) -> nil
50
+ def f5: (:x x, ?String y, :z z) -> nil
51
51
  def f6: (k: :kk) -> nil
52
52
  def f7: (?k: Integer) -> nil
53
53
  def f8: (?k: String) -> nil
54
- def f9: (**{k: :kk}) -> nil
54
+ def f9: (**:kk) -> nil
55
55
  def f10: { (Integer) -> nil } -> nil
56
56
  end
@@ -11,5 +11,5 @@ __END__
11
11
  # Classes
12
12
  class Object
13
13
  private
14
- def log: ((:sym | Integer | String)?) -> nil
14
+ def log: ((:sym | Integer | String)? x) -> nil
15
15
  end
@@ -9,5 +9,5 @@ __END__
9
9
  # Classes
10
10
  class Object
11
11
  private
12
- def log: (bot) -> nil
12
+ def log: (bot x) -> nil
13
13
  end
@@ -8,5 +8,5 @@ __END__
8
8
  # Classes
9
9
  class Object
10
10
  private
11
- def foo: ([Integer, Integer, Integer]) -> Array[String]
11
+ def foo: ([Integer, Integer, Integer] a) -> Array[String]
12
12
  end
@@ -7,5 +7,5 @@ __END__
7
7
  # Classes
8
8
  class Object
9
9
  private
10
- def foo: ([Integer, Integer, Integer]) -> (Array[Integer | String])
10
+ def foo: ([Integer, Integer, Integer] a) -> (Array[Integer | String])
11
11
  end
@@ -17,7 +17,7 @@ __END__
17
17
  # Classes
18
18
  class Object
19
19
  private
20
- def map_test: ([Integer, Integer, Integer]) -> Array[String]
21
- def map_bang_test: ([Integer, Integer, Integer]) -> (Array[Integer | String])
22
- def map_bang_test_known_bug: ([Integer, Integer, Integer]) -> [Integer, Integer, Integer]
20
+ def map_test: ([Integer, Integer, Integer] a) -> Array[String]
21
+ def map_bang_test: ([Integer, Integer, Integer] a) -> (Array[Integer | String])
22
+ def map_bang_test_known_bug: ([Integer, Integer, Integer] a) -> [Integer, Integer, Integer]
23
23
  end
@@ -13,6 +13,6 @@ __END__
13
13
  # Classes
14
14
  class Object
15
15
  private
16
- def foo: ([Integer, Integer, Integer]) -> Array[Integer]
17
- def bar: ([Integer, Integer, Integer]) -> String
16
+ def foo: ([Integer, Integer, Integer] a) -> Array[Integer]
17
+ def bar: ([Integer, Integer, Integer] a) -> String
18
18
  end
@@ -7,5 +7,5 @@ __END__
7
7
  # Classes
8
8
  class Object
9
9
  private
10
- def log: (Array[:sym | Integer | String]) -> nil
10
+ def log: (Array[:sym | Integer | String] x) -> nil
11
11
  end
@@ -11,5 +11,6 @@ __END__
11
11
  # Classes
12
12
  class Foo
13
13
  @var: Array[Integer]
14
+
14
15
  def foo: -> Array[Integer]
15
16
  end
@@ -57,15 +57,15 @@ __END__
57
57
  # Classes
58
58
  class Object
59
59
  private
60
- def f1: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
61
- def f2: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
62
- def f3: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
63
- def f4: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
64
- def f5: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
65
- def f6: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
66
- def f7: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
67
- def f8: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
68
- def f9: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
69
- def f10: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
70
- def dispatch: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
60
+ def f1: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
61
+ def f2: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
62
+ def f3: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
63
+ def f4: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
64
+ def f5: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
65
+ def f6: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
66
+ def f7: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
67
+ def f8: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
68
+ def f9: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
69
+ def f10: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
70
+ def dispatch: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
71
71
  end
@@ -9,5 +9,5 @@ __END__
9
9
  # Classes
10
10
  class Object
11
11
  private
12
- def foo: ([Integer, Integer, Integer]) -> (Array[Integer | String])
12
+ def foo: ([Integer, Integer, Integer] a) -> (Array[Integer | String])
13
13
  end
@@ -19,9 +19,9 @@ __END__
19
19
  # Classes
20
20
  class Object
21
21
  private
22
- def foo: ([Integer, String]) -> Integer
23
- def bar: (Integer) -> nil
24
- def baz: (String) -> nil
25
- def qux: (nil) -> nil
26
- def quux: (Integer | String) -> nil
22
+ def foo: ([Integer, String] a) -> Integer
23
+ def bar: (Integer n) -> nil
24
+ def baz: (String n) -> nil
25
+ def qux: (nil n) -> nil
26
+ def quux: (Integer | String n) -> nil
27
27
  end
@@ -11,5 +11,5 @@ __END__
11
11
  # Classes
12
12
  class Object
13
13
  private
14
- def foo: ([:a, :b, :c]) -> :a
14
+ def foo: ([:a, :b, :c] a) -> :a
15
15
  end
@@ -10,5 +10,5 @@ __END__
10
10
  # Classes
11
11
  class Object
12
12
  private
13
- def array: (Array[Integer] | Hash[Integer, Integer] | String) -> (Array[Hash[Integer, Integer] | Integer | String])
13
+ def array: (Array[Integer] | Hash[Integer, Integer] | String obj) -> (Array[Hash[Integer, Integer] | Integer | String])
14
14
  end
@@ -19,7 +19,7 @@ __END__
19
19
  # Classes
20
20
  class Object
21
21
  private
22
- def bar: ([Integer]) -> nil
22
+ def bar: ([Integer] x) -> nil
23
23
  def test_yield: { -> nil } -> nil
24
24
  def foo: -> [Integer]
25
25
  end
@@ -10,5 +10,5 @@ __END__
10
10
  # Classes
11
11
  class Object
12
12
  private
13
- def f: (:a, :b, :c) -> :c
13
+ def f: (:a a, :b b, :c c) -> :c
14
14
  end
@@ -12,5 +12,5 @@ Foo.new[1] = "str"
12
12
  __END__
13
13
  # Classes
14
14
  class Foo
15
- def []=: (*Integer | String) -> Array[bot]
15
+ def []=: (*Integer | String args) -> Array[bot]
16
16
  end
@@ -23,6 +23,6 @@ __END__
23
23
  class Object
24
24
  private
25
25
  def foo: -> [[String]]
26
- def bar: ([[Integer]]) -> [[String]]
27
- def log: ([[Integer]]) -> nil
26
+ def bar: ([[Integer]] a) -> [[String]]
27
+ def log: ([[Integer]] a) -> nil
28
28
  end