typeprof 0.7.0 → 0.10.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 (296) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +8 -5
  3. data/lib/typeprof/analyzer.rb +211 -98
  4. data/lib/typeprof/arguments.rb +2 -0
  5. data/lib/typeprof/block.rb +40 -2
  6. data/lib/typeprof/builtin.rb +301 -99
  7. data/lib/typeprof/cli.rb +2 -0
  8. data/lib/typeprof/config.rb +14 -2
  9. data/lib/typeprof/container-type.rb +5 -4
  10. data/lib/typeprof/export.rb +116 -65
  11. data/lib/typeprof/import.rb +68 -41
  12. data/lib/typeprof/iseq.rb +46 -11
  13. data/lib/typeprof/method.rb +47 -23
  14. data/lib/typeprof/type.rb +96 -18
  15. data/lib/typeprof/version.rb +1 -1
  16. data/smoke/alias.rb +5 -4
  17. data/smoke/alias2.rb +6 -4
  18. data/smoke/any1.rb +2 -1
  19. data/smoke/any2.rb +3 -2
  20. data/smoke/arguments.rb +3 -2
  21. data/smoke/arguments2.rb +11 -10
  22. data/smoke/array-each.rb +2 -1
  23. data/smoke/array-each2.rb +2 -1
  24. data/smoke/array-each3.rb +2 -1
  25. data/smoke/array-ltlt.rb +2 -1
  26. data/smoke/array-ltlt2.rb +2 -1
  27. data/smoke/array-map.rb +2 -1
  28. data/smoke/array-map2.rb +2 -1
  29. data/smoke/array-map3.rb +4 -3
  30. data/smoke/array-mul.rb +3 -2
  31. data/smoke/array-plus1.rb +2 -1
  32. data/smoke/array-plus2.rb +3 -2
  33. data/smoke/array-pop.rb +2 -1
  34. data/smoke/array-range-aref.rb +12 -11
  35. data/smoke/array-replace.rb +2 -1
  36. data/smoke/array-s-aref.rb +2 -1
  37. data/smoke/array1.rb +6 -5
  38. data/smoke/array10.rb +2 -1
  39. data/smoke/array11.rb +2 -1
  40. data/smoke/array12.rb +4 -3
  41. data/smoke/array13.rb +5 -4
  42. data/smoke/array14.rb +2 -1
  43. data/smoke/array15.rb +16 -0
  44. data/smoke/array2.rb +4 -3
  45. data/smoke/array3.rb +5 -4
  46. data/smoke/array4.rb +2 -1
  47. data/smoke/array5.rb +2 -1
  48. data/smoke/array6.rb +4 -2
  49. data/smoke/array7.rb +2 -1
  50. data/smoke/array8.rb +1 -1
  51. data/smoke/array9.rb +2 -1
  52. data/smoke/attr-module.rb +27 -0
  53. data/smoke/attr-vis.rb +43 -0
  54. data/smoke/attr-vis.rbs +4 -0
  55. data/smoke/attr.rb +5 -5
  56. data/smoke/autoload.rb +2 -1
  57. data/smoke/backtrace.rb +4 -3
  58. data/smoke/block-ambiguous.rb +9 -8
  59. data/smoke/block-args1-rest.rb +13 -11
  60. data/smoke/block-args1.rb +11 -10
  61. data/smoke/block-args2-rest.rb +13 -11
  62. data/smoke/block-args2.rb +11 -10
  63. data/smoke/block-args3-rest.rb +15 -13
  64. data/smoke/block-args3.rb +13 -12
  65. data/smoke/block-blockarg.rb +5 -4
  66. data/smoke/block-kwarg.rb +11 -10
  67. data/smoke/block1.rb +2 -1
  68. data/smoke/block10.rb +2 -1
  69. data/smoke/block11.rb +6 -5
  70. data/smoke/block12.rb +3 -2
  71. data/smoke/block14.rb +3 -2
  72. data/smoke/block2.rb +2 -1
  73. data/smoke/block3.rb +3 -3
  74. data/smoke/block4.rb +3 -2
  75. data/smoke/block5.rb +4 -2
  76. data/smoke/block6.rb +3 -2
  77. data/smoke/block7.rb +2 -1
  78. data/smoke/block8.rb +4 -3
  79. data/smoke/block9.rb +2 -1
  80. data/smoke/block_given.rb +37 -0
  81. data/smoke/blown.rb +2 -1
  82. data/smoke/break1.rb +3 -2
  83. data/smoke/break2.rb +2 -1
  84. data/smoke/break3.rb +13 -0
  85. data/smoke/case.rb +2 -1
  86. data/smoke/case2.rb +2 -1
  87. data/smoke/case3.rb +17 -0
  88. data/smoke/class-hierarchy.rb +5 -5
  89. data/smoke/class-hierarchy2.rb +3 -3
  90. data/smoke/class-new.rb +15 -0
  91. data/smoke/class_instance_var.rb +1 -1
  92. data/smoke/class_method.rb +2 -2
  93. data/smoke/class_method2.rb +2 -2
  94. data/smoke/class_method3.rb +4 -2
  95. data/smoke/constant1.rb +6 -6
  96. data/smoke/constant2.rb +6 -4
  97. data/smoke/constant3.rb +2 -1
  98. data/smoke/constant4.rb +2 -1
  99. data/smoke/context-sensitive1.rb +2 -1
  100. data/smoke/cvar.rb +7 -5
  101. data/smoke/cvar2.rb +2 -2
  102. data/smoke/define_method.rb +2 -2
  103. data/smoke/define_method2.rb +2 -2
  104. data/smoke/define_method3.rb +14 -0
  105. data/smoke/define_method3.rbs +3 -0
  106. data/smoke/define_method4.rb +15 -0
  107. data/smoke/define_method4.rbs +3 -0
  108. data/smoke/define_method5.rb +12 -0
  109. data/smoke/define_method6.rb +19 -0
  110. data/smoke/demo.rb +7 -6
  111. data/smoke/demo1.rb +2 -1
  112. data/smoke/demo10.rb +3 -2
  113. data/smoke/demo11.rb +2 -1
  114. data/smoke/demo2.rb +2 -1
  115. data/smoke/demo3.rb +2 -1
  116. data/smoke/demo4.rb +3 -3
  117. data/smoke/demo5.rb +1 -1
  118. data/smoke/demo6.rb +4 -3
  119. data/smoke/demo7.rb +2 -1
  120. data/smoke/demo8.rb +3 -2
  121. data/smoke/demo9.rb +4 -2
  122. data/smoke/dummy-execution1.rb +3 -2
  123. data/smoke/dummy-execution2.rb +2 -2
  124. data/smoke/dummy_element.rb +14 -0
  125. data/smoke/ensure1.rb +3 -2
  126. data/smoke/enum_for.rb +15 -0
  127. data/smoke/enum_for2.rb +17 -0
  128. data/smoke/enumerator.rb +3 -2
  129. data/smoke/expandarray1.rb +2 -1
  130. data/smoke/expandarray2.rb +2 -1
  131. data/smoke/fib.rb +2 -2
  132. data/smoke/flip-flop.rb +28 -0
  133. data/smoke/flow1.rb +2 -1
  134. data/smoke/flow10.rb +17 -0
  135. data/smoke/flow2.rb +2 -1
  136. data/smoke/flow3.rb +2 -1
  137. data/smoke/flow5.rb +2 -1
  138. data/smoke/flow6.rb +2 -1
  139. data/smoke/flow7.rb +2 -1
  140. data/smoke/flow8.rb +2 -1
  141. data/smoke/flow9.rb +12 -0
  142. data/smoke/freeze.rb +2 -1
  143. data/smoke/function.rb +3 -2
  144. data/smoke/gvar.rb +3 -2
  145. data/smoke/gvar2.rb +4 -3
  146. data/smoke/hash-bot.rb +12 -0
  147. data/smoke/hash-fetch.rb +4 -3
  148. data/smoke/hash-merge-bang.rb +2 -1
  149. data/smoke/hash1.rb +3 -2
  150. data/smoke/hash2.rb +2 -1
  151. data/smoke/hash3.rb +2 -1
  152. data/smoke/hash4.rb +2 -1
  153. data/smoke/hash5.rb +1 -1
  154. data/smoke/inheritance.rb +4 -4
  155. data/smoke/inheritance2.rb +2 -2
  156. data/smoke/initialize.rb +7 -5
  157. data/smoke/instance_eval.rb +2 -2
  158. data/smoke/instance_eval2.rb +10 -0
  159. data/smoke/instance_eval3.rb +25 -0
  160. data/smoke/int_times.rb +2 -1
  161. data/smoke/integer.rb +2 -1
  162. data/smoke/ivar.rb +6 -4
  163. data/smoke/ivar2.rb +4 -4
  164. data/smoke/ivar3.rb +4 -3
  165. data/smoke/ivar4.rb +21 -0
  166. data/smoke/kernel-class.rb +2 -1
  167. data/smoke/keyword1.rb +2 -1
  168. data/smoke/keyword2.rb +2 -1
  169. data/smoke/keyword3.rb +2 -1
  170. data/smoke/keyword4.rb +2 -1
  171. data/smoke/keyword5.rb +2 -1
  172. data/smoke/kwrest.rb +3 -2
  173. data/smoke/kwsplat1.rb +5 -4
  174. data/smoke/kwsplat2.rb +2 -1
  175. data/smoke/lit-complex.rb +10 -0
  176. data/smoke/lit-encoding.rb +10 -0
  177. data/smoke/manual-rbs.rb +6 -4
  178. data/smoke/manual-rbs2.rb +2 -1
  179. data/smoke/manual-rbs3.rb +3 -2
  180. data/smoke/masgn1.rb +2 -1
  181. data/smoke/masgn2.rb +3 -2
  182. data/smoke/masgn3.rb +2 -1
  183. data/smoke/method_in_branch.rb +4 -3
  184. data/smoke/method_missing.rb +5 -4
  185. data/smoke/module1.rb +2 -2
  186. data/smoke/module2.rb +1 -1
  187. data/smoke/module3.rb +3 -3
  188. data/smoke/module4.rb +3 -2
  189. data/smoke/module5.rb +17 -0
  190. data/smoke/module6.rb +40 -0
  191. data/smoke/module_function1.rb +4 -3
  192. data/smoke/module_function2.rb +4 -3
  193. data/smoke/multiple-include.rb +2 -1
  194. data/smoke/multiple-superclass.rb +1 -1
  195. data/smoke/next1.rb +3 -2
  196. data/smoke/next2.rb +2 -1
  197. data/smoke/object-send1.rb +4 -3
  198. data/smoke/object-send2.rb +10 -0
  199. data/smoke/object-send3.rb +18 -0
  200. data/smoke/once.rb +2 -1
  201. data/smoke/optional1.rb +2 -1
  202. data/smoke/optional2.rb +2 -1
  203. data/smoke/optional3.rb +2 -1
  204. data/smoke/parameterizedd-self.rb +4 -2
  205. data/smoke/parameterizedd-self2.rb +1 -1
  206. data/smoke/pathname1.rb +2 -1
  207. data/smoke/pathname2.rb +2 -1
  208. data/smoke/pattern-match1.rb +2 -1
  209. data/smoke/pattern-match2.rb +2 -1
  210. data/smoke/prepend1.rb +33 -0
  211. data/smoke/prepend2.rb +10 -0
  212. data/smoke/prepend2.rbs +9 -0
  213. data/smoke/primitive_method.rb +19 -0
  214. data/smoke/printf.rb +2 -2
  215. data/smoke/proc.rb +3 -2
  216. data/smoke/proc2.rb +2 -1
  217. data/smoke/proc3.rb +2 -1
  218. data/smoke/proc4.rb +2 -1
  219. data/smoke/proc5.rb +19 -0
  220. data/smoke/public.rb +38 -0
  221. data/smoke/range.rb +2 -1
  222. data/smoke/rbs-alias.rb +2 -1
  223. data/smoke/rbs-attr.rb +6 -5
  224. data/smoke/rbs-attr2.rb +1 -1
  225. data/smoke/rbs-extend.rb +2 -1
  226. data/smoke/rbs-interface.rb +5 -4
  227. data/smoke/rbs-module.rb +26 -0
  228. data/smoke/rbs-module.rbs +4 -0
  229. data/smoke/rbs-opt-and-rest.rb +10 -0
  230. data/smoke/rbs-opt-and-rest.rbs +3 -0
  231. data/smoke/rbs-proc1.rb +2 -1
  232. data/smoke/rbs-proc2.rb +3 -2
  233. data/smoke/rbs-proc3.rb +2 -1
  234. data/smoke/rbs-record.rb +3 -2
  235. data/smoke/rbs-tyvar.rb +3 -2
  236. data/smoke/rbs-tyvar2.rb +3 -2
  237. data/smoke/rbs-tyvar3.rb +3 -2
  238. data/smoke/rbs-tyvar4.rb +4 -3
  239. data/smoke/rbs-tyvar5.rb +2 -1
  240. data/smoke/rbs-tyvar6.rb +4 -3
  241. data/smoke/rbs-tyvar7.rb +2 -1
  242. data/smoke/rbs-vars.rb +7 -6
  243. data/smoke/redo1.rb +3 -2
  244. data/smoke/redo2.rb +3 -2
  245. data/smoke/req-keyword.rb +2 -1
  246. data/smoke/rescue1.rb +3 -2
  247. data/smoke/rescue2.rb +3 -2
  248. data/smoke/rescue3.rb +20 -0
  249. data/smoke/rescue4.rb +17 -0
  250. data/smoke/respond_to.rb +2 -1
  251. data/smoke/rest-farg.rb +2 -1
  252. data/smoke/rest1.rb +3 -2
  253. data/smoke/rest2.rb +2 -1
  254. data/smoke/rest3.rb +7 -6
  255. data/smoke/rest4.rb +3 -2
  256. data/smoke/rest5.rb +2 -1
  257. data/smoke/rest6.rb +2 -1
  258. data/smoke/retry1.rb +3 -2
  259. data/smoke/return.rb +2 -1
  260. data/smoke/simple.rb +12 -0
  261. data/smoke/singleton_method.rb +1 -1
  262. data/smoke/step.rb +4 -3
  263. data/smoke/string-split.rb +2 -1
  264. data/smoke/struct-keyword_init.rb +10 -0
  265. data/smoke/struct.rb +1 -1
  266. data/smoke/struct2.rb +5 -4
  267. data/smoke/struct3.rb +2 -2
  268. data/smoke/struct4.rb +7 -0
  269. data/smoke/struct5.rb +16 -0
  270. data/smoke/struct6.rb +15 -0
  271. data/smoke/struct7.rb +17 -0
  272. data/smoke/stub-keyword.rb +10 -0
  273. data/smoke/super1.rb +5 -4
  274. data/smoke/super2.rb +1 -1
  275. data/smoke/super3.rb +4 -3
  276. data/smoke/super4.rb +7 -5
  277. data/smoke/super5.rb +6 -4
  278. data/smoke/svar1.rb +2 -1
  279. data/smoke/symbol-proc-attr.rb +22 -0
  280. data/smoke/symbol-proc-attr2.rb +15 -0
  281. data/smoke/symbol-proc-bot.rb +13 -0
  282. data/smoke/symbol-proc.rb +4 -3
  283. data/smoke/tap1.rb +3 -2
  284. data/smoke/toplevel.rb +2 -1
  285. data/smoke/two-map.rb +3 -2
  286. data/smoke/type_var.rb +4 -3
  287. data/smoke/typed_method.rb +2 -1
  288. data/smoke/uninitialize-var.rb +2 -1
  289. data/smoke/union-recv.rb +2 -2
  290. data/smoke/user-demo.rb +3 -3
  291. data/smoke/wrong-extend.rb +3 -2
  292. data/smoke/wrong-include.rb +3 -2
  293. data/smoke/wrong-include2.rb +17 -0
  294. data/typeprof.gemspec +1 -1
  295. metadata +57 -5
  296. data/tools/stackprof-wrapper.rb +0 -10
