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
@@ -65,16 +65,17 @@ B.new.foo("str")
65
65
  __END__
66
66
  # Classes
67
67
  class Object
68
- def foo : (bool) -> (Integer | String)
69
- def identity : (:sym | Integer | String) -> (:sym | Integer | String)
70
- def fib : (Integer) -> Integer
68
+ private
69
+ def foo: (bool x) -> (Integer | String)
70
+ def identity: (:sym | Integer | String x) -> (:sym | Integer | String)
71
+ def fib: (Integer x) -> Integer
71
72
  end
72
73
 
73
74
  class A
74
- def foo : (Integer | String) -> nil
75
- def bar : (Integer | String) -> nil
75
+ def foo: (Integer | String x) -> nil
76
+ def bar: (Integer | String x) -> nil
76
77
  end
77
78
 
78
79
  class B < A
79
- def bar : (Integer | String) -> nil
80
+ def bar: (Integer | String x) -> nil
80
81
  end
@@ -12,5 +12,6 @@ foo(false)
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def foo : (bool) -> (Integer | String)
15
+ private
16
+ def foo: (bool x) -> (Integer | String)
16
17
  end
@@ -15,6 +15,7 @@ foo
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
- def bar : { -> String } -> String
19
- def foo : -> (Integer | String)
18
+ private
19
+ def bar: { -> String } -> String
20
+ def foo: -> (Integer | String)
20
21
  end
@@ -7,5 +7,6 @@ swap(a)
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def swap : ([Integer, String]) -> [String, Integer]
10
+ private
11
+ def swap: ([Integer, String] a) -> [String, Integer]
11
12
  end
@@ -10,5 +10,6 @@ my_to_s(:sym)
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def my_to_s : (:sym | Integer | String) -> String
13
+ private
14
+ def my_to_s: (:sym | Integer | String x) -> String
14
15
  end
@@ -12,5 +12,6 @@ fib(40000)
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def fib : (Integer) -> Integer
15
+ private
16
+ def fib: (Integer x) -> Integer
16
17
  end
@@ -18,10 +18,10 @@ B.new.foo("str")
18
18
  __END__
19
19
  # Classes
20
20
  class A
21
- def foo : (Integer | String) -> nil
22
- def bar : (Integer | String) -> nil
21
+ def foo: (Integer | String x) -> nil
22
+ def bar: (Integer | String x) -> nil
23
23
  end
24
24
 
25
25
  class B < A
26
- def bar : (Integer | String) -> nil
26
+ def bar: (Integer | String x) -> nil
27
27
  end
@@ -9,7 +9,7 @@ B.foo(Integer)
9
9
  __END__
10
10
  # Classes
11
11
  class A
12
- def self.foo : (Integer | singleton(Integer)) -> String
12
+ def self.foo: (Integer | singleton(Integer) x) -> String
13
13
  end
14
14
 
15
15
  class B < A
@@ -15,7 +15,8 @@ Foo.new.foo
15
15
  __END__
16
16
  # Classes
17
17
  class Foo
18
- @foo : Integer | String
19
- def foo= : (Integer | String) -> (Integer | String)
20
- def foo : -> (Integer | String)
18
+ @foo: Integer | String
19
+
20
+ def foo=: (Integer | String x) -> (Integer | String)
21
+ def foo: -> (Integer | String)
21
22
  end
@@ -10,5 +10,6 @@ end
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def foo : (Integer) { (Integer) -> String } -> String
13
+ private
14
+ def foo: (Integer x) { (Integer) -> String } -> String
14
15
  end
@@ -13,6 +13,7 @@ bar(&blk)
13
13
  __END__
14
14
  # Classes
15
15
  class Object
16
- def foo : { (:sym | String) -> (:sym | String) } -> (:sym | String)
17
- def bar : { (:sym | String) -> (:sym | String) } -> (:sym | String)
16
+ private
17
+ def foo: { (:sym | String) -> (:sym | String) } -> (:sym | String)
18
+ def bar: { (:sym | String) -> (:sym | String) } -> (:sym | String)
18
19
  end
@@ -11,6 +11,8 @@ end
11
11
  __END__
12
12
  # Classes
13
13
  class Object
14
- F : ^(Integer) -> String
15
- def foo : { (:sym) -> String } -> String
14
+ F: ^(Integer) -> String
15
+
16
+ private
17
+ def foo: { (:sym) -> String } -> String
16
18
  end
