typeprof 0.4.2 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  module TypeProf
2
- VERSION = "0.4.2"
2
+ VERSION = "0.5.0"
3
3
  end
@@ -50,6 +50,6 @@ class Object
50
50
  def f6 : (k: :kk) -> nil
51
51
  def f7 : (?k: Integer) -> nil
52
52
  def f8 : (?k: String) -> nil
53
- def f9 : (**{:k=>:kk}) -> nil
53
+ def f9 : (**{k: :kk}) -> nil
54
54
  def f10 : { (Integer) -> nil } -> nil
55
55
  end
@@ -46,7 +46,7 @@ class Object
46
46
  def f3 : { -> nil } -> nil
47
47
  def log3 : (Integer | String) -> nil
48
48
  def f4 : { -> nil } -> nil
49
- def log4 : ({:k=>Integer}) -> nil
49
+ def log4 : ({k: Integer}) -> nil
50
50
  def f5 : { -> nil } -> untyped
51
51
  def f6 : { -> nil } -> untyped
52
52
  end
@@ -10,5 +10,5 @@ foo([1], ["str"])
10
10
  __END__
11
11
  # Classes
12
12
  class Object
13
- def foo : ([Integer], [String]) -> [Integer]
13
+ def foo : ([Integer], [String]) -> ([Integer | String])
14
14
  end
@@ -21,7 +21,7 @@ baz(h)
21
21
  __END__
22
22
  # Classes
23
23
  class Object
24
- def foo : ({:a=>:A, :b=>:B}) -> (:A | :B)
25
- def bar : ({:a=>:A, :b=>:B}) -> (:A | :B | :C)
26
- def baz : ({:a=>:A, :b=>:B}) -> ([:A | :B | :C, (:a | :b)?])
24
+ def foo : ({a: :A, b: :B}) -> (:A | :B)
25
+ def bar : ({a: :A, b: :B}) -> (:A | :B | :C)
26
+ def baz : ({a: :A, b: :B}) -> ([:A | :B | :C, (:a | :b)?])
27
27
  end
@@ -0,0 +1,11 @@
1
+ def foo
2
+ h = { a: 42 }
3
+ h0 = h.merge!({ b: "str" })
4
+ return h0, h
5
+ end
6
+
7
+ __END__
8
+ # Classes
9
+ class Object
10
+ def foo : -> ([{b: Integer | String, a: Integer | String}, {a: Integer}])
11
+ end
@@ -13,6 +13,6 @@ bar
13
13
  __END__
14
14
  # Classes
15
15
  class Object
16
- def foo : -> {:int=>Integer, :str=>String}
16
+ def foo : -> {int: Integer, str: String}
17
17
  def bar : -> ({Integer=>Integer | String, String=>String})
18
18
  end
@@ -9,5 +9,5 @@ foo
9
9
  __END__
10
10
  # Classes
11
11
  class Object
12
- def foo : -> {:int=>Integer, :str=>String}
12
+ def foo : -> {int: Integer, str: String}
13
13
  end
@@ -6,5 +6,5 @@ foo
6
6
  __END__
7
7
  # Classes
8
8
  class Object
9
- def foo : -> Hash[bot, bot]
9
+ def foo : -> {}
10
10
  end
@@ -24,7 +24,7 @@ __END__
24
24
  # Classes
25
25
  class Foo
26
26
  attr_reader array : Array[:sym | Integer | String]
27
- attr_reader hash : {:a=>Integer, :b=>String, :c=>:sym}
27
+ attr_reader hash : {a: Integer, b: String, c: :sym}
28
28
  def initialize : -> {}
29
29
  def set : -> :sym
30
30
  end
@@ -7,5 +7,5 @@ foo(n: 42, s: "str")
7
7
  __END__
8
8
  # Classes
9
9
  class Object
10
- def foo : (**{:n=>Integer, :s=>String}) -> {:n=>Integer, :s=>String}
10
+ def foo : (**{n: Integer, s: String}) -> {n: Integer, s: String}
11
11
  end
@@ -37,6 +37,6 @@ smoke/kwsplat1.rb:30: [error] undefined method: Object#any
37
37
  class Object
38
38
  def foo : (k: Integer) -> nil
39
39
  def bar : (int: Integer, str: String) -> nil
40
- def baz : (**{:int=>Integer, :str=>String}) -> nil
40
+ def baz : (**{int: Integer, str: String}) -> nil
41
41
  def qux : (**{untyped=>untyped}) -> nil
42
42
  end
@@ -8,5 +8,5 @@ foo(*a, **h)
8
8
  __END__
9
9
  # Classes
10
10
  class Object
11
- def foo : (*Integer | {:k=>Integer}, k: Integer) -> nil
11
+ def foo : (*Integer | {k: Integer}, k: Integer) -> nil
12
12
  end
@@ -0,0 +1,23 @@
1
+ # RUBY_VERSION >= 3.0
2
+
3
+ def foo
4
+ case [:a, :b, :c]
5
+ in [a, b, :c]
6
+ # Due to very subtle detail of bytecode, the variables "a" and "b" could be nil
7
+ return a, b
8
+ end
9
+ end
10
+
11
+ foo
12
+
13
+ __END__
14
+ # Errors
15
+ smoke/pattern-match1.rb:5: [error] undefined method: nil#length
16
+ smoke/pattern-match1.rb:5: [error] undefined method: nil#[]
17
+ smoke/pattern-match1.rb:5: [error] undefined method: nil#[]
18
+ smoke/pattern-match1.rb:5: [error] undefined method: nil#[]
19
+
20
+ # Classes
21
+ class Object
22
+ def foo : -> ([:a | untyped, :b | untyped])
23
+ end
@@ -0,0 +1,15 @@
1
+ # RUBY_VERSION >= 3.0
2
+
3
+ def foo
4
+ case { a: :A, b: :B, c: :C }
5
+ in { a:, b: bb, c: :C }
6
+ return a, bb
7
+ end
8
+ end
9
+
10
+ foo
11
+ __END__
12
+ # Classes
13
+ class Object
14
+ def foo : -> [:A, :B]
15
+ end
@@ -1,25 +1,17 @@
1
- class StringFoo
2
- def initialize
3
- @foo = Foo.new
4
- end
5
-
6
- def set
7
- @foo.set("42")
8
- end
9
-
10
- def get
11
- @foo.get
12
- end
1
+ def foo
2
+ cell = Cell.new(42)
3
+ cell.map {|s| (s + 1).to_s }
13
4
  end
