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