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