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.
- checksums.yaml +4 -4
 - data/Gemfile.lock +6 -5
 - data/doc/demo.md +1 -1
 - data/doc/todo.md +133 -0
 - data/lib/typeprof/analyzer.rb +177 -76
 - data/lib/typeprof/arguments.rb +2 -0
 - data/lib/typeprof/block.rb +40 -2
 - data/lib/typeprof/builtin.rb +279 -111
 - data/lib/typeprof/cli.rb +5 -0
 - data/lib/typeprof/config.rb +15 -1
 - data/lib/typeprof/container-type.rb +5 -4
 - data/lib/typeprof/export.rb +115 -70
 - data/lib/typeprof/import.rb +71 -33
 - data/lib/typeprof/iseq.rb +46 -11
 - data/lib/typeprof/method.rb +42 -21
 - data/lib/typeprof/type.rb +93 -15
 - data/lib/typeprof/version.rb +1 -1
 - data/smoke/alias.rb +4 -4
 - data/smoke/alias2.rb +6 -4
 - data/smoke/any1.rb +1 -1
 - data/smoke/any2.rb +2 -2
 - data/smoke/arguments.rb +2 -2
 - data/smoke/arguments2.rb +10 -10
 - data/smoke/array-each.rb +1 -1
 - data/smoke/array-each2.rb +1 -1
 - data/smoke/array-each3.rb +1 -1
 - data/smoke/array-ltlt.rb +1 -1
 - data/smoke/array-ltlt2.rb +1 -1
 - data/smoke/array-map.rb +1 -1
 - data/smoke/array-map2.rb +1 -1
 - data/smoke/array-map3.rb +3 -3
 - data/smoke/array-mul.rb +2 -2
 - data/smoke/array-plus1.rb +1 -1
 - data/smoke/array-plus2.rb +3 -2
 - data/smoke/array-pop.rb +1 -1
 - data/smoke/array-range-aref.rb +11 -11
 - data/smoke/array-replace.rb +1 -1
 - data/smoke/array-s-aref.rb +1 -1
 - data/smoke/array1.rb +5 -5
 - data/smoke/array10.rb +1 -1
 - data/smoke/array11.rb +1 -1
 - data/smoke/array12.rb +3 -3
 - data/smoke/array13.rb +4 -4
 - data/smoke/array14.rb +1 -1
 - data/smoke/array15.rb +16 -0
 - data/smoke/array2.rb +3 -3
 - data/smoke/array3.rb +5 -4
 - data/smoke/array4.rb +1 -1
 - data/smoke/array5.rb +1 -1
 - data/smoke/array6.rb +3 -2
 - data/smoke/array7.rb +1 -1
 - data/smoke/array8.rb +1 -1
 - data/smoke/array9.rb +1 -1
 - data/smoke/attr-module.rb +27 -0
 - data/smoke/attr-vis.rb +43 -0
 - data/smoke/attr-vis.rbs +4 -0
 - data/smoke/attr.rb +5 -5
 - data/smoke/autoload.rb +1 -1
 - data/smoke/backtrace.rb +3 -3
 - data/smoke/block-ambiguous.rb +8 -8
 - data/smoke/block-args1-rest.rb +12 -11
 - data/smoke/block-args1.rb +10 -10
 - data/smoke/block-args2-rest.rb +12 -11
 - data/smoke/block-args2.rb +10 -10
 - data/smoke/block-args3-rest.rb +14 -13
 - data/smoke/block-args3.rb +12 -12
 - data/smoke/block-blockarg.rb +4 -4
 - data/smoke/block-kwarg.rb +10 -10
 - data/smoke/block1.rb +1 -1
 - data/smoke/block10.rb +1 -1
 - data/smoke/block11.rb +5 -5
 - data/smoke/block12.rb +2 -2
 - data/smoke/block14.rb +2 -2
 - data/smoke/block2.rb +1 -1
 - data/smoke/block3.rb +3 -3
 - data/smoke/block4.rb +2 -2
 - data/smoke/block5.rb +3 -2
 - data/smoke/block6.rb +2 -2
 - data/smoke/block7.rb +1 -1
 - data/smoke/block8.rb +3 -3
 - data/smoke/block9.rb +1 -1
 - data/smoke/block_given.rb +37 -0
 - data/smoke/blown.rb +1 -1
 - data/smoke/break1.rb +2 -2
 - data/smoke/break2.rb +1 -1
 - data/smoke/break3.rb +13 -0
 - data/smoke/case.rb +1 -1
 - data/smoke/case2.rb +1 -1
 - data/smoke/case3.rb +17 -0
 - data/smoke/class-hierarchy.rb +5 -5
 - data/smoke/class-hierarchy2.rb +3 -3
 - data/smoke/class-new.rb +15 -0
 - data/smoke/class_instance_var.rb +1 -1
 - data/smoke/class_method.rb +2 -2
 - data/smoke/class_method2.rb +2 -2
 - data/smoke/class_method3.rb +2 -2
 - data/smoke/constant1.rb +6 -6
 - data/smoke/constant2.rb +5 -4
 - data/smoke/constant3.rb +1 -1
 - data/smoke/constant4.rb +1 -1
 - data/smoke/context-sensitive1.rb +1 -1
 - data/smoke/cvar.rb +6 -5
 - data/smoke/cvar2.rb +2 -2
 - data/smoke/define_method.rb +2 -2
 - data/smoke/define_method2.rb +2 -2
 - data/smoke/define_method3.rb +14 -0
 - data/smoke/define_method3.rbs +3 -0
 - data/smoke/define_method4.rb +15 -0
 - data/smoke/define_method4.rbs +3 -0
 - data/smoke/define_method5.rb +12 -0
 - data/smoke/define_method6.rb +19 -0
 - data/smoke/demo.rb +6 -6
 - data/smoke/demo1.rb +1 -1
 - data/smoke/demo10.rb +2 -2
 - data/smoke/demo11.rb +1 -1
 - data/smoke/demo2.rb +1 -1
 - data/smoke/demo3.rb +1 -1
 - data/smoke/demo4.rb +3 -3
 - data/smoke/demo5.rb +1 -1
 - data/smoke/demo6.rb +4 -3
 - data/smoke/demo7.rb +1 -1
 - data/smoke/demo8.rb +2 -2
 - data/smoke/demo9.rb +3 -2
 - data/smoke/dummy-execution1.rb +2 -2
 - data/smoke/dummy-execution2.rb +2 -2
 - data/smoke/dummy_element.rb +14 -0
 - data/smoke/ensure1.rb +2 -2
 - data/smoke/enum_for.rb +15 -0
 - data/smoke/enum_for2.rb +17 -0
 - data/smoke/enumerator.rb +2 -2
 - data/smoke/expandarray1.rb +1 -1
 - data/smoke/expandarray2.rb +1 -1
 - data/smoke/fib.rb +2 -2
 - data/smoke/flip-flop.rb +28 -0
 - data/smoke/flow1.rb +1 -1
 - data/smoke/flow10.rb +17 -0
 - data/smoke/flow2.rb +1 -1
 - data/smoke/flow3.rb +1 -1
 - data/smoke/flow5.rb +1 -1
 - data/smoke/flow6.rb +1 -1
 - data/smoke/flow7.rb +1 -1
 - data/smoke/flow8.rb +1 -1
 - data/smoke/flow9.rb +12 -0
 - data/smoke/freeze.rb +1 -1
 - data/smoke/function.rb +2 -2
 - data/smoke/gvar.rb +2 -2
 - data/smoke/gvar2.rb +3 -3
 - data/smoke/hash-bot.rb +12 -0
 - data/smoke/hash-fetch.rb +3 -3
 - data/smoke/hash-merge-bang.rb +1 -1
 - data/smoke/hash1.rb +2 -2
 - data/smoke/hash2.rb +1 -1
 - data/smoke/hash3.rb +1 -1
 - data/smoke/hash4.rb +1 -1
 - data/smoke/hash5.rb +1 -1
 - data/smoke/inheritance.rb +4 -4
 - data/smoke/inheritance2.rb +2 -2
 - data/smoke/initialize.rb +6 -5
 - data/smoke/instance_eval.rb +2 -2
 - data/smoke/instance_eval2.rb +10 -0
 - data/smoke/instance_eval3.rb +25 -0
 - data/smoke/int_times.rb +1 -1
 - data/smoke/integer.rb +1 -1
 - data/smoke/ivar.rb +5 -4
 - data/smoke/ivar2.rb +4 -4
 - data/smoke/ivar3.rb +4 -3
 - data/smoke/ivar4.rb +21 -0
 - data/smoke/kernel-class.rb +1 -1
 - data/smoke/keyword1.rb +1 -1
 - data/smoke/keyword2.rb +1 -1
 - data/smoke/keyword3.rb +1 -1
 - data/smoke/keyword4.rb +1 -1
 - data/smoke/keyword5.rb +1 -1
 - data/smoke/kwrest.rb +3 -2
 - data/smoke/kwsplat1.rb +4 -4
 - data/smoke/kwsplat2.rb +1 -1
 - data/smoke/lit-complex.rb +10 -0
 - data/smoke/lit-encoding.rb +10 -0
 - data/smoke/manual-rbs.rb +5 -4
 - data/smoke/manual-rbs2.rb +1 -1
 - data/smoke/manual-rbs3.rb +3 -2
 - data/smoke/masgn1.rb +1 -1
 - data/smoke/masgn2.rb +2 -2
 - data/smoke/masgn3.rb +1 -1
 - data/smoke/method_in_branch.rb +3 -3
 - data/smoke/method_missing.rb +5 -4
 - data/smoke/module1.rb +2 -2
 - data/smoke/module2.rb +1 -1
 - data/smoke/module3.rb +3 -3
 - data/smoke/module4.rb +3 -2
 - data/smoke/module5.rb +17 -0
 - data/smoke/module6.rb +40 -0
 - data/smoke/module_function1.rb +4 -3
 - data/smoke/module_function2.rb +4 -3
 - data/smoke/multiple-include.rb +2 -1
 - data/smoke/multiple-superclass.rb +1 -1
 - data/smoke/next1.rb +2 -2
 - data/smoke/next2.rb +1 -1
 - data/smoke/object-send1.rb +3 -3
 - data/smoke/object-send2.rb +10 -0
 - data/smoke/object-send3.rb +18 -0
 - data/smoke/once.rb +1 -1
 - data/smoke/optional1.rb +1 -1
 - data/smoke/optional2.rb +1 -1
 - data/smoke/optional3.rb +1 -1
 - data/smoke/parameterizedd-self.rb +3 -2
 - data/smoke/parameterizedd-self2.rb +1 -1
 - data/smoke/pathname1.rb +1 -1
 - data/smoke/pathname2.rb +1 -1
 - data/smoke/pattern-match1.rb +1 -1
 - data/smoke/pattern-match2.rb +1 -1
 - data/smoke/prepend1.rb +33 -0
 - data/smoke/prepend2.rb +10 -0
 - data/smoke/prepend2.rbs +9 -0
 - data/smoke/primitive_method.rb +19 -0
 - data/smoke/printf.rb +2 -2
 - data/smoke/proc.rb +2 -2
 - data/smoke/proc2.rb +1 -1
 - data/smoke/proc3.rb +1 -1
 - data/smoke/proc4.rb +1 -1
 - data/smoke/proc5.rb +19 -0
 - data/smoke/public.rb +38 -0
 - data/smoke/range.rb +1 -1
 - data/smoke/rbs-alias.rb +1 -1
 - data/smoke/rbs-attr.rb +5 -5
 - data/smoke/rbs-attr2.rb +1 -1
 - data/smoke/rbs-extend.rb +1 -1
 - data/smoke/rbs-interface.rb +4 -4
 - data/smoke/rbs-module.rb +26 -0
 - data/smoke/rbs-module.rbs +4 -0
 - data/smoke/rbs-opt-and-rest.rb +10 -0
 - data/smoke/rbs-opt-and-rest.rbs +3 -0
 - data/smoke/rbs-proc1.rb +1 -1
 - data/smoke/rbs-proc2.rb +2 -2
 - data/smoke/rbs-proc3.rb +1 -1
 - data/smoke/rbs-record.rb +2 -2
 - data/smoke/rbs-tyvar.rb +2 -2
 - data/smoke/rbs-tyvar2.rb +2 -2
 - data/smoke/rbs-tyvar3.rb +2 -2
 - data/smoke/rbs-tyvar4.rb +4 -3
 - data/smoke/rbs-tyvar5.rb +1 -1
 - data/smoke/rbs-tyvar6.rb +3 -3
 - data/smoke/rbs-tyvar7.rb +1 -1
 - data/smoke/rbs-vars.rb +6 -6
 - data/smoke/redo1.rb +2 -2
 - data/smoke/redo2.rb +2 -2
 - data/smoke/req-keyword.rb +1 -1
 - data/smoke/rescue1.rb +2 -2
 - data/smoke/rescue2.rb +2 -2
 - data/smoke/rescue3.rb +20 -0
 - data/smoke/rescue4.rb +17 -0
 - data/smoke/respond_to.rb +1 -1
 - data/smoke/rest-farg.rb +1 -1
 - data/smoke/rest1.rb +2 -2
 - data/smoke/rest2.rb +1 -1
 - data/smoke/rest3.rb +6 -6
 - data/smoke/rest4.rb +2 -2
 - data/smoke/rest5.rb +1 -1
 - data/smoke/rest6.rb +1 -1
 - data/smoke/retry1.rb +2 -2
 - data/smoke/return.rb +1 -1
 - data/smoke/simple.rb +12 -0
 - data/smoke/singleton_method.rb +1 -1
 - data/smoke/step.rb +3 -3
 - data/smoke/string-split.rb +1 -1
 - data/smoke/struct-keyword_init.rb +10 -0
 - data/smoke/struct.rb +1 -1
 - data/smoke/struct2.rb +4 -4
 - data/smoke/struct3.rb +2 -2
 - data/smoke/struct4.rb +7 -0
 - data/smoke/struct5.rb +16 -0
 - data/smoke/struct6.rb +15 -0
 - data/smoke/struct7.rb +17 -0
 - data/smoke/stub-keyword.rb +10 -0
 - data/smoke/super1.rb +4 -4
 - data/smoke/super2.rb +1 -1
 - data/smoke/super3.rb +4 -3
 - data/smoke/super4.rb +7 -5
 - data/smoke/super5.rb +6 -4
 - data/smoke/svar1.rb +1 -1
 - data/smoke/symbol-proc-attr.rb +22 -0
 - data/smoke/symbol-proc-attr2.rb +15 -0
 - data/smoke/symbol-proc-bot.rb +13 -0
 - data/smoke/symbol-proc.rb +3 -3
 - data/smoke/tap1.rb +2 -2
 - data/smoke/toplevel.rb +1 -1
 - data/smoke/two-map.rb +2 -2
 - data/smoke/type_var.rb +3 -3
 - data/smoke/typed_method.rb +1 -1
 - data/smoke/uninitialize-var.rb +1 -1
 - data/smoke/union-recv.rb +2 -2
 - data/smoke/user-demo.rb +3 -3
 - data/smoke/wrong-extend.rb +3 -2
 - data/smoke/wrong-include.rb +3 -2
 - data/smoke/wrong-include2.rb +17 -0
 - data/typeprof.gemspec +1 -1
 - metadata +59 -6
 - data/tools/stackprof-wrapper.rb +0 -10
 
    
        data/lib/typeprof/version.rb
    CHANGED
    
    
    
        data/smoke/alias.rb
    CHANGED
    
    | 
         @@ -21,11 +21,11 @@ __END__ 
     | 