@@ -1,3 +1,3 @@
1
1
  module TypeProf
2
- VERSION = "0.7.0"
2
+ VERSION = "0.10.0"
3
3
  end
@@ -20,11 +20,12 @@ Test.new.qux("str")
20
20
  __END__
21
21
  # Classes
22
22
  class Object
23
- def foo : (Integer) -> Integer
24
- def bar : (String) -> String
23
+ private
24
+ def foo: (Integer | String x) -> (Integer | String)
25
+ alias bar foo
25
26
  end
26
27
 
27
28
  class Test
28
- def baz : (Integer) -> Integer
29
- def qux : (String) -> String
29
+ def baz: (Integer | String x) -> (Integer | String)
30
+ alias qux baz
30
31
  end
@@ -12,8 +12,10 @@ Foo[:x, :y, :z]
12
12
  __END__
13
13
  # Classes
14
14
  class Foo
15
- @a : :x
16
- @b : :y
17
- @c : :z
18
- def initialize : (:x, :y, :z) -> [:x, :y, :z]
15
+ @a: :x
16
+ @b: :y
17
+ @c: :z
18
+
19
+ alias self.[] self.new
20
+ def initialize: (:x a, :y b, :z c) -> [:x, :y, :z]
19
21
  end
@@ -11,5 +11,6 @@ smoke/any1.rb:2: [error] undefined method: Integer#undefined_method
11
11
 
