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
@@ -27,10 +27,11 @@ grault(*string_array)
27
27
  __END__
28
28
  # Classes
29
29
  class Object
30
- def foo : (*String) -> nil
31
- def bar : (*Integer | String) -> nil
32
- def baz : (String, *String) -> nil
33
- def qux : (Integer, *String) -> nil
34
- def corge : (*Integer | String, Integer | String) -> nil
35
- def grault : (String, ?Integer | String, *String, String) -> nil
30
+ private
31
+ def foo: (*String r) -> nil
32
+ def bar: (*Integer | String r) -> nil
33
+ def baz: (String x, *String r) -> nil
34
+ def qux: (Integer x, *String r) -> nil
35
+ def corge: (*Integer | String r, Integer | String z) -> nil
36
+ def grault: (String a, ?Integer | String o, *String r, String z) -> nil
36
37
  end
@@ -13,6 +13,7 @@ bar(1, *a, :s)
13
13
  __END__
14
14
  # Classes
15
15
  class Object
16
- def foo : (*:s | Integer | String) -> nil
17
- def bar : (Integer, :s | String, :s | String) -> nil
16
+ private
17
+ def foo: (*:s | Integer | String a) -> nil
18
+ def bar: (Integer x, :s | String y, :s | String z) -> nil
18
19
  end
@@ -6,5 +6,6 @@ foo(42)
6
6
  __END__
7
7
  # Classes
8
8
  class Object
9
- def foo : (*Integer) -> [Integer]
9
+ private
10
+ def foo: (*Integer args) -> [Integer]
10
11
  end
@@ -7,5 +7,6 @@ foo("x", "x")
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def foo : (?Integer | String, *String) -> [Array[String]]
10
+ private
11
+ def foo: (?Integer | String o1, *String r) -> [Array[String]]
11
12
  end
@@ -15,6 +15,7 @@ foo(42)
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
- def bar : (Integer | String) -> (Integer | String)
19
- def foo : (Integer | String) -> (Integer | String)
18
+ private
19
+ def bar: (Integer | String x) -> (Integer | String)
20
+ def foo: (Integer | String x) -> (Integer | String)
20
21
  end
@@ -9,5 +9,6 @@ foo
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def foo : -> Integer
12
+ private
13
+ def foo: -> Integer
13
14
  end
@@ -0,0 +1,12 @@
1
+ def foo(n)
2
+ n.to_s
3
+ end
4
+
5
+ foo(42)
6
+
7
+ __END__
8
+ # Classes
9
+ class Object
10
+ private
11
+ def foo: (Integer n) -> String
12
+ end
@@ -8,5 +8,5 @@ end
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
- V : Object
11
+ V: Object
12
12
  end
@@ -11,7 +11,8 @@ log3(1.step(5))
11
11
  __END__
12
12
  # Classes
13
13
  class Object
14
- def log1 : (Integer | Numeric) -> nil
15
- def log2 : (void) -> nil
16
- def log3 : (Enumerator[Integer | Numeric]) -> nil
14
+ private
15
+ def log1: (Integer | Numeric x) -> nil
16
+ def log2: (void x) -> nil
17
+ def log3: (Enumerator[Integer | Numeric] x) -> nil
17
18
  end
@@ -7,5 +7,6 @@ foo
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def foo : -> Array[Integer]
10
+ private
11
+ def foo: -> Array[Integer]
11
12
  end
@@ -0,0 +1,10 @@
1
+ Foo = Struct.new(:a, :b, :c, keyword_init: true)
2
+ Foo[a: 1, b: "str", c: 1.0]
3
+
4
+ __END__
5
+ # Classes
6
+ class Foo < Struct
7
+ attr_accessor a(): Integer
8
+ attr_accessor b(): String
9
+ attr_accessor c(): Float
10
+ end
@@ -6,7 +6,7 @@ Foo.new.a = 1
6
6
  __END__
7
7
  # Classes
8
8
  class AnonymousStruct_generated_1 < Struct
9
- attr_accessor a() : untyped
9
+ attr_accessor a(): untyped
10
10
  end
11
11
 
12
12
  class Foo < AnonymousStruct_generated_1
@@ -14,11 +14,12 @@ foobar.bar = :sym
14
14
  __END__
15
15
  # Classes