|
| 
       21 
21 
     | 
    
         
             
            # Classes
         
     | 
| 
       22 
22 
     | 
    
         
             
            class Object
         
     | 
| 
       23 
23 
     | 
    
         
             
              private
         
     | 
| 
       24 
     | 
    
         
            -
              def foo 
     | 
| 
       25 
     | 
    
         
            -
               
     | 
| 
      
 24 
     | 
    
         
            +
              def foo: (Integer | String x) -> (Integer | String)
         
     | 
| 
      
 25 
     | 
    
         
            +
              alias bar foo
         
     | 
| 
       26 
26 
     | 
    
         
             
            end
         
     | 
| 
       27 
27 
     | 
    
         | 
| 
       28 
28 
     | 
    
         
             
            class Test
         
     | 
| 
       29 
     | 
    
         
            -
              def baz 
     | 
| 
       30 
     | 
    
         
            -
               
     | 
| 
      
 29 
     | 
    
         
            +
              def baz: (Integer | String x) -> (Integer | String)
         
     | 
| 
      
 30 
     | 
    
         
            +
              alias qux baz
         
     | 
| 
       31 
31 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/alias2.rb
    CHANGED
    
    | 
         @@ -12,8 +12,10 @@ Foo[:x, :y, :z] 
     | 
|
| 
       12 
