typeprof 0.5.3 → 0.8.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 (208) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +6 -4
  3. data/doc/doc.ja.md +3 -4
  4. data/doc/doc.md +3 -4
  5. data/lib/typeprof/analyzer.rb +248 -166
  6. data/lib/typeprof/arguments.rb +12 -6
  7. data/lib/typeprof/builtin.rb +123 -23
  8. data/lib/typeprof/cli.rb +33 -34
  9. data/lib/typeprof/config.rb +6 -4
  10. data/lib/typeprof/container-type.rb +175 -112
  11. data/lib/typeprof/export.rb +23 -17
  12. data/lib/typeprof/import.rb +58 -53
  13. data/lib/typeprof/method.rb +59 -125
  14. data/lib/typeprof/type.rb +26 -14
  15. data/lib/typeprof/version.rb +1 -1
  16. data/smoke/alias.rb +1 -0
  17. data/smoke/any1.rb +1 -0
  18. data/smoke/any2.rb +1 -0
  19. data/smoke/arguments.rb +1 -0
  20. data/smoke/arguments2.rb +1 -0
  21. data/smoke/array-each.rb +1 -0
  22. data/smoke/array-each2.rb +1 -0
  23. data/smoke/array-each3.rb +2 -1
  24. data/smoke/array-ltlt.rb +1 -0
  25. data/smoke/array-ltlt2.rb +1 -0
  26. data/smoke/array-map.rb +1 -0
  27. data/smoke/array-map2.rb +1 -0
  28. data/smoke/array-map3.rb +1 -0
  29. data/smoke/array-mul.rb +1 -0
  30. data/smoke/array-plus1.rb +1 -0
  31. data/smoke/array-pop.rb +1 -0
  32. data/smoke/array-range-aref.rb +71 -0
  33. data/smoke/array-replace.rb +1 -0
  34. data/smoke/array-s-aref.rb +1 -0
  35. data/smoke/array1.rb +1 -0
  36. data/smoke/array10.rb +1 -0
  37. data/smoke/array11.rb +2 -1
  38. data/smoke/array12.rb +1 -0
  39. data/smoke/array13.rb +1 -0
  40. data/smoke/array14.rb +1 -0
  41. data/smoke/array2.rb +1 -0
  42. data/smoke/array4.rb +1 -0
  43. data/smoke/array5.rb +1 -0
  44. data/smoke/array6.rb +3 -2
  45. data/smoke/array7.rb +1 -0
  46. data/smoke/array8.rb +1 -1
  47. data/smoke/array9.rb +1 -0
  48. data/smoke/autoload.rb +14 -0
  49. data/smoke/backtrace.rb +1 -0
  50. data/smoke/block-ambiguous.rb +1 -0
  51. data/smoke/block-args1-rest.rb +1 -0
  52. data/smoke/block-args1.rb +1 -0
  53. data/smoke/block-args2-rest.rb +1 -0
  54. data/smoke/block-args2.rb +4 -3
  55. data/smoke/block-args3-rest.rb +1 -0
  56. data/smoke/block-args3.rb +5 -4
  57. data/smoke/block-blockarg.rb +2 -1
  58. data/smoke/block-kwarg.rb +1 -0
  59. data/smoke/block1.rb +1 -0
  60. data/smoke/block10.rb +1 -0
  61. data/smoke/block11.rb +1 -0
  62. data/smoke/block12.rb +1 -0
  63. data/smoke/block14.rb +1 -0
  64. data/smoke/block2.rb +1 -0
  65. data/smoke/block4.rb +1 -0
  66. data/smoke/block5.rb +2 -1
  67. data/smoke/block6.rb +1 -0
  68. data/smoke/block7.rb +1 -0
  69. data/smoke/block8.rb +1 -0
  70. data/smoke/block9.rb +1 -0
  71. data/smoke/blown.rb +1 -0
  72. data/smoke/break1.rb +1 -0
  73. data/smoke/break2.rb +1 -0
  74. data/smoke/case.rb +1 -0
  75. data/smoke/case2.rb +1 -0
  76. data/smoke/class_method3.rb +2 -0
  77. data/smoke/constant2.rb +2 -2
  78. data/smoke/constant3.rb +1 -0
  79. data/smoke/constant4.rb +1 -0
  80. data/smoke/context-sensitive1.rb +1 -0
  81. data/smoke/cvar.rb +1 -0
  82. data/smoke/define_method.rb +16 -0
  83. data/smoke/define_method2.rb +18 -0
  84. data/smoke/demo.rb +1 -0
  85. data/smoke/demo1.rb +1 -0
  86. data/smoke/demo10.rb +1 -0
  87. data/smoke/demo11.rb +1 -0
  88. data/smoke/demo2.rb +1 -0
  89. data/smoke/demo3.rb +1 -0
  90. data/smoke/demo5.rb +1 -1
  91. data/smoke/demo7.rb +1 -0
  92. data/smoke/demo8.rb +1 -0
  93. data/smoke/demo9.rb +2 -1
  94. data/smoke/dummy-execution1.rb +1 -0
  95. data/smoke/ensure1.rb +1 -0
  96. data/smoke/enumerator.rb +1 -0
  97. data/smoke/expandarray1.rb +1 -0
  98. data/smoke/expandarray2.rb +1 -0
  99. data/smoke/flow1.rb +1 -0
  100. data/smoke/flow2.rb +1 -0
  101. data/smoke/flow3.rb +1 -0
  102. data/smoke/flow5.rb +1 -0
  103. data/smoke/flow6.rb +1 -0
  104. data/smoke/flow7.rb +1 -0
  105. data/smoke/flow8.rb +1 -0
  106. data/smoke/freeze.rb +1 -0
  107. data/smoke/function.rb +1 -0
  108. data/smoke/gvar.rb +1 -0
  109. data/smoke/gvar2.rb +1 -0
  110. data/smoke/hash-fetch.rb +1 -0
  111. data/smoke/hash-merge-bang.rb +1 -0
  112. data/smoke/hash1.rb +3 -1
  113. data/smoke/hash2.rb +1 -0
  114. data/smoke/hash3.rb +1 -0
  115. data/smoke/hash4.rb +2 -1
  116. data/smoke/inheritance2.rb +2 -2
  117. data/smoke/initialize.rb +1 -0
  118. data/smoke/int_times.rb +1 -0
  119. data/smoke/integer.rb +1 -0
  120. data/smoke/ivar.rb +1 -0
  121. data/smoke/ivar2.rb +1 -1
  122. data/smoke/kernel-class.rb +2 -1
  123. data/smoke/keyword1.rb +1 -0
  124. data/smoke/keyword2.rb +1 -0
  125. data/smoke/keyword3.rb +1 -0
  126. data/smoke/keyword4.rb +1 -0
  127. data/smoke/keyword5.rb +1 -0
  128. data/smoke/kwrest.rb +12 -0
  129. data/smoke/kwrest.rbs +3 -0
  130. data/smoke/kwsplat1.rb +2 -1
  131. data/smoke/kwsplat2.rb +1 -0
  132. data/smoke/manual-rbs.rb +1 -0
  133. data/smoke/manual-rbs2.rb +1 -0
  134. data/smoke/masgn1.rb +1 -0
  135. data/smoke/masgn2.rb +1 -0
  136. data/smoke/masgn3.rb +1 -0
  137. data/smoke/method_in_branch.rb +1 -0
  138. data/smoke/method_missing.rb +28 -0
  139. data/smoke/multiple-superclass.rb +1 -1
  140. data/smoke/next1.rb +1 -0
  141. data/smoke/next2.rb +1 -0
  142. data/smoke/object-send1.rb +1 -0
  143. data/smoke/once.rb +1 -0
  144. data/smoke/optional1.rb +1 -0
  145. data/smoke/optional2.rb +1 -0
  146. data/smoke/optional3.rb +1 -0
  147. data/smoke/parameterizedd-self.rb +3 -2
  148. data/smoke/parameterizedd-self2.rb +15 -0
  149. data/smoke/pathname1.rb +1 -0
  150. data/smoke/pathname2.rb +1 -0
  151. data/smoke/pattern-match1.rb +1 -0
  152. data/smoke/pattern-match2.rb +1 -0
  153. data/smoke/proc.rb +1 -0
  154. data/smoke/proc2.rb +1 -0
  155. data/smoke/proc3.rb +1 -0
  156. data/smoke/proc4.rb +1 -0
  157. data/smoke/range.rb +1 -0
  158. data/smoke/rbs-alias.rb +1 -0
  159. data/smoke/rbs-attr.rb +3 -2
  160. data/smoke/rbs-attr2.rb +11 -0
  161. data/smoke/rbs-attr2.rbs +3 -0
  162. data/smoke/rbs-extend.rb +1 -0
  163. data/smoke/rbs-interface.rb +1 -0
  164. data/smoke/rbs-proc1.rb +1 -0
  165. data/smoke/rbs-proc2.rb +1 -0
  166. data/smoke/rbs-proc3.rb +1 -0
  167. data/smoke/rbs-record.rb +1 -0
  168. data/smoke/rbs-tyvar.rb +1 -0
  169. data/smoke/rbs-tyvar2.rb +1 -0
  170. data/smoke/rbs-tyvar3.rb +1 -0
  171. data/smoke/rbs-tyvar5.rb +1 -0
  172. data/smoke/rbs-tyvar6.rb +18 -0
  173. data/smoke/rbs-tyvar6.rbs +12 -0
  174. data/smoke/rbs-tyvar7.rb +12 -0
  175. data/smoke/rbs-tyvar7.rbs +7 -0
  176. data/smoke/rbs-vars.rb +1 -2
  177. data/smoke/redo1.rb +1 -0
  178. data/smoke/redo2.rb +1 -0
  179. data/smoke/req-keyword.rb +1 -0
  180. data/smoke/rescue1.rb +1 -0
  181. data/smoke/rescue2.rb +1 -0
  182. data/smoke/respond_to.rb +1 -0
  183. data/smoke/rest-farg.rb +1 -0
  184. data/smoke/rest1.rb +1 -0
  185. data/smoke/rest2.rb +1 -0
  186. data/smoke/rest3.rb +1 -0
  187. data/smoke/rest4.rb +1 -0
  188. data/smoke/rest5.rb +1 -0
  189. data/smoke/rest6.rb +1 -0
  190. data/smoke/retry1.rb +1 -0
  191. data/smoke/return.rb +1 -0
  192. data/smoke/step.rb +1 -0
  193. data/smoke/string-split.rb +1 -0
  194. data/smoke/struct.rb +2 -2
  195. data/smoke/struct2.rb +1 -0
  196. data/smoke/super1.rb +1 -0
  197. data/smoke/super4.rb +43 -0
  198. data/smoke/super5.rb +36 -0
  199. data/smoke/svar1.rb +1 -0
  200. data/smoke/symbol-proc.rb +1 -0
  201. data/smoke/tap1.rb +1 -0
  202. data/smoke/toplevel.rb +1 -0
  203. data/smoke/two-map.rb +1 -0
  204. data/smoke/type_var.rb +1 -0
  205. data/smoke/typed_method.rb +1 -0
  206. data/smoke/uninitialize-var.rb +1 -0
  207. data/smoke/union-recv.rb +2 -2
  208. metadata +18 -2
