typeprof 0.5.4 → 0.9.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 +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
|