12 
     | 
    
         
             
            __END__
         
     | 
| 
       13 
13 
     | 
    
         
             
            # Classes
         
     | 
| 
       14 
14 
     | 
    
         
             
            class Foo
         
     | 
| 
       15 
     | 
    
         
            -
              @a 
     | 
| 
       16 
     | 
    
         
            -
              @b 
     | 
| 
       17 
     | 
    
         
            -
              @c 
     | 
| 
       18 
     | 
    
         
            -
             
     | 
| 
      
 15 
     | 
    
         
            +
              @a: :x
         
     | 
| 
      
 16 
     | 
    
         
            +
              @b: :y
         
     | 
| 
      
 17 
     | 
    
         
            +
              @c: :z
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              alias self.[] self.new
         
     | 
| 
      
 20 
     | 
    
         
            +
              def initialize: (:x a, :y b, :z c) -> [:x, :y, :z]
         
     | 
| 
       19 
21 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/any1.rb
    CHANGED
    
    
    
        data/smoke/any2.rb
    CHANGED
    
    
    
        data/smoke/arguments.rb
    CHANGED
    
    
    
        data/smoke/arguments2.rb
    CHANGED
    
    | 
         @@ -43,14 +43,14 @@ __END__ 
     | 
|
| 
       43 
43 
     | 
    
         
             
            # Classes
         
     | 