16
16
  class Object
17
- def gen_foobar : -> FooBar
17
+ private
18
+ def gen_foobar: -> FooBar
18
19
  end
19
20
 
20
21
  class FooBar < Struct
21
- attr_accessor foo() : Integer | String
22
- attr_accessor bar() : :sym?
23
- def my_foo : -> (Integer | String)
22
+ attr_accessor foo(): Integer | String
23
+ attr_accessor bar(): :sym?
24
+ def my_foo: -> (Integer | String)
24
25
  end
@@ -8,7 +8,7 @@ __END__
8
8
  # Classes
9
9
  class App
10
10
  class FooBar < Struct
11
- attr_accessor foo() : Integer
12
- attr_accessor bar() : String
11
+ attr_accessor foo(): Integer
12
+ attr_accessor bar(): String
13
13
  end
14
14
  end
@@ -0,0 +1,7 @@
1
+ UndefinedConstant::Foo = Struct.new(:foo)
2
+
3
+ __END__
4
+ # Classes
5
+ class AnonymousStruct_generated_1 < Struct
6
+ attr_accessor foo(): untyped
7
+ end
@@ -0,0 +1,16 @@
1
+ Foo = Struct.new(:foo)
2
+
3
+ class Foo
4
+ def initialize(foo)
5
+ super(foo.to_s)
6
+ end
7
+ end
8
+
9
+ Foo.new(42)
10
+
11
+ __END__
12
+ # Classes
13
+ class Foo < Struct
14
+ attr_accessor foo(): String
15
+ def initialize: (Integer foo) -> Foo
16
+ end
@@ -0,0 +1,15 @@
1
+ class Foo < Struct.new(:foo)
2
+ def initialize(foo)
3
+ super(foo.to_s)
4
+ end
5
+ end
6
+
7
+ __END__
8
+ # Classes
9
+ class AnonymousStruct_generated_1 < Struct
10
+ attr_accessor foo(): untyped
11
+ end
12
+
13
+ class Foo < AnonymousStruct_generated_1
14
+ def initialize: (untyped foo) -> Foo
15
+ end
@@ -0,0 +1,17 @@
1
+ # I'm unsure how this is useful
2
+ # This test just checks if TypeProf raises no exception
3
+
4
+ class Foo < Struct
5
+ end
6
+
7
+ class Foo
8
+ def initialize
9
+ super
10
+ end
11
+ end
12
+
13
+ __END__
14
+ # Classes
15
+ class Foo < Struct
16
+ def initialize: -> Foo
17
+ end
@@ -0,0 +1,10 @@
1
+ def foo(age: nil)
2
+ end
3
+
4
+ foo(age: 1)
5
+ __END__
6
+ # Classes
7
+ class Object
8
+ private
9
+ def foo: (?age: Integer?) -> nil
10
+ end
@@ -34,7 +34,8 @@ Baz.new.f(A.new)
34
34
  __END__
35
35
  # Classes
36
36
  class Object
37
- def log : (Baz) -> nil
37
+ private
38
+ def log: (Baz x) -> nil
38
39
  end
39
40
 
40
41
  class A
@@ -56,13 +57,13 @@ class Z
56
57
  end
57
58
 
58
59
  class Foo
59
- def f : (C) -> X
60
+ def f: (C x) -> X
60
61
  end
61
62
 
62
63
  class Bar < Foo
63
- def f : (B) -> Y
64
+ def f: (B x) -> Y
64
65
  end
65
66
 
66
67
  class Baz < Bar
67
- def f : (A) -> Z
68
+ def f: (A x) -> Z
68
69
  end
@@ -12,5 +12,5 @@ smoke/super2.rb:3: [error] no superclass method: Foo#f
12
12
 
13
13
  # Classes
14
14
  class Foo
15
- def f : -> untyped
15
+ def f: -> untyped
16
16
  end
@@ -13,7 +13,8 @@ Foo.new(1)
13
13
  __END__
14
14
  # Classes
15
15
  class Foo
16
- @a : Integer
17
- def self.new : (Integer) -> Foo
18
- def initialize : (Integer) -> Integer
16
+ @a: Integer
17
+
18
+ def self.new: (Integer a) -> Foo
19
+ def initialize: (Integer a) -> Integer
19
20
  end