@@ -12,5 +12,6 @@ end
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
+ private
15
16
  def foo : { -> (Integer | String) } -> (Integer | String)
16
17
  end
@@ -16,6 +16,7 @@ dispatch(:bar)
16
16
  __END__
17
17
  # Classes
18
18
  class Object
19
+ private
19
20
  def foo : (Integer) -> Integer
20
21
  def bar : (Integer) -> Integer
21
22
  def dispatch : (:bar | :foo) -> Integer
@@ -8,5 +8,6 @@ foo
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
+ private
11
12
  def foo : -> [Regexp, Integer?]
12
13
  end
@@ -9,5 +9,6 @@ foo("A", "B", "C", "Z")
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
+ private
12
13
  def foo : (String, ?Integer | String, ?Integer | String, String) -> ([String, Integer | String, Integer | String, String])
13
14
  end
@@ -11,5 +11,6 @@ foo("A", "B", "C", "D", "E", "Z")
11
11
  __END__
12
12
  # Classes
13
13
  class Object
14
+ private
14
15
  def foo : (String, ?Integer | String, ?Integer | String, *String, String) -> ([String, Integer | String, Integer | String, Array[String], String])
15
16
  end
@@ -6,5 +6,6 @@ foo("str")
6
6
  __END__
7
7
  # Classes