@@ -9,6 +9,7 @@ end
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def foo : (Integer | untyped) -> (Integer | untyped)
13
- def bar : -> (Integer | untyped)
12
+ private
13
+ def foo: (Integer | untyped n) -> (Integer | untyped)
14
+ def bar: -> (Integer | untyped)
14
15
  end
@@ -11,6 +11,6 @@ end
11
11
  __END__
12
12
  # Classes
13
13
  class Foo
14
- def foo : (Integer | untyped) -> (Integer | untyped)
15
- def self.bar : -> (Integer | untyped)
14
+ def foo: (Integer | untyped n) -> (Integer | untyped)
15
+ def self.bar: -> (Integer | untyped)
16
16
  end
@@ -0,0 +1,14 @@
1
+ # I'm unsure how, but this code calls ContainerType::Elements.dummy_elements
2
+ # I should investigate the mechanism, but anyway I record this code
3
+
4
+ class Foo
5
+ define_method(:f) {|**h| }
6
+ end
7
+
8
+ Foo.new.f
9
+
10
+ __END__
11
+ # Classes
12
+ class Foo
13
+ def f: (**untyped) -> nil
14
+ end
@@ -15,6 +15,7 @@ bar
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
- def foo : ((:sym | Integer | String)?) -> Integer
19
- def bar : -> :sym
18
+ private
19
+ def foo: ((:sym | Integer | String)? x) -> Integer
20
+ def bar: -> :sym
20
21
  end
@@ -0,0 +1,15 @@
1
+ def log
2
+ nn = nil
3
+ ary = [1, "str"].to_enum.map do |n|
4
+ nn = n
5
+ n.to_s
6
+ end
7
+ return nn, ary
8
+ end
9
+
10
+ __END__
11
+ # Classes
12
+ class Object
13
+ private
14
+ def log: -> ([(Integer | String)?, Array[String]])
15
+ end
@@ -0,0 +1,17 @@
1
+ class Foo
2
+ def int_and_str_enum
3
+ return enum_for(__method__) unless block_given?
4
+
5
+ yield 1
6
+ yield 2
7
+ yield 3
8
+
9
+ 1.0
10
+ end
11
+ end
12
+
13
+ __END__
14
+ # Classes
15
+ class Foo
16
+ def int_and_str_enum: ?{ (Integer) -> untyped } -> (Enumerator[Integer, untyped] | Float)
17
+ end
@@ -10,6 +10,7 @@ fuga
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def hoge : -> Enumerator[Integer]
14
- def fuga : -> Enumerator[Integer]
13
+ private
14
+ def hoge: -> Enumerator[Integer]
15
+ def fuga: -> Enumerator[Integer]
15
16
  end
@@ -18,5 +18,6 @@ smoke/expandarray1.rb:3: [error] undefined method: Object#unknown
18
18
 
19
19
  # Classes
20
20
  class Object
21
- def foo : -> ([:a, [:b, :c]] | untyped)
21
+ private
22
+ def foo: -> ([:a, [:b, :c]] | untyped)
22
23
  end
@@ -19,5 +19,6 @@ smoke/expandarray2.rb:3: [error] undefined method: Object#unknown
19
19
 
20
20
  # Classes
21
21
  class Object
22
- def foo : -> ([:a, [:b, :c]] | untyped)
22
+ private
23
+ def foo: -> ([:a, [:b, :c]] | untyped)
23
24
  end
@@ -23,6 +23,6 @@ Fib.new.fib_rec(42)
23
23
  __END__
24
24
  # Classes
25
25
  class Fib
26
- def fib_loop : (Integer) -> Integer
27
- def fib_rec : (Integer) -> Integer
26
+ def fib_loop: (Integer x) -> Integer
27
+ def fib_rec: (Integer x) -> Integer
28
28
  end