12
12
  # Classes
13
13
  class Object
14
- def foo : -> untyped
14
+ private
15
+ def foo: -> untyped
15
16
  end
@@ -12,6 +12,7 @@ bar
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def foo : -> untyped
16
- def bar : -> Integer
15
+ private
16
+ def foo: -> untyped
17
+ def bar: -> Integer
17
18
  end
@@ -11,6 +11,7 @@ smoke/arguments.rb:6: [error] wrong number of arguments (given 2, expected 1)
11
11
 
12
12
  # Classes
13
13
  class Object
14
- def foo : (untyped) -> nil
15
- def bar : (untyped) -> nil
14
+ private
15
+ def foo: (untyped x) -> nil
16
+ def bar: (untyped x) -> nil
16
17
  end
@@ -42,14 +42,15 @@ f10 {|n| }
42
42
  __END__
43
43
  # Classes
44
44
  class Object
45
- def f1 : -> nil
46
- def f2 : (:x, :y, :z) -> nil
47
- def f3 : (?String, ?String) -> nil
48
- def f4 : (*:a | :b | :c) -> nil
49
- def f5 : (:x, ?String, :z) -> nil
50
- def f6 : (k: :kk) -> nil
51
- def f7 : (?k: Integer) -> nil
52
- def f8 : (?k: String) -> nil
53
- def f9 : (**{k: :kk}) -> nil
54
- def f10 : { (Integer) -> nil } -> nil
45
+ private
46
+ def f1: -> 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
+ def f6: (k: :kk) -> nil
52
+ def f7: (?k: Integer) -> nil
53
+ def f8: (?k: String) -> nil
54
+ def f9: (**:kk) -> nil
55
+ def f10: { (Integer) -> nil } -> nil
55
56
  end