14
5
 
15
- StringFoo.new.set
16
- StringFoo.new.get
6
+ def bar
7
+ cell = Cell.new(42)
8
+ cell.map! {|s| (s + 1).to_s }
9
+ cell
10
+ end
17
11
 
18
12
  __END__
19
13
  # Classes
20
- class StringFoo
21
- @foo : Foo[String] | Foo[bot]
22
- def initialize : -> Foo[bot]
23
- def set : -> void
24
- def get : -> String
14
+ class Object
15
+ def foo : -> Cell[String]
16
+ def bar : -> (Cell[Integer | String])
25
17
  end
@@ -1,4 +1,5 @@
1
- class Foo[X]
2
- def set: (X) -> void
3
- def get: -> X
1
+ class Cell[T]
2
+ def initialize : (T) -> void
3
+ def map: [A] { (T) -> A } -> Cell[A]
4
+ def map!: { (T) -> T } -> self
4
5
  end
@@ -0,0 +1,36 @@
1
+ # This code is created by simplifying matrix.rb.
2
+ # The issue occurs when `Array.new` creates a cell-type container,
3
+ # so this test will be obsolete, but keep it just for case of regression.
4
+ #
5
+ # https://github.com/ruby/typeprof/issues/14
6
+
7
+ class Foo
8
+ def initialize(ivar)
9
+ @ivar = ivar
10
+ end
11
+
12
+ def foo(n)
13
+ @ivar.each_with_index { }
14
+ nil
15
+ end
16
+ end
17
+
18
+ Foo.new([])
19
+
20
+ rows = Array.new(1) do |i|
21
+ Array.new(1) do |j|
22
+ "str"
23
+ end
24
+ end
25
+ obj = Foo.new(rows)
26
+
27
+ obj.foo(:a)
28
+ obj.foo(:b)
29
+
30
+ __END__
31
+ # Classes
32
+ class Foo
33
+ @ivar : Array[Array[String]]
34
+ def initialize : (Array[Array[String]]) -> Array[Array[String]]
35
+ def foo : (:a | :b) -> nil
36
+ end
@@ -0,0 +1,12 @@
1
+ def foo
2
+ cell = Cell.new
3
+ cell.set { Foo.new(:a, :b) }
4
+ cell.dummy { }
5
+ cell
6
+ end
7
+
8
+ __END__
9
+ # Classes
10
+ class Object
11
+ def foo : -> Cell[Foo[:a, :b]]
12
+ end
@@ -0,0 +1,8 @@
1
+ class Cell[X]
2
+ def set: { -> X } -> self
3
+ def dummy: { -> void } -> self
4
+ end
5
+
6
+ class Foo[X, Y]
7
+ def initialize: (X, Y) -> void
8
+ end
@@ -0,0 +1,12 @@
1
+ def foo
2
+ x = begin
3
+ return x
4
+ 1
5
+ end
6
+ end
7
+
8
+ __END__
9
+ # Classes
10
+ class Object
11
+ def foo : -> nil
12
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typeprof
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.2
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yusuke Endoh
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-06 00:00:00.000000000 Z
11
+ date: 2020-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbs
@@ -179,6 +179,7 @@ files:
179
179
  - smoke/gvar2.rb
180
180
  - smoke/gvar2.rbs
181
181
  - smoke/hash-fetch.rb
182
+ - smoke/hash-merge-bang.rb
182
183
  - smoke/hash1.rb
183
184
  - smoke/hash2.rb
184
185
  - smoke/hash3.rb
@@ -230,6 +231,8 @@ files:
230
231
  - smoke/parameterizedd-self.rb
231
232
  - smoke/pathname1.rb
232
233
  - smoke/pathname2.rb
234
+ - smoke/pattern-match1.rb
235
+ - smoke/pattern-match2.rb
233
236
  - smoke/printf.rb
234
237
  - smoke/proc.rb
235
238
  - smoke/proc2.rb
@@ -258,6 +261,9 @@ files:
258
261
  - smoke/rbs-tyvar2.rbs
259
262
  - smoke/rbs-tyvar3.rb
260
263
  - smoke/rbs-tyvar3.rbs
264
+ - smoke/rbs-tyvar4.rb
265
+ - smoke/rbs-tyvar5.rb
266
+ - smoke/rbs-tyvar5.rbs
261
267
  - smoke/rbs-vars.rb
262
268
  - smoke/rbs-vars.rbs
263
269
  - smoke/redo1.rb
@@ -293,6 +299,7 @@ files:
293
299
  - smoke/two-map.rb
294
300
  - smoke/type_var.rb
295
301
  - smoke/typed_method.rb
302
+ - smoke/uninitialize-var.rb
296
303
  - smoke/union-recv.rb
297
304
  - smoke/user-demo.rb
298
305
  - smoke/wrong-extend.rb