8
8
  class Object
9
+ private
9
10
  def foo : (?Integer | String) -> nil
10
11
  end
@@ -13,6 +13,7 @@ bar([])
13
13
  __END__
14
14
  # Classes
15
15
  class Object
16
- def foo : -> []
17
- def bar : ([]) -> []
16
+ def foo : -> Array[bot]
17
+ private
18
+ def bar : (Array[bot]) -> Array[bot]
18
19
  end
@@ -0,0 +1,15 @@
1
+ class Object
2
+ def foo
3
+ # The receiver is considered as an empty array
4
+ self[0]
5
+ end
6
+ end
7
+
8
+ # The elements are dropped when it is passed as a receiver (to avoid state explosion)
9
+ [0].foo
10
+
11
+ __END__
12
+ # Classes
13
+ class Object
14
+ def foo : -> nil
15
+ end
@@ -9,5 +9,6 @@ foo
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
+ private
12
13
  def foo : -> Pathname
13
14
  end
@@ -9,5 +9,6 @@ foo
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
+ private
12
13
  def foo : -> Pathname
13
14
  end
@@ -19,5 +19,6 @@ smoke/pattern-match1.rb:5: [error] undefined method: nil#[]
19
19
 
20
20
  # Classes
21
21
  class Object
22
+ private
22
23
  def foo : -> ([:a | untyped, :b | untyped])