| 
       44 
44 
     | 
    
         
             
            class Object
         
     | 
| 
       45 
45 
     | 
    
         
             
              private
         
     | 
| 
       46 
     | 
    
         
            -
              def f1 
     | 
| 
       47 
     | 
    
         
            -
              def f2 
     | 
| 
       48 
     | 
    
         
            -
              def f3 
     | 
| 
       49 
     | 
    
         
            -
              def f4 
     | 
| 
       50 
     | 
    
         
            -
              def f5 
     | 
| 
       51 
     | 
    
         
            -
              def f6 
     | 
| 
       52 
     | 
    
         
            -
              def f7 
     | 
| 
       53 
     | 
    
         
            -
              def f8 
     | 
| 
       54 
     | 
    
         
            -
              def f9 
     | 
| 
       55 
     | 
    
         
            -
              def f10 
     | 
| 
      
 46 
     | 
    
         
            +
              def f1: -> nil
         
     | 
| 
      
 47 
     | 
    
         
            +
              def f2: (:x x, :y y, :z z) -> nil
         
     | 
| 
      
 48 
     | 
    
         
            +
              def f3: (?String x, ?String y) -> nil
         
     | 
| 
      
 49 
     | 
    
         
            +
              def f4: (*:a | :b | :c r) -> nil
         
     | 
