typeprof 0.5.4 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +7 -5
- data/doc/doc.ja.md +3 -4
- data/doc/doc.md +3 -4
- data/lib/typeprof/analyzer.rb +308 -171
- data/lib/typeprof/arguments.rb +14 -6
- data/lib/typeprof/block.rb +6 -2
- data/lib/typeprof/builtin.rb +230 -67
- data/lib/typeprof/cli.rb +33 -34
- data/lib/typeprof/config.rb +6 -4
- data/lib/typeprof/container-type.rb +159 -104
- data/lib/typeprof/export.rb +28 -22
- data/lib/typeprof/import.rb +70 -53
- data/lib/typeprof/iseq.rb +23 -7
- data/lib/typeprof/method.rb +71 -138
- data/lib/typeprof/type.rb +73 -15
- data/lib/typeprof/version.rb +1 -1
- data/smoke/alias.rb +5 -4
- data/smoke/alias2.rb +4 -4
- data/smoke/any1.rb +2 -1
- data/smoke/any2.rb +3 -2
- data/smoke/arguments.rb +3 -2
- data/smoke/arguments2.rb +11 -10
- data/smoke/array-each.rb +2 -1
- data/smoke/array-each2.rb +2 -1
- data/smoke/array-each3.rb +2 -1
- data/smoke/array-ltlt.rb +2 -1
- data/smoke/array-ltlt2.rb +2 -1
- data/smoke/array-map.rb +2 -1
- data/smoke/array-map2.rb +2 -1
- data/smoke/array-map3.rb +4 -3
- data/smoke/array-mul.rb +3 -2
- data/smoke/array-plus1.rb +2 -1
- data/smoke/array-plus2.rb +2 -2
- data/smoke/array-pop.rb +2 -1
- data/smoke/array-range-aref.rb +71 -0
- data/smoke/array-replace.rb +2 -1
- data/smoke/array-s-aref.rb +2 -1
- data/smoke/array1.rb +6 -5
- data/smoke/array10.rb +2 -1
- data/smoke/array11.rb +2 -1
- data/smoke/array12.rb +4 -3
- data/smoke/array13.rb +5 -4
- data/smoke/array14.rb +2 -1
- data/smoke/array15.rb +16 -0
- data/smoke/array2.rb +4 -3
- data/smoke/array3.rb +4 -4
- data/smoke/array4.rb +2 -1
- data/smoke/array5.rb +2 -1
- data/smoke/array6.rb +3 -2
- data/smoke/array7.rb +2 -1
- data/smoke/array8.rb +1 -1
- data/smoke/array9.rb +2 -1
- data/smoke/attr-module.rb +26 -0
- data/smoke/attr.rb +5 -5
- data/smoke/autoload.rb +14 -0
- data/smoke/backtrace.rb +4 -3
- data/smoke/block-ambiguous.rb +9 -8
- data/smoke/block-args1-rest.rb +12 -11
- data/smoke/block-args1.rb +11 -10
- data/smoke/block-args2-rest.rb +12 -11
- data/smoke/block-args2.rb +11 -10
- data/smoke/block-args3-rest.rb +14 -13
- data/smoke/block-args3.rb +13 -12
- data/smoke/block-blockarg.rb +5 -4
- data/smoke/block-kwarg.rb +11 -10
- data/smoke/block1.rb +2 -1
- data/smoke/block10.rb +2 -1
- data/smoke/block11.rb +6 -5
- data/smoke/block12.rb +3 -2
- data/smoke/block14.rb +3 -2
- data/smoke/block2.rb +2 -1
- data/smoke/block3.rb +3 -3
- data/smoke/block4.rb +3 -2
- data/smoke/block5.rb +3 -2
- data/smoke/block6.rb +3 -2
- data/smoke/block7.rb +2 -1
- data/smoke/block8.rb +4 -3
- data/smoke/block9.rb +2 -1
- data/smoke/blown.rb +2 -1
- data/smoke/break1.rb +3 -2
- data/smoke/break2.rb +2 -1
- data/smoke/break3.rb +13 -0
- data/smoke/case.rb +2 -1
- data/smoke/case2.rb +2 -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 +4 -2
- data/smoke/constant1.rb +6 -6
- data/smoke/constant2.rb +5 -4
- data/smoke/constant3.rb +2 -1
- data/smoke/constant4.rb +2 -1
- data/smoke/context-sensitive1.rb +2 -1
- data/smoke/cvar.rb +6 -5
- data/smoke/cvar2.rb +2 -2
- data/smoke/define_method.rb +16 -0
- data/smoke/define_method2.rb +18 -0
- data/smoke/define_method3.rb +13 -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/demo.rb +7 -6
- data/smoke/demo1.rb +2 -1
- data/smoke/demo10.rb +3 -2
- data/smoke/demo11.rb +2 -1
- data/smoke/demo2.rb +2 -1
- data/smoke/demo3.rb +2 -1
- data/smoke/demo4.rb +3 -3
- data/smoke/demo5.rb +1 -1
- data/smoke/demo6.rb +3 -3
- data/smoke/demo7.rb +2 -1
- data/smoke/demo8.rb +3 -2
- data/smoke/demo9.rb +3 -2
- data/smoke/dummy-execution1.rb +3 -2
- data/smoke/dummy-execution2.rb +2 -2
- data/smoke/dummy_element.rb +14 -0
- data/smoke/ensure1.rb +3 -2
- data/smoke/enumerator.rb +3 -2
- data/smoke/expandarray1.rb +2 -1
- data/smoke/expandarray2.rb +2 -1
- data/smoke/fib.rb +2 -2
- data/smoke/flip-flop.rb +28 -0
- data/smoke/flow1.rb +2 -1
- data/smoke/flow2.rb +2 -1
- data/smoke/flow3.rb +2 -1
- data/smoke/flow5.rb +2 -1
- data/smoke/flow6.rb +2 -1
- data/smoke/flow7.rb +2 -1
- data/smoke/flow8.rb +2 -1
- data/smoke/flow9.rb +12 -0
- data/smoke/freeze.rb +2 -1
- data/smoke/function.rb +3 -2
- data/smoke/gvar.rb +3 -2
- data/smoke/gvar2.rb +3 -2
- data/smoke/hash-bot.rb +12 -0
- data/smoke/hash-fetch.rb +4 -3
- data/smoke/hash-merge-bang.rb +2 -1
- data/smoke/hash1.rb +3 -2
- data/smoke/hash2.rb +2 -1
- data/smoke/hash3.rb +2 -1
- data/smoke/hash4.rb +2 -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 +2 -1
- data/smoke/integer.rb +2 -1
- data/smoke/ivar.rb +5 -4
- data/smoke/ivar2.rb +4 -4
- data/smoke/ivar3.rb +2 -2
- data/smoke/kernel-class.rb +2 -1
- data/smoke/keyword1.rb +2 -1
- data/smoke/keyword2.rb +2 -1
- data/smoke/keyword3.rb +2 -1
- data/smoke/keyword4.rb +2 -1
- data/smoke/keyword5.rb +2 -1
- data/smoke/kwrest.rb +12 -0
- data/smoke/kwrest.rbs +3 -0
- data/smoke/kwsplat1.rb +5 -4
- data/smoke/kwsplat2.rb +2 -1
- data/smoke/lit-complex.rb +10 -0
- data/smoke/lit-encoding.rb +10 -0
- data/smoke/manual-rbs.rb +4 -3
- data/smoke/manual-rbs2.rb +2 -1
- data/smoke/manual-rbs3.rb +2 -2
- data/smoke/masgn1.rb +2 -1
- data/smoke/masgn2.rb +3 -2
- data/smoke/masgn3.rb +2 -1
- data/smoke/method_in_branch.rb +3 -2
- data/smoke/method_missing.rb +28 -0
- data/smoke/module1.rb +2 -2
- data/smoke/module2.rb +1 -1
- data/smoke/module3.rb +2 -2
- data/smoke/module4.rb +2 -2
- data/smoke/module5.rb +17 -0
- data/smoke/module6.rb +40 -0
- data/smoke/module_function1.rb +3 -3
- data/smoke/module_function2.rb +3 -3
- data/smoke/multiple-include.rb +1 -1
- data/smoke/multiple-superclass.rb +1 -1
- data/smoke/next1.rb +3 -2
- data/smoke/next2.rb +2 -1
- data/smoke/object-send1.rb +4 -3
- data/smoke/object-send2.rb +10 -0
- data/smoke/object-send3.rb +18 -0
- data/smoke/once.rb +2 -1
- data/smoke/optional1.rb +2 -1
- data/smoke/optional2.rb +2 -1
- data/smoke/optional3.rb +2 -1
- data/smoke/parameterizedd-self.rb +3 -2
- data/smoke/parameterizedd-self2.rb +15 -0
- data/smoke/pathname1.rb +2 -1
- data/smoke/pathname2.rb +2 -1
- data/smoke/pattern-match1.rb +2 -1
- data/smoke/pattern-match2.rb +2 -1
- data/smoke/printf.rb +2 -2
- data/smoke/proc.rb +3 -2
- data/smoke/proc2.rb +2 -1
- data/smoke/proc3.rb +2 -1
- data/smoke/proc4.rb +2 -1
- data/smoke/proc5.rb +19 -0
- data/smoke/public.rb +34 -0
- data/smoke/range.rb +2 -1
- data/smoke/rbs-alias.rb +2 -1
- data/smoke/rbs-attr.rb +6 -5
- data/smoke/rbs-attr2.rb +11 -0
- data/smoke/rbs-attr2.rbs +3 -0
- data/smoke/rbs-extend.rb +2 -1
- data/smoke/rbs-interface.rb +5 -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 +2 -1
- data/smoke/rbs-proc2.rb +3 -2
- data/smoke/rbs-proc3.rb +2 -1
- data/smoke/rbs-record.rb +3 -2
- data/smoke/rbs-tyvar.rb +3 -2
- data/smoke/rbs-tyvar2.rb +3 -2
- data/smoke/rbs-tyvar3.rb +3 -2
- data/smoke/rbs-tyvar4.rb +3 -3
- data/smoke/rbs-tyvar5.rb +2 -1
- data/smoke/rbs-tyvar6.rb +18 -0
- data/smoke/rbs-tyvar6.rbs +12 -0
- data/smoke/rbs-tyvar7.rb +12 -0
- data/smoke/rbs-tyvar7.rbs +7 -0
- data/smoke/rbs-vars.rb +7 -8
- data/smoke/redo1.rb +3 -2
- data/smoke/redo2.rb +3 -2
- data/smoke/req-keyword.rb +2 -1
- data/smoke/rescue1.rb +3 -2
- data/smoke/rescue2.rb +3 -2
- data/smoke/rescue3.rb +19 -0
- data/smoke/rescue4.rb +17 -0
- data/smoke/respond_to.rb +2 -1
- data/smoke/rest-farg.rb +2 -1
- data/smoke/rest1.rb +3 -2
- data/smoke/rest2.rb +2 -1
- data/smoke/rest3.rb +7 -6
- data/smoke/rest4.rb +3 -2
- data/smoke/rest5.rb +2 -1
- data/smoke/rest6.rb +2 -1
- data/smoke/retry1.rb +3 -2
- data/smoke/return.rb +2 -1
- data/smoke/singleton_method.rb +1 -1
- data/smoke/step.rb +4 -3
- data/smoke/string-split.rb +2 -1
- data/smoke/struct-keyword_init.rb +20 -0
- data/smoke/struct.rb +1 -1
- data/smoke/struct2.rb +5 -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 +5 -4
- data/smoke/super2.rb +1 -1
- data/smoke/super3.rb +3 -3
- data/smoke/super4.rb +43 -0
- data/smoke/super5.rb +36 -0
- data/smoke/svar1.rb +2 -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 +4 -3
- data/smoke/tap1.rb +3 -2
- data/smoke/toplevel.rb +2 -1
- data/smoke/two-map.rb +3 -2
- data/smoke/type_var.rb +2 -1
- data/smoke/typed_method.rb +2 -1
- data/smoke/uninitialize-var.rb +2 -1
- data/smoke/union-recv.rb +2 -2
- data/smoke/user-demo.rb +3 -3
- data/smoke/wrong-extend.rb +2 -2
- data/smoke/wrong-include.rb +2 -2
- data/smoke/wrong-include2.rb +17 -0
- data/typeprof.gemspec +1 -1
- metadata +61 -6
- data/tools/stackprof-wrapper.rb +0 -10
data/lib/typeprof/type.rb
CHANGED
@@ -149,6 +149,10 @@ module TypeProf
|
|
149
149
|
raise "cannot substitute abstract type: #{ self.class }"
|
150
150
|
end
|
151
151
|
|
152
|
+
def generate_substitution
|
153
|
+
{}
|
154
|
+
end
|
155
|
+
|
152
156
|
DummySubstitution = Object.new
|
153
157
|
def DummySubstitution.[](_)
|
154
158
|
Type.any
|
@@ -170,7 +174,7 @@ module TypeProf
|
|
170
174
|
"untyped"
|
171
175
|
end
|
172
176
|
|
173
|
-
def
|
177
|
+
def method_dispatch_info
|
174
178
|
nil
|
175
179
|
end
|
176
180
|
|
@@ -203,11 +207,12 @@ module TypeProf
|
|
203
207
|
local = nil
|
204
208
|
tys.each do |ty|
|
205
209
|
raise ty.inspect unless ty.is_a?(Type)
|
206
|
-
local = true if ty.is_a?(
|
210
|
+
local = true if ty.is_a?(Local)
|
207
211
|
end
|
208
212
|
raise if local && elems
|
209
213
|
|
210
214
|
@elems = elems
|
215
|
+
raise elems.inspect if elems && !elems.is_a?(::Hash)
|
211
216
|
end
|
212
217
|
|
213
218
|
def each_free_type_variable(&blk)
|
@@ -285,7 +290,7 @@ module TypeProf
|
|
285
290
|
types.delete(Type::Instance.new(Type::Builtin[:true]))
|
286
291
|
bool = true
|
287
292
|
end
|
288
|
-
types.delete(Type.any) unless Config.options[:
|
293
|
+
types.delete(Type.any) unless Config.options[:show_untyped]
|
289
294
|
proc_tys, types = types.partition {|ty| ty.is_a?(Proc) }
|
290
295
|
types = types.map {|ty| ty.screen_name(scratch) }
|
291
296
|
types << scratch.show_proc_signature(proc_tys) unless proc_tys.empty?
|
@@ -310,9 +315,14 @@ module TypeProf
|
|
310
315
|
def globalize(env, visited, depth)
|
311
316
|
return Type.any if depth <= 0
|
312
317
|
tys = Utils::Set[]
|
313
|
-
|
318
|
+
if @elems
|
319
|
+
# XXX: If @elems is non nil, the Union type should global, so calling globalize against such a type should not occur.
|
320
|
+
# However, currently, ActualArguments may contain global types for flag_args_kw_splat case.
|
321
|
+
# This should be fixed in future in ActualArguments side. See Scratch#setup_actual_arguments.
|
322
|
+
#raise
|
323
|
+
end
|
314
324
|
|
315
|
-
elems = {}
|
325
|
+
elems = @elems ? @elems.dup : {}
|
316
326
|
@types.each do |ty|
|
317
327
|
ty = ty.globalize(env, visited, depth - 1)
|
318
328
|
case ty
|
@@ -435,10 +445,12 @@ module TypeProf
|
|
435
445
|
@idx = idx
|
436
446
|
@type_params = type_params
|
437
447
|
@superclass = superclass
|
448
|
+
raise if @kind == :class && !@superclass
|
438
449
|
@_name = name
|
439
450
|
end
|
440
451
|
|
441
452
|
attr_reader :kind, :idx, :type_params, :superclass
|
453
|
+
attr_accessor :superclass_type_args
|
442
454
|
|
443
455
|
def inspect
|
444
456
|
if @_name
|
@@ -452,8 +464,8 @@ module TypeProf
|
|
452
464
|
"singleton(#{ scratch.get_class_name(self) })"
|
453
465
|
end
|
454
466
|
|
455
|
-
def
|
456
|
-
|
467
|
+
def method_dispatch_info
|
468
|
+
[self, true]
|
457
469
|
end
|
458
470
|
|
459
471
|
def consistent?(other)
|
@@ -485,6 +497,8 @@ module TypeProf
|
|
485
497
|
def initialize(klass)
|
486
498
|
raise unless klass
|
487
499
|
raise if klass == Type.any
|
500
|
+
raise if klass.is_a?(Type::Instance)
|
501
|
+
raise if klass.is_a?(Type::Union)
|
488
502
|
@klass = klass
|
489
503
|
end
|
490
504
|
|
@@ -504,8 +518,8 @@ module TypeProf
|
|
504
518
|
end
|
505
519
|
end
|
506
520
|
|
507
|
-
def
|
508
|
-
|
521
|
+
def method_dispatch_info
|
522
|
+
[@klass, false]
|
509
523
|
end
|
510
524
|
|
511
525
|
def consistent?(other)
|
@@ -558,8 +572,8 @@ module TypeProf
|
|
558
572
|
end
|
559
573
|
end
|
560
574
|
|
561
|
-
def
|
562
|
-
@base_type.
|
575
|
+
def method_dispatch_info
|
576
|
+
@base_type.method_dispatch_info
|
563
577
|
end
|
564
578
|
|
565
579
|
def substitute(subst, depth)
|
@@ -600,8 +614,8 @@ module TypeProf
|
|
600
614
|
end
|
601
615
|
end
|
602
616
|
|
603
|
-
def
|
604
|
-
@base_type.
|
617
|
+
def method_dispatch_info
|
618
|
+
@base_type.method_dispatch_info
|
605
619
|
end
|
606
620
|
|
607
621
|
def substitute(_subst, _depth)
|
@@ -630,8 +644,8 @@ module TypeProf
|
|
630
644
|
@base_type
|
631
645
|
end
|
632
646
|
|
633
|
-
def
|
634
|
-
@base_type.
|
647
|
+
def method_dispatch_info
|
648
|
+
@base_type.method_dispatch_info
|
635
649
|
end
|
636
650
|
|
637
651
|
def consistent?(_other)
|
@@ -675,6 +689,8 @@ module TypeProf
|
|
675
689
|
Type::Literal.new(obj, Type::Instance.new(Type::Builtin[:int]))
|
676
690
|
when ::Rational
|
677
691
|
Type::Literal.new(obj, Type::Instance.new(Type::Builtin[:rational]))
|
692
|
+
when ::Complex
|
693
|
+
Type::Literal.new(obj, Type::Instance.new(Type::Builtin[:complex]))
|
678
694
|
when ::Float
|
679
695
|
Type::Literal.new(obj, Type::Instance.new(Type::Builtin[:float]))
|
680
696
|
when ::Class
|
@@ -711,6 +727,8 @@ module TypeProf
|
|
711
727
|
Type.nil
|
712
728
|
when ::Range
|
713
729
|
Type::Literal.new(obj, Type::Instance.new(Type::Builtin[:range]))
|
730
|
+
when ::Encoding
|
731
|
+
Type::Literal.new(obj, Type::Instance.new(Type::Builtin[:encoding]))
|
714
732
|
else
|
715
733
|
raise "unknown object: #{ obj.inspect }"
|
716
734
|
end
|
@@ -813,8 +831,10 @@ module TypeProf
|
|
813
831
|
def initialize(lead_tys, opt_tys, rest_ty, post_tys, kw_tys, kw_rest_ty, blk_ty)
|
814
832
|
@lead_tys = lead_tys
|
815
833
|
@opt_tys = opt_tys
|
834
|
+
raise unless opt_tys.is_a?(Array)
|
816
835
|
@rest_ty = rest_ty
|
817
836
|
@post_tys = post_tys
|
837
|
+
raise unless post_tys
|
818
838
|
@kw_tys = kw_tys
|
819
839
|
kw_tys.each {|a| raise if a.size != 3 } if kw_tys
|
820
840
|
@kw_rest_ty = kw_rest_ty
|
@@ -834,6 +854,44 @@ module TypeProf
|
|
834
854
|
MethodSignature.new(lead_tys, opt_tys, rest_ty, post_tys, kw_tys, kw_rest_ty, blk_ty)
|
835
855
|
end
|
836
856
|
|
857
|
+
def merge_as_block_arguments(other)
|
858
|
+
lead_tys1, opt_tys1, rest_ty1, post_tys1 = @lead_tys, @opt_tys, @rest_ty, @post_tys
|
859
|
+
lead_tys2, opt_tys2, rest_ty2, post_tys2 = other.lead_tys, other.opt_tys, other.rest_ty, other.post_tys
|
860
|
+
|
861
|
+
case
|
862
|
+
when lead_tys1.size > lead_tys2.size
|
863
|
+
n = lead_tys2.size
|
864
|
+
lead_tys1, opt_tys1 = lead_tys1[0, n], lead_tys1[n..] + opt_tys1
|
865
|
+
when lead_tys1.size < lead_tys2.size
|
866
|
+
n = lead_tys1.size
|
867
|
+
lead_tys2, opt_tys2 = lead_tys2[0, n], lead_tys2[n..] + opt_tys2
|
868
|
+
end
|
869
|
+
case
|
870
|
+
when post_tys1.size > post_tys2.size
|
871
|
+
i = post_tys1.size - post_tys2.size
|
872
|
+
if rest_ty1
|
873
|
+
rest_ty1 = post_tys[0, i].inject(rest_ty1) {|ty1, ty2| ty1.union(ty2) }
|
874
|
+
post_tys1 = post_tys1[i..]
|
875
|
+
else
|
876
|
+
opt_tys1, post_tys1 = opt_tys1 + post_tys1[0, i], post_tys1[i..]
|
877
|
+
end
|
878
|
+
when post_tys1.size < post_tys2.size
|
879
|
+
i = post_tys2.size - post_tys1.size
|
880
|
+
if rest_ty2
|
881
|
+
rest_ty2 = post_tys[0, i].inject(rest_ty2) {|ty1, ty2| ty1.union(ty2) }
|
882
|
+
post_tys2 = post_tys2[i..]
|
883
|
+
else
|
884
|
+
opt_tys2, post_tys2 = opt_tys2 + post_tys2[0, i], post_tys2[i..]
|
885
|
+
end
|
886
|
+
end
|
887
|
+
|
888
|
+
# XXX: tweak keywords too
|
889
|
+
|
890
|
+
msig1 = MethodSignature.new(lead_tys1, opt_tys1, rest_ty1, post_tys1, @kw_tys, @kw_rest_ty, @blk_ty)
|
891
|
+
msig2 = MethodSignature.new(lead_tys2, opt_tys2, rest_ty2, post_tys2, other.kw_tys, other.kw_rest_ty, other.blk_ty)
|
892
|
+
msig1.merge(msig2)
|
893
|
+
end
|
894
|
+
|
837
895
|
def merge(other)
|
838
896
|
raise if @lead_tys.size != other.lead_tys.size
|
839
897
|
raise if @post_tys.size != other.post_tys.size
|
data/lib/typeprof/version.rb
CHANGED
data/smoke/alias.rb
CHANGED
@@ -20,11 +20,12 @@ Test.new.qux("str")
|
|
20
20
|
__END__
|
21
21
|
# Classes
|
22
22
|
class Object
|
23
|
-
|
24
|
-
def
|
23
|
+
private
|
24
|
+
def foo: (Integer) -> Integer
|
25
|
+
def bar: (String) -> String
|
25
26
|
end
|
26
27
|
|
27
28
|
class Test
|
28
|
-
def baz
|
29
|
-
def qux
|
29
|
+
def baz: (Integer) -> Integer
|
30
|
+
def qux: (String) -> String
|
30
31
|
end
|
data/smoke/alias2.rb
CHANGED
data/smoke/any1.rb
CHANGED
data/smoke/any2.rb
CHANGED
data/smoke/arguments.rb
CHANGED
data/smoke/arguments2.rb
CHANGED
@@ -42,14 +42,15 @@ f10 {|n| }
|
|
42
42
|
__END__
|
43
43
|
# Classes
|
44
44
|
class Object
|
45
|
-
|
46
|
-
def
|
47
|
-
def
|
48
|
-
def
|
49
|
-
def
|
50
|
-
def
|
51
|
-
def
|
52
|
-
def
|
53
|
-
def
|
54
|
-
def
|
45
|
+
private
|
46
|
+
def f1: -> nil
|
47
|
+
def f2: (:x, :y, :z) -> nil
|
48
|
+
def f3: (?String, ?String) -> nil
|
49
|
+
def f4: (*:a | :b | :c) -> nil
|
50
|
+
def f5: (:x, ?String, :z) -> nil
|
51
|
+
def f6: (k: :kk) -> nil
|
52
|
+
def f7: (?k: Integer) -> nil
|
53
|
+
def f8: (?k: String) -> nil
|
54
|
+
def f9: (**{k: :kk}) -> nil
|
55
|
+
def f10: { (Integer) -> nil } -> nil
|
55
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
@@ -16,7 +16,8 @@ map_bang_test_known_bug([1, 2, 3])
|
|
16
16
|
__END__
|
17
17
|
# Classes
|
18
18
|
class Object
|
19
|
-
|
20
|
-
def
|
21
|
-
def
|
19
|
+
private
|
20
|
+
def map_test: ([Integer, Integer, Integer]) -> Array[String]
|
21
|
+
def map_bang_test: ([Integer, Integer, Integer]) -> (Array[Integer | String])
|
22
|
+
def map_bang_test_known_bug: ([Integer, Integer, Integer]) -> [Integer, Integer, Integer]
|
22
23
|
end
|
data/smoke/array-mul.rb
CHANGED
@@ -12,6 +12,7 @@ bar([1, 2, 3])
|
|
12
12
|
__END__
|
13
13
|
# Classes
|
14
14
|
class Object
|
15
|
-
|
16
|
-
def
|
15
|
+
private
|
16
|
+
def foo: ([Integer, Integer, Integer]) -> Array[Integer]
|
17
|
+
def bar: ([Integer, Integer, Integer]) -> String
|
17
18
|
end
|
data/smoke/array-plus1.rb
CHANGED
data/smoke/array-plus2.rb
CHANGED
data/smoke/array-pop.rb
CHANGED
@@ -0,0 +1,71 @@
|
|
1
|
+
def f1(*ary)
|
2
|
+
ary[1..3]
|
3
|
+
end
|
4
|
+
|
5
|
+
def f2(*ary)
|
6
|
+
ary[1...3]
|
7
|
+
end
|
8
|
+
|
9
|
+
def f3(*ary)
|
10
|
+
ary[1..-3]
|
11
|
+
end
|
12
|
+
|
13
|
+
def f4(*ary)
|
14
|
+
ary[1...-3]
|
15
|
+
end
|
16
|
+
|
17
|
+
def f5(*ary)
|
18
|
+
ary[-4..3]
|
19
|
+
end
|
20
|
+
|
21
|
+
def f6(*ary)
|
22
|
+
ary[-4...3]
|
23
|
+
end
|
24
|
+
|
25
|
+
def f7(*ary)
|
26
|
+
ary[-4..-3]
|
27
|
+
end
|
28
|
+
|
29
|
+
def f8(*ary)
|
30
|
+
ary[-4...-3]
|
31
|
+
end
|
32
|
+
|
33
|
+
def f9(*ary)
|
34
|
+
ary[...3]
|
35
|
+
end
|
36
|
+
|
37
|
+
def f10(*ary)
|
38
|
+
ary[3..]
|
39
|
+
end
|
40
|
+
|
41
|
+
def dispatch(*ary)
|
42
|
+
f1(*ary)
|
43
|
+
f2(*ary)
|
44
|
+
f3(*ary)
|
45
|
+
f4(*ary)
|
46
|
+
f5(*ary)
|
47
|
+
f6(*ary)
|
48
|
+
f7(*ary)
|
49
|
+
f8(*ary)
|
50
|
+
f9(*ary)
|
51
|
+
f10(*ary)
|
52
|
+
end
|
53
|
+
|
54
|
+
dispatch(:a, :b, :c, :d, :e)
|
55
|
+
|
56
|
+
__END__
|
57
|
+
# Classes
|
58
|
+
class Object
|
59
|
+
private
|
60
|
+
def f1: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
61
|
+
def f2: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
62
|
+
def f3: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
63
|
+
def f4: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
64
|
+
def f5: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
65
|
+
def f6: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
66
|
+
def f7: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
67
|
+
def f8: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
68
|
+
def f9: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
69
|
+
def f10: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
70
|
+
def dispatch: (*:a | :b | :c | :d | :e) -> (Array[:a | :b | :c | :d | :e])
|
71
|
+
end
|