23
24
  end
@@ -11,5 +11,6 @@ foo
11
11
  __END__
12
12
  # Classes
13
13
  class Object
14
+ private
14
15
  def foo : -> [:A, :B]
15
16
  end
@@ -14,6 +14,7 @@ bar
14
14
  __END__
15
15
  # Classes
16
16
  class Object
17
+ private
17
18
  def foo : -> Integer
18
19
  def bar : -> String
19
20
  end
@@ -12,5 +12,6 @@ foo
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
+ private
15
16
  def foo : -> Integer
16
17
  end
@@ -10,5 +10,6 @@ foo
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
+ private
13
14
  def foo : -> [Integer]
14
15
  end
@@ -7,5 +7,6 @@ foo(-> x { "str" })
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
+ private
10
11
  def foo : (^(Integer) -> String) -> String
11
12
  end
@@ -9,5 +9,6 @@ foo(1, 2)
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
+ private
12
13
  def foo : (Integer, Integer) -> Range
13
14
  end
@@ -5,5 +5,6 @@ end
5
5
  __END__
6
6
  # Classes
7
7
  class Object
8
+ private
8
9
  def log : -> Integer
9
10
  end
@@ -15,11 +15,12 @@ end
15
15
 
16
16
  __END__
17
17
  # Errors