| 
      
 50 
     | 
    
         
            +
              def f5: (:x x, ?String y, :z z) -> nil
         
     | 
| 
      
 51 
     | 
    
         
            +
              def f6: (k: :kk) -> nil
         
     | 
| 
      
 52 
     | 
    
         
            +
              def f7: (?k: Integer) -> nil
         
     | 
| 
      
 53 
     | 
    
         
            +
              def f8: (?k: String) -> nil
         
     | 
| 
      
 54 
     | 
    
         
            +
              def f9: (**:kk) -> nil
         
     | 
| 
      
 55 
     | 
    
         
            +
              def f10: { (Integer) -> nil } -> nil
         
     | 
| 
       56 
56 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array-each.rb
    CHANGED
    
    
    
        data/smoke/array-each2.rb
    CHANGED
    
    
    
        data/smoke/array-each3.rb
    CHANGED
    
    
    
        data/smoke/array-ltlt.rb
    CHANGED
    
    
    
        data/smoke/array-ltlt2.rb
    CHANGED
    
    
    
        data/smoke/array-map.rb
    CHANGED
    
    
    
        data/smoke/array-map2.rb
    CHANGED
    
    
    
        data/smoke/array-map3.rb
    CHANGED
    
    | 
         @@ -17,7 +17,7 @@ __END__ 
     | 
|
| 
       17 
17 
     | 
    
         
             
            # Classes
         
     | 
| 
       18 
18 
     | 
    
         
             
            class Object
         
     | 
| 
       19 
19 
     | 
    
         
             
              private
         
     | 
| 
       20 
     | 
    
         
            -
              def map_test 
     | 
| 
       21 
     | 
    
         
            -
              def map_bang_test 
     | 
| 
       22 
     | 
    
         
            -
              def map_bang_test_known_bug 
     | 
| 
      
 20 
     | 
    
         
            +
              def map_test: ([Integer, Integer, Integer] a) -> Array[String]
         
     | 