@@ -21,23 +21,25 @@ E.new.f(:top)
21
21
  __END__
22
22
  # Classes
23
23
  module M1
24
- def f : (:D) -> nil
24
+ def f: (:D m) -> nil
25
25
  end
26
26
 
27
27
  module M2
28
- def f : (:E) -> nil
28
+ def f: (:E m) -> nil
29
29
  end
30
30
 
31
31
  class C
32
- def f : (:M1) -> nil
32
+ def f: (:M1 m) -> nil
33
33
  end
34
34
 
35
35
  class D < C
36
36
  include M1
37
- def f : (:M2) -> nil
37
+
38
+ def f: (:M2 m) -> nil
38
39
  end
39
40
 
40
41
  class E < D
41
42
  include M2
42
- def f : (:top) -> nil
43
+
44
+ def f: (:top m) -> nil
43
45
  end
@@ -18,19 +18,21 @@ E.new.f(:top)
18
18
  __END__
19
19
  # Classes
20
20
  module M
21
- def f : (:D | :E) -> nil
21
+ def f: (:D | :E m) -> nil
22
22
  end
23
23
 
24
24
  class C
25
- def f : (:M) -> nil
25
+ def f: (:M m) -> nil
26
26
  end
27
27
 
28
28
  class D < C
29
29
  include M
30
- def f : (:M) -> nil
30
+
31
+ def f: (:M m) -> nil
31
32
  end
32
33
 
33
34
  class E < D
34
35
  include M
35
- def f : (:top) -> nil
36
+
37
+ def f: (:top m) -> nil
36
38
  end
@@ -8,5 +8,6 @@ foo
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
- def foo : -> [String?, String?]
11
+ private
12
+ def foo: -> [String?, String?]
12
13
  end
@@ -0,0 +1,22 @@
1
+ class Foo
2
+ attr_reader :foo
3
+ def initialize(foo)
4
+ @foo = foo
5
+ end
6
+ end
7
+
8
+ def log
9
+ [Foo.new(42)].map(&:foo)
10
+ end
11
+
12
+ __END__
13
+ # Classes
14
+ class Object
15
+ private
16
+ def log: -> (Array[Integer | untyped])
17
+ end
18
+
19
+ class Foo
20
+ attr_reader foo: Integer | untyped
21
+ def initialize: (Integer | untyped foo) -> (Integer | untyped)
22
+ end
@@ -0,0 +1,15 @@
1
+ class Foo
2
+ attr_reader :foo
3
+ def initialize
4
+ @foo = [42]
5
+ end
6
+ end
7
+
8
+ [Foo.new].flat_map(&:foo)
9
+
10
+ __END__
11
+ # Classes
12
+ class Foo
13
+ attr_reader foo: [Integer]
14
+ def initialize: -> [Integer]
15
+ end
@@ -0,0 +1,13 @@
1
+ # This method call invokes (bottom type).boo, so the analysis may terminate
2
+ # Currently, SymbolBlock translates bot receiver to any type
3
+ [].each(&:boo)
4
+
5
+ def foo
6
+ end
7
+
8
+ __END__
9
+ # Classes
10
+ class Object
11
+ private
12
+ def foo: -> nil
13
+ end
@@ -15,10 +15,11 @@ end
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
- def foo : -> Array[String]
19
- def bar : -> Array[:foo]
18
+ private
19
+ def foo: -> Array[String]
20
+ def bar: -> Array[:foo]
20
21
  end
21
22
 
22
23
  class Foo
23
- def foo : -> :foo
24
+ def foo: -> :foo
24
25
  end
@@ -12,6 +12,7 @@ foo(1)
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def bar : (Integer) -> nil
16
- def foo : (Integer) -> Integer
15
+ private
16
+ def bar: (Integer x) -> nil
17
+ def foo: (Integer x) -> Integer
17
18
  end
@@ -8,5 +8,6 @@ foo(x)
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
- def foo : (Integer) -> Integer
11
+ private
12
+ def foo: (Integer x) -> Integer
12
13
  end
@@ -12,6 +12,7 @@ bar
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def foo : -> Array[String]
16
- def bar : -> Array[Integer]
15
+ private
16
+ def foo: -> Array[String]
17
+ def bar: -> Array[Integer]
17
18
  end