18
- smoke/rbs-attr.rb:11: [error] failed to resolve overload: Foo#writer_example=
19
- smoke/rbs-attr.rb:13: [error] failed to resolve overload: Foo#accessor_example=
18
+ smoke/rbs-attr.rb:11: [warning] inconsistent assignment to RBS-declared global variable
19
+ smoke/rbs-attr.rb:13: [warning] inconsistent assignment to RBS-declared global variable
20
20
 
21
21
  # Classes
22
22
  class Object
23
+ private
23
24
  def read_test_1 : -> Integer
24
25
  def read_test_2 : -> Integer
25
26
  def write_test : -> String
@@ -0,0 +1,11 @@
1
+ class Foo
2
+ def foo
3
+ @name
4
+ end
5
+ end
6
+
7
+ __END__
8
+ # Classes
9
+ class Foo
10
+ def foo : -> String
11
+ end
@@ -0,0 +1,3 @@
1
+ class Foo
2
+ attr_reader name: String
3
+ end
@@ -5,5 +5,6 @@ end
5
5
  __END__
6
6
  # Classes
7
7
  class Object
8
+ private
8
9
  def log : -> Integer
9
10
  end
@@ -17,6 +17,7 @@ end
17
17
  __END__
18
18
  # Classes
19
19
  class Object
20
+ private
20
21
  def get_module : -> M
21
22
  def get_module_foo : -> Integer
22
23
  def get_interface : -> _I
@@ -5,5 +5,6 @@ end
5
5
  __END__
6
6
  # Classes
7
7
  class Object
8
+ private
8
9
  def log : -> Integer
9
10
  end
@@ -15,6 +15,7 @@ log2
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
+ private
18
19
  def log1 : (untyped) -> untyped
19
20
  def log2 : -> String
20
21
  end
@@ -9,5 +9,6 @@ log(foo)
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
+ private
12
13
  def log : (Foo[Integer]) -> Integer
13
14
  end
@@ -12,6 +12,7 @@ end
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
+ private
15
16
  def test_foo : -> [Integer, String]
16
17
  def test_bar : -> Integer
17
18
  end
@@ -13,6 +13,7 @@ bar
13
13
  __END__
14
14
  # Classes
15
15
  class Object
16
+ private
16
17
  def foo : -> (Cell[Integer | String])
17
18
  def bar : -> (Integer | String)
18
19
  end
@@ -15,6 +15,7 @@ bar
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
+ private
18
19
  def foo : -> (Cell[:a1 | :a2, :b1 | :b2, :c1 | :c2])
19
20
  def bar : -> (:b1 | :b2)
20
21
  end
@@ -12,6 +12,7 @@ end
12
12
  __END__
13
13
  # Classes
14
14
  class Object
15
+ private
15
16
  def foo : -> Cell[String]
16
17
  def bar : -> (Cell[Integer | String])
17
18
  end
@@ -8,5 +8,6 @@ end
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
+ private
11
12
  def foo : -> Cell[Foo[:a, :b]]
12
13
  end
@@ -0,0 +1,18 @@
1
+ def log1(obj) end
2
+ def log2(obj) end
3
+ def log3(obj) end
4
+
5
+ obj = Bar.new("str")
6
+
7
+ log1(obj)
8
+ log2(obj.test_superclass)
9
+ log3(obj.test_module)
10
+
11
+ __END__
12
+ # Classes
13
+ class Object
14
+ private
15
+ def log1 : (Bar[String]) -> nil
16
+ def log2 : (Array[String]) -> nil
17
+ def log3 : (Integer) -> nil
18
+ end
@@ -0,0 +1,12 @@
1
+ class Foo[X]
2
+ def test_superclass: -> X
3
+ end
4
+
5
+ module M[X]
6
+ def test_module: -> X
7
+ end
8
+
9
+ class Bar[X] < Foo[Array[X]]
10
+ def initialize: (X) -> void
11
+ include M[Integer]
12
+ end
@@ -0,0 +1,12 @@
1
+ def foo
2
+ bar = Bar.new(1)
3
+ bar.set(["str"]) # TODO: This should update Bar[Integer] to Bar[Integer | String]
4
+ bar
5
+ end
6
+
7
+ __END__
8
+ # Classes
9
+ class Object
10
+ private
11
+ def foo : -> Bar[Integer]
12
+ end
@@ -0,0 +1,7 @@
1
+ class Foo[X]
2
+ def set: (X) -> void
3
+ end
4
+
5
+ class Bar[X] < Foo[Integer]
6
+ def initialize: (X) -> void
7
+ end
@@ -26,12 +26,11 @@ __END__
26
26
 