| 
      
 21 
     | 
    
         
            +
              def map_bang_test: ([Integer, Integer, Integer] a) -> (Array[Integer | String])
         
     | 
| 
      
 22 
     | 
    
         
            +
              def map_bang_test_known_bug: ([Integer, Integer, Integer] a) -> [Integer, Integer, Integer]
         
     | 
| 
       23 
23 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array-mul.rb
    CHANGED
    
    | 
         @@ -13,6 +13,6 @@ __END__ 
     | 
|
| 
       13 
13 
     | 
    
         
             
            # Classes
         
     | 
| 
       14 
14 
     | 
    
         
             
            class Object
         
     | 
| 
       15 
15 
     | 
    
         
             
              private
         
     | 
| 
       16 
     | 
    
         
            -
              def foo 
     | 
| 
       17 
     | 
    
         
            -
              def bar 
     | 
| 
      
 16 
     | 
    
         
            +
              def foo: ([Integer, Integer, Integer] a) -> Array[Integer]
         
     | 
| 
      
 17 
     | 
    
         
            +
              def bar: ([Integer, Integer, Integer] a) -> String
         
     | 
| 
       18 
18 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array-plus1.rb
    CHANGED
    
    
    
        data/smoke/array-plus2.rb
    CHANGED
    
    
    
        data/smoke/array-pop.rb
    CHANGED
    
    
    
        data/smoke/array-range-aref.rb
    CHANGED
    
    | 
         @@ -57,15 +57,15 @@ __END__ 
     | 
|
| 
       57 
57 
     | 
    
         
             
            # Classes
         
     | 
| 
       58 
58 
     | 
    
         
             
            class Object
         
     | 
| 
       59 
59 
     | 
    
         
             
              private
         
     | 
| 
       60 
     | 
    
         
            -
              def f1 
     | 
| 
       61 
     | 
    
         
            -
              def f2 
     | 
| 
       62 
     | 
    
         
            -
              def f3 
     | 
| 
       63 
     | 
    
         
            -
              def f4 
     | 
| 
       64 
     | 
    
         
            -
              def f5 
     | 
| 
       65 
     | 
    
         
            -
              def f6 
     | 
| 
       66 
     | 
    
         
            -
              def f7 
     | 
| 
       67 
     | 
    
         
            -
              def f8 
     | 
| 
       68 
     | 
    
         
            -
              def f9 
     | 
| 
       69 
     | 
    
         
            -
              def f10 
     | 
| 
       70 
     | 
    
         
            -
              def dispatch 
     | 
| 
      
 60 
     | 
    
         
            +
              def f1: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 61 
     | 
    
         
            +
              def f2: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 62 
     | 
    
         
            +
              def f3: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 63 
     | 
    
         
            +
              def f4: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 64 
     | 
    
         
            +
              def f5: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 65 
     | 
    
         
            +
              def f6: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 66 
     | 
    
         
            +
              def f7: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 67 
     | 
    
         
            +
              def f8: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 68 
     | 
    
         
            +
              def f9: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 69 
     | 
    
         
            +
              def f10: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
      
 70 
     | 
    
         
            +
              def dispatch: (*:a | :b | :c | :d | :e ary) -> (Array[:a | :b | :c | :d | :e])
         
     | 
| 
       71 
71 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array-replace.rb
    CHANGED
    
    
    
        data/smoke/array-s-aref.rb
    CHANGED
    
    
    
        data/smoke/array1.rb
    CHANGED
    
    | 
         @@ -19,9 +19,9 @@ __END__ 
     | 
|
| 
       19 
19 
     | 
    
         
             
            # Classes
         
     | 
| 
       20 
20 
     | 
    
         
             
            class Object
         
     | 
| 
       21 
21 
     | 
    
         
             
              private
         
     | 
| 
       22 
     | 
    
         
            -
              def foo 
     | 
| 
       23 
     | 
    
         
            -
              def bar 
     | 
| 
       24 
     | 
    
         
            -
              def baz 
     | 
| 
       25 
     | 
    
         
            -
              def qux 
     | 
| 
       26 
     | 
    
         
            -
              def quux 
     | 
| 
      
 22 
     | 
    
         
            +
              def foo: ([Integer, String] a) -> Integer
         
     | 
| 
      
 23 
     | 
    
         
            +
              def bar: (Integer n) -> nil
         
     | 