@@ -0,0 +1,28 @@
1
+ def cond1?
2
+ rand < 0.5
3
+ end
4
+
5
+ def cond2?
6
+ rand < 0.5
7
+ end
8
+
9
+ def foo
10
+ while true
11
+ if cond1? .. cond2?
12
+ return 42
13
+ end
14
+ if cond1? .. cond2?
15
+ return "str"
16
+ end
17
+ end
18
+ return
19
+ end
20
+
21
+ __END__
22
+ # Classes
23
+ class Object
24
+ private
25
+ def cond1?: -> bool
26
+ def cond2?: -> bool
27
+ def foo: -> (Integer | String)
28
+ end
@@ -12,5 +12,6 @@ foo("str")
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
- def foo : (Integer | String) -> (Integer | String)
15
+ private
16
+ def foo: (Integer | String n) -> (Integer | String)
16
17
  end
@@ -0,0 +1,17 @@
1
+ def foo
2
+ if block_given?
3
+ yield 42
4
+ else
5
+ 1.0
6
+ end
7
+ end
8
+
9
+ foo
10
+ foo {|n| n.to_s }
11
+
12
+ __END__
13
+ # Classes
14
+ class Object
15
+ private
16
+ def foo: ?{ (Integer) -> String } -> (Float | String)
17
+ end
@@ -10,5 +10,6 @@ smoke/flow2.rb:5: [error] undefined method: Object#unknown
10
10
 
11
11
  # Classes
12
12
  class Object
13
- def foo : (untyped) -> Integer
13
+ private
14
+ def foo: (untyped x) -> Integer
14
15
  end
@@ -10,5 +10,6 @@ foo(nil)
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def foo : (Integer?) -> Integer?
13
+ private
14
+ def foo: (Integer? x) -> Integer?
14
15
  end
@@ -15,5 +15,6 @@ foo("1")
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
- def foo : (Integer | String) -> Integer
18
+ private
19
+ def foo: (Integer | String x) -> Integer
19
20
  end
@@ -15,5 +15,6 @@ foo("1")
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
- def foo : (Integer | String) -> String
18
+ private
19
+ def foo: (Integer | String x) -> String
19
20
  end
@@ -16,5 +16,6 @@ foo(:sym)
16
16
  __END__
17
17
  # Classes
18
18
  class Object
19
- def foo : (:sym | Integer | String) -> (:sym | Integer | String)
19
+ private
20
+ def foo: (:sym | Integer | String n) -> (:sym | Integer | String)
20
21
  end
@@ -9,5 +9,6 @@ foo(nil)
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def foo : (Integer?) -> Integer
12
+ private
13
+ def foo: (Integer? n) -> Integer
13
14
  end
@@ -0,0 +1,12 @@
1
+ def foo(obj)
2
+ if obj ? true : obj.foo(1)
3
+ "foo"
4
+ end
5
+ end
6
+
7
+ __END__
8
+ # Classes
9
+ class Object
10
+ private
11
+ def foo: (untyped obj) -> String?
12
+ end
@@ -7,5 +7,6 @@ foo
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def foo : -> [Integer]
10
+ private
11
+ def foo: -> [Integer]
11
12
  end
@@ -11,6 +11,7 @@ one_argument(1)
11
11
  __END__
12
12
  # Classes
13
13
  class Object
14
- def no_argument : -> String
15
- def one_argument : (Integer) -> nil
14
+ private
15
+ def no_argument: -> String
16
+ def one_argument: (Integer x) -> nil
16
17
  end
@@ -5,9 +5,10 @@ log($foo)
5
5
 
6
6
  __END__
7
7
  # Global variables
8
- $foo : Integer | String
8
+ $foo: Integer | String
9
9
 
10
10
  # Classes
11
11
  class Object
12
- def log : (Integer | String) -> nil
12
+ private
13
+ def log: (Integer | String x) -> nil
13
14
  end
@@ -6,12 +6,13 @@ end
6
6
 
7
7
  __END__
8
8
  # Errors
9
- smoke/gvar2.rb:1: [warning] inconsistent assignment to RBS-declared global variable
9
+ smoke/gvar2.rb:1: [warning] inconsistent assignment to RBS-declared variable
10
10
 
11
11
  # Global variables
12
- #$foo : String
12
+ #$foo: String
13
13
 
14
14
  # Classes
15
15
  class Object
16
- def log : -> String
16
+ private
17
+ def log: -> String
17
18
  end
@@ -0,0 +1,12 @@
1
+ def foo
2
+ h = {}
3
+ h[1] ||= []
4
+ h
5
+ end
6
+
7
+ __END__
8
+ # Classes
9
+ class Object
10
+ private
11
+ def foo: -> Hash[Integer, Array[bot]]
12
+ end