@@ -10,5 +10,6 @@ log(nil)
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def log : ((:sym | Integer | String)?) -> nil
13
+ private
14
+ def log: ((:sym | Integer | String)? x) -> nil
14
15
  end
@@ -11,5 +11,6 @@ foo
11
11
  __END__
12
12
  # Classes
13
13
  class Object
14
- def foo : -> ((Integer | String)?)
14
+ private
15
+ def foo: -> ((Integer | String)?)
15
16
  end
@@ -8,5 +8,6 @@ end
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
- def log : (bot) -> nil
11
+ private
12
+ def log: (bot x) -> nil
12
13
  end
@@ -9,5 +9,6 @@ foo
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def foo : -> (Array[Integer | String])
12
+ private
13
+ def foo: -> (Array[Integer | String])
13
14
  end
@@ -12,5 +12,6 @@ foo
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def foo : -> (Array[Integer | String])
15
+ private
16
+ def foo: -> (Array[Integer | String])
16
17
  end
@@ -7,5 +7,6 @@ foo([1, 2, 3])
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def foo : ([Integer, Integer, Integer]) -> Array[String]
10
+ private
11
+ def foo: ([Integer, Integer, Integer] a) -> Array[String]
11
12
  end
@@ -6,5 +6,6 @@ foo([1, 2, 3])
6
6
  __END__