| 
      
 24 
     | 
    
         
            +
              def baz: (String n) -> nil
         
     | 
| 
      
 25 
     | 
    
         
            +
              def qux: (nil n) -> nil
         
     | 
| 
      
 26 
     | 
    
         
            +
              def quux: (Integer | String n) -> nil
         
     | 
| 
       27 
27 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array10.rb
    CHANGED
    
    
    
        data/smoke/array11.rb
    CHANGED
    
    | 
         @@ -10,5 +10,5 @@ __END__ 
     | 
|
| 
       10 
10 
     | 
    
         
             
            # Classes
         
     | 
| 
       11 
11 
     | 
    
         
             
            class Object
         
     | 
| 
       12 
12 
     | 
    
         
             
              private
         
     | 
| 
       13 
     | 
    
         
            -
              def array 
     | 
| 
      
 13 
     | 
    
         
            +
              def array: (Array[Integer] | Hash[Integer, Integer] | String obj) -> (Array[Hash[Integer, Integer] | Integer | String])
         
     | 
| 
       14 
14 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array12.rb
    CHANGED
    
    
    
        data/smoke/array13.rb
    CHANGED
    
    | 
         @@ -24,8 +24,8 @@ __END__ 
     | 
|
| 
       24 
24 
     | 
    
         
             
            # Classes
         
     | 
| 
       25 
25 
     | 
    
         
             
            class Object
         
     | 
| 
       26 
26 
     | 
    
         
             
              private
         
     | 
| 
       27 
     | 
    
         
            -
              def tuple_set 
     | 
| 
       28 
     | 
    
         
            -
              def tuple_get 
     | 
| 
       29 
     | 
    
         
            -
              def seq_set 
     | 
| 
       30 
     | 
    
         
            -
              def seq_get 
     | 
| 
      
 27 
     | 
    
         
            +
              def tuple_set: -> [:a, :b, :z]
         
     | 
| 
      
 28 
     | 
    
         
            +
              def tuple_get: -> :c
         
     | 
| 
      
 29 
     | 
    
         
            +
              def seq_set: -> (Array[:a | :b | :c | :z])
         
     | 
| 
      
 30 
     | 
    
         
            +
              def seq_get: -> (:a | :b | :c)
         
     | 
| 
       31 
31 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array14.rb
    CHANGED
    
    
    
        data/smoke/array15.rb
    ADDED
    
    | 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Foo
         
     | 
| 
      
 2 
     | 
    
         
            +
              def []=(*args)
         
     | 
| 
      
 3 
     | 
    
         
            +
                ary = []
         
     | 
| 
      
 4 
     | 
    
         
            +
                val = args[-1]
         
     | 
| 
      
 5 
     | 
    
         
            +
                ary[*args[0..-2]] = val # TODO: there is room to improve array_aset
         
     | 
| 
      
 6 
     | 
    
         
            +
                ary                     # This should be Array[String]
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            Foo.new[1] = "str"
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            __END__
         
     | 
| 
      
 13 
     | 
    
         
            +
            # Classes
         
     | 
| 
      
 14 
     | 
    
         
            +
            class Foo
         
     | 
| 
      
 15 
     | 
    
         
            +
              def []=: (*Integer | String args) -> Array[bot]
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
    
        data/smoke/array2.rb
    CHANGED
    
    | 
         @@ -22,7 +22,7 @@ __END__ 
     | 
|
| 
       22 
22 
     | 
    
         
             
            # Classes
         
     | 
| 
       23 
23 
     | 
    
         
             
            class Object
         
     | 
| 
       24 
24 
     | 
    
         
             
              private
         
     | 
| 
       25 
     | 
    
         
            -
              def foo 
     | 
| 
       26 
     | 
    
         
            -
              def bar 
     | 
| 
       27 
     | 
    
         
            -
              def log 
     | 
| 
      
 25 
     | 
    
         
            +
              def foo: -> [[String]]
         
     | 
| 
      
 26 
     | 
    
         
            +
              def bar: ([[Integer]] a) -> [[String]]
         
     | 
| 
      
 27 
     | 
    
         
            +
              def log: ([[Integer]] a) -> nil
         
     | 
| 
       28 
28 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array3.rb
    CHANGED
    
    | 
         @@ -18,8 +18,9 @@ Foo.new.bar 
     | 
|
| 
       18 
18 
     | 
    
         
             
            __END__
         
     | 
| 
       19 