27
27
  # Classes
28
28
  class Object
29
+ private
29
30
  def gvar_test : -> :gvar_example
30
31
  end
31
32
 
32
33
  class Foo
33
- # @ivar : :ivar_example
34
- # @@cvar : :cvar_example
35
34
  def const_test : -> :const_example
36
35
  def ivar_test : -> :ivar_example
37
36
  def cvar_test : -> :cvar_example
@@ -16,6 +16,7 @@ end
16
16
  __END__
17
17
  # Classes
18
18
  class Object
19
+ private
19
20
  def bar : (Integer | String) -> (Integer | String)
20
21
  def foo : { (Integer) -> String } -> String
21
22
  end
@@ -17,6 +17,7 @@ end
17
17
  __END__
18
18
  # Classes
19
19
  class Object
20
+ private
20
21
  def bar : (Integer | String) -> (Integer | String)
21
22
  def foo : { (Integer) -> (Integer | String) } -> (Integer | String)
22
23
  end
@@ -8,5 +8,6 @@ foo(a:1)
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
+ private
11
12
  def foo : (a: Integer) -> Integer
12
13
  end
@@ -15,6 +15,7 @@ bar
15
15
  __END__
16
16
  # Classes
17
17
  class Object
18
+ private
18
19
  def foo : ((:sym | Integer | String)?) -> Integer
19
20
  def bar : -> (:sym | Integer)
20
21
  end
@@ -17,6 +17,7 @@ bar
17
17
  __END__
18
18
  # Classes
19
19
  class Object
20
+ private
20
21
  def foo : ((:sym | Integer | String)?) -> Integer
21
22
  def bar : -> Integer
22
23
  end
@@ -18,5 +18,6 @@ foo(true)
18
18
  __END__
19
19
  # Classes
20
20
  class Object
21
+ private
21
22
  def foo : (Integer | String | true) -> (Integer | String | bool)
22
23
  end
@@ -6,5 +6,6 @@ end
6
6
  __END__
7
7
  # Classes
8
8
  class Object
9
+ private
9
10
  def foo : -> bool
10
11
  end
@@ -20,6 +20,7 @@ bar("A", "B", "C", "D", "E", "Z")
20
20
  __END__
21
21
  # Classes
22
22
  class Object
23
+ private
23
24
  def foo : (:a | Integer | String, *Integer | String, :z | Integer | String) -> (Array[Integer | String])
24
25
  def bar : (String, ?Integer | String, *String, String) -> Array[String]
25
26
  end
@@ -26,5 +26,6 @@ foo(*a)
26
26
  __END__
27
27
  # Classes
28
28
  class Object
29
+ private
29
30
  def foo : (Integer, String, :s) -> [Integer, String, :s]
30
31
  end
@@ -27,6 +27,7 @@ grault(*string_array)
27
27
  __END__
28
28
  # Classes
29
29
  class Object
30
+ private
30
31
  def foo : (*String) -> nil
31
32
  def bar : (*Integer | String) -> nil
32
33
  def baz : (String, *String) -> nil
@@ -13,6 +13,7 @@ bar(1, *a, :s)
13
13
  __END__
14
14
  # Classes
15
15
  class Object
16
+ private
16
17
  def foo : (*:s | Integer | String) -> nil
17
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
+ private
9
10
  def foo : (*Integer) -> [Integer]
10
11
  end