7
7
  # Classes
8
8
  class Object
9
- def foo : ([Integer, Integer, Integer]) -> (Array[Integer | String])
9
+ private
10
+ def foo: ([Integer, Integer, Integer] a) -> (Array[Integer | String])
10
11
  end
@@ -16,7 +16,8 @@ map_bang_test_known_bug([1, 2, 3])
16
16
  __END__
17
17
  # Classes
18
18
  class Object
19
- def map_test : ([Integer, Integer, Integer]) -> Array[String]
20
- def map_bang_test : ([Integer, Integer, Integer]) -> (Array[Integer | String])
21
- def map_bang_test_known_bug : ([Integer, Integer, Integer]) -> [Integer, Integer, Integer]
19
+ private
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]
22
23
  end
@@ -12,6 +12,7 @@ bar([1, 2, 3])
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def foo : ([Integer, Integer, Integer]) -> Array[Integer]
16
- def bar : ([Integer, Integer, Integer]) -> String
15
+ private
16
+ def foo: ([Integer, Integer, Integer] a) -> Array[Integer]
17
+ def bar: ([Integer, Integer, Integer] a) -> String
17
18
  end
@@ -6,5 +6,6 @@ log([1] + ["str"] + [2] + [:sym])
6
6
  __END__
7
7
  # Classes