19 
     | 
    
         
             
            # Classes
         
     | 
| 
       20 
20 
     | 
    
         
             
            class Foo
         
     | 
| 
       21 
     | 
    
         
            -
              @ary 
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def  
     | 
| 
       24 
     | 
    
         
            -
              def  
     | 
| 
      
 21 
     | 
    
         
            +
              @ary: [Integer, String?, :sym]
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def initialize: -> [Integer, String, :sym]
         
     | 
| 
      
 24 
     | 
    
         
            +
              def foo: -> String?
         
     | 
| 
      
 25 
     | 
    
         
            +
              def bar: -> nil
         
     | 
| 
       25 
26 
     | 
    
         
             
            end
         
     | 
    
        data/smoke/array4.rb
    CHANGED
    
    
    
        data/smoke/array5.rb
    CHANGED
    
    
    
        data/smoke/array6.rb
    CHANGED
    
    
    
        data/smoke/array7.rb
    CHANGED
    
    
    
        data/smoke/array8.rb
    CHANGED
    
    
    
        data/smoke/array9.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Foo
         
     | 
| 
      
 2 
     | 
    
         
            +
              attr_accessor :foo
         
     | 
| 
      
 3 
     | 
    
         
            +
              module_function :foo=, :foo
         
     | 
| 
      
 4 
     | 
    
         
            +
            end
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            class Bar
         
     | 
| 
      
 7 
     | 
    
         
            +
              include Foo
         
     | 
| 
      
 8 
     | 
    
         
            +
            end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            Foo.foo = 42
         
     | 
| 
      
 11 
     | 
    
         
            +
            Bar.new.foo = "str"
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            # XXX: the output may be improved
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            __END__
         
     | 
| 
      
 16 
     | 
    
         
            +
            # Classes
         
     | 
| 
      
 17 
     | 
    
         
            +
            module Foo
         
     | 
| 
      
 18 
     | 
    
         
            +
              self.@foo: Integer
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              attr_accessor foo: untyped
         
     | 
| 
      
 21 
     | 
    
         
            +
              attr_accessor self.foo: Integer
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            class Bar
         
     | 
| 
      
 25 
     | 
    
         
            +
              include Foo
         
     | 
| 
      
 26 
     | 
    
         
            +
              @foo: String
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
    
        data/smoke/attr-vis.rb
    ADDED
    
    | 
         @@ -0,0 +1,43 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Foo
         
     | 
| 
      
 2 
     | 
    
         
            +
              def initialize
         
     | 
| 
      
 3 
     | 
    
         
            +
                @foo = 42
         
     | 
| 
      
 4 
     | 
    
         
            +
              end
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              private
         
     | 
| 
      
 7 
     | 
    
         
            +
              attr_accessor :foo
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              public
         
     | 
| 
      
 10 
     | 
    
         
            +
              def get_foo
         
     | 
| 
      
 11 
     | 
    
         
            +
                foo
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
              def set_foo(arg)
         
     | 
| 
      
 14 
     | 
    
         
            +
                self.foo = arg
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
              def get_bar
         
     | 
| 
      
 17 
     | 
    
         
            +
                bar
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
              def set_bar(arg)
         
     | 
| 
      
 20 
     | 
    
         
            +
                self.bar = arg
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            Foo.new.set_foo("str")
         
     | 
| 
      
 25 
     | 
    
         
            +
            Foo.new.set_bar("str")
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            __END__
         
     | 
| 
      
 28 
     | 
    
         
            +
            # Errors
         
     | 
| 
      
 29 
     | 
    
         
            +
            smoke/attr-vis.rb:20: [warning] inconsistent assignment to RBS-declared variable
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            # Classes
         
     | 
| 
      
 32 
     | 
    
         
            +
            class Foo
         
     | 
| 
      
 33 
     | 
    
         
            +
              def initialize: -> Integer
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              private
         
     | 
| 
      
 36 
     | 
    
         
            +
              attr_accessor foo: Integer | String
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
              public
         
     | 
| 
      
 39 
     | 
    
         
            +
              def get_foo: -> (Integer | String)
         
     | 
| 
      
 40 
     | 
    
         
            +
              def set_foo: (String arg) -> String
         
     | 
| 
      
 41 
     | 
    
         
            +
              def get_bar: -> Integer
         
     | 
| 
      
 42 
     | 
    
         
            +
              def set_bar: (String arg) -> String
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     |