8
8
  class Object
9
- def log : (Array[:sym | Integer | String]) -> nil
9
+ private
10
+ def log: (Array[:sym | Integer | String] x) -> nil
10
11
  end
@@ -10,6 +10,7 @@ Foo.new.foo
10
10
  __END__
11
11
  # Classes
12
12
  class Foo
13
- @var : Array[Integer]
14
- def foo : -> Array[Integer]
13
+ @var: Array[Integer]
14
+
15
+ def foo: -> Array[Integer]
15
16
  end
@@ -7,5 +7,6 @@ foo
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def foo : -> (:sym | Integer | String)
10
+ private
11
+ def foo: -> (:sym | Integer | String)
11
12
  end
@@ -56,15 +56,16 @@ dispatch(:a, :b, :c, :d, :e)
56
56
  __END__
57
57
  # Classes
58
58
  class Object
59
- def f1 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
60
- def f2 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
61
- def f3 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
62
- def f4 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
63
- def f5 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
64
- def f6 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
65
- def f7 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
66
- def f8 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
67
- def f9 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
68
- def f10 : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
69
- def dispatch : (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
59
+ private
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])
70
71
  end
@@ -8,5 +8,6 @@ foo([1, 2, 3])
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
- def foo : ([Integer, Integer, Integer]) -> (Array[Integer | String])
11
+ private
12
+ def foo: ([Integer, Integer, Integer] a) -> (Array[Integer | String])
12
13
  end
@@ -7,5 +7,6 @@ foo
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def foo : -> (Array[Integer | String])
10
+ private
11
+ def foo: -> (Array[Integer | String])
11
12
  end
@@ -18,9 +18,10 @@ quux(a[n])
18
18
  __END__
19
19
  # Classes
20
20
  class Object
21
- def foo : ([Integer, String]) -> Integer
22
- def bar : (Integer) -> nil
23
- def baz : (String) -> nil
24
- def qux : (nil) -> nil
25
- def quux : (Integer | String) -> nil
21
+ private
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
26
27
  end
@@ -10,5 +10,6 @@ foo([:a, :b, :c])
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def foo : ([:a, :b, :c]) -> :a
13
+ private
14
+ def foo: ([:a, :b, :c] a) -> :a
14
15
  end
@@ -9,5 +9,6 @@ array("foo")
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def array : (Array[Integer] | Hash[Integer, Integer] | String) -> (Array[Hash[Integer, Integer] | Integer | String])
12
+ private
13
+ def array: (Array[Integer] | Hash[Integer, Integer] | String obj) -> (Array[Hash[Integer, Integer] | Integer | String])
13
14
  end
@@ -18,7 +18,8 @@ foo
18
18
  __END__
19
19
  # Classes
20
20
  class Object
21
- def bar : ([Integer]) -> nil
22
- def test_yield : { -> nil } -> nil
23
- def foo : -> [Integer]
21
+ private
22
+ def bar: ([Integer] x) -> nil
23
+ def test_yield: { -> nil } -> nil
24
+ def foo: -> [Integer]
24
25
  end
@@ -23,8 +23,9 @@ end
23
23
  __END__
24
24
  # Classes
25
25
  class Object
26
- def tuple_set : -> [:a, :b, :z]
27
- def tuple_get : -> :c
28
- def seq_set : -> (Array[:a | :b | :c | :z])
29
- def seq_get : -> (:a | :b | :c)
26
+ private
27
+ def tuple_set: -> [:a, :b, :z]
28
+ def tuple_get: -> :c
29
+ def seq_set: -> (Array[:a | :b | :c | :z])
30
+ def seq_get: -> (:a | :b | :c)
30
31
  end
@@ -9,5 +9,6 @@ f(:a, :b, :c)
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def f : (:a, :b, :c) -> :c
12
+ private
13
+ def f: (:a a, :b b, :c c) -> :c
13
14
  end
@@ -0,0 +1,16 @@
1
+ class Foo
2
+ def []=(*args)
3
+ ary = []
4
+ val = args[-1]
5
+ ary[*args[0..-2]] = val # TODO: there is room to improve array_aset
6
+ ary # This should be Array[String]
7
+ end
8
+ end
9
+
10
+ Foo.new[1] = "str"
11
+
12
+ __END__
13
+ # Classes
14
+ class Foo
15
+ def []=: (*Integer | String args) -> Array[bot]
16
+ end
@@ -21,7 +21,8 @@ log(a)
21
21
  __END__
22
22
  # Classes
23
23
  class Object
24
- def foo : -> [[String]]
25
- def bar : ([[Integer]]) -> [[String]]
26
- def log : ([[Integer]]) -> nil
24
+ private
25
+ def foo: -> [[String]]
26
+ def bar: ([[Integer]] a) -> [[String]]
27
+ def log: ([[Integer]] a) -> nil
27
28
  end
@@ -18,8 +18,9 @@ Foo.new.bar
18
18
  __END__
19
19
  # Classes
20
20
  class Foo
21
- @ary : [Integer, String?, :sym]
22
- def initialize : -> [Integer, String, :sym]
23
- def foo : -> String?
24
- def bar : -> nil
21
+ @ary: [Integer, String?, :sym]
22
+
23
+ def initialize: -> [Integer, String, :sym]
24
+ def foo: -> String?
25
+ def bar: -> nil
25
26
  end
@@ -10,5 +10,6 @@ foo
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def foo : -> [Integer]?
13
+ private
14
+ def foo: -> [Integer]?
14
15
  end
@@ -9,5 +9,6 @@ foo
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def foo : -> [untyped]
12
+ private
13
+ def foo: -> [untyped]
13
14
  end
@@ -10,6 +10,8 @@ foo(1, "str")
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- ARY : Array[bot]
14
- def foo : (Integer, String) -> Array[bot]
13
+ ARY: Array[bot]
14
+
15
+ private
16
+ def foo: (Integer i, String v) -> Array[bot]
15
17
  end
@@ -9,5 +9,6 @@ foo
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def foo : -> (Array[Integer | String])
12
+ private
13
+ def foo: -> (Array[Integer | String])
13
14
  end
@@ -9,5 +9,5 @@ end
9
9
  __END__
10
10
  # Classes
11
11
  class Foo
12
- def self.foo : (Array[bot]) -> Array[bot]
12
+ def self.foo: (Array[bot] a) -> Array[bot]
13
13
  end
@@ -8,5 +8,6 @@ foo([:a])
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
- def foo : (Array[:a | :b | :c]) -> nil
11
+ private
12
+ def foo: (Array[:a | :b | :c] a) -> nil
12
13
  end
@@ -0,0 +1,27 @@
1
+ module Foo
2
+ attr_accessor :foo
3
+ module_function :foo=, :foo
4
+ end
5
+
6
+ class Bar
7
+ include Foo
8
+ end
9
+
10
+ Foo.foo = 42
11
+ Bar.new.foo = "str"
12
+
13
+ # XXX: the output may be improved
14
+
15
+ __END__
16
+ # Classes
17
+ module Foo
18
+ self.@foo: Integer
19
+
20
+ attr_accessor foo: untyped
21
+ attr_accessor self.foo: Integer
22
+ end
23
+
24
+ class Bar
25
+ include Foo
26
+ @foo: String
27
+ end