typeprof 0.9.0 → 0.12.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/.github/workflows/main.yml +1 -1
- data/Gemfile.lock +6 -5
- data/doc/demo.md +2 -2
- data/doc/todo.md +133 -0
- data/lib/typeprof/analyzer.rb +89 -37
- data/lib/typeprof/block.rb +34 -0
- data/lib/typeprof/builtin.rb +169 -66
- data/lib/typeprof/cli.rb +7 -0
- data/lib/typeprof/config.rb +25 -3
- data/lib/typeprof/container-type.rb +24 -0
- data/lib/typeprof/export.rb +130 -69
- data/lib/typeprof/import.rb +82 -38
- data/lib/typeprof/iseq.rb +23 -4
- data/lib/typeprof/method.rb +29 -7
- data/lib/typeprof/type.rb +75 -13
- data/lib/typeprof/version.rb +1 -1
- data/smoke/alias.rb +4 -4
- data/smoke/alias2.rb +3 -1
- data/smoke/arguments.rb +2 -2
- data/smoke/arguments2.rb +5 -5
- data/smoke/array-each.rb +1 -1
- data/smoke/array-each3.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 +1 -0
- data/smoke/array-range-aref.rb +11 -11
- data/smoke/array-replace.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 +1 -1
- data/smoke/array14.rb +1 -1
- data/smoke/array15.rb +1 -1
- data/smoke/array2.rb +2 -2
- data/smoke/array3.rb +1 -0
- data/smoke/array6.rb +2 -1
- data/smoke/array8.rb +1 -1
- data/smoke/array9.rb +1 -1
- data/smoke/attr-module.rb +1 -0
- data/smoke/attr-vis.rb +43 -0
- data/smoke/attr-vis.rbs +4 -0
- data/smoke/attr.rb +2 -2
- data/smoke/block-ambiguous.rb +4 -4
- data/smoke/block-args1-rest.rb +6 -5
- data/smoke/block-args1.rb +5 -5
- data/smoke/block-args2-rest.rb +6 -5
- data/smoke/block-args2.rb +5 -5
- data/smoke/block-args3-rest.rb +7 -6
- data/smoke/block-args3.rb +6 -6
- data/smoke/block-blockarg.rb +3 -3
- data/smoke/block-kwarg.rb +4 -4
- data/smoke/block1.rb +1 -1
- data/smoke/block10.rb +1 -1
- data/smoke/block11.rb +2 -2
- data/smoke/block2.rb +1 -1
- data/smoke/block3.rb +1 -1
- data/smoke/block5.rb +1 -0
- data/smoke/block_given.rb +37 -0
- data/smoke/class_method.rb +2 -2
- data/smoke/class_method2.rb +2 -2
- data/smoke/constant2.rb +3 -2
- data/smoke/context-sensitive1.rb +1 -1
- data/smoke/cvar.rb +3 -2
- data/smoke/define_method.rb +2 -2
- data/smoke/define_method3.rb +1 -0
- data/smoke/define_method4.rb +1 -1
- data/smoke/define_method6.rb +19 -0
- data/smoke/demo.rb +6 -6
- data/smoke/demo1.rb +1 -1
- 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 +2 -1
- data/smoke/demo7.rb +1 -1
- data/smoke/demo9.rb +1 -0
- data/smoke/dummy-execution1.rb +1 -1
- data/smoke/dummy-execution2.rb +1 -1
- data/smoke/dummy_element.rb +1 -1
- data/smoke/ensure1.rb +1 -1
- data/smoke/enum_for.rb +15 -0
- data/smoke/enum_for2.rb +17 -0
- data/smoke/fib.rb +2 -2
- 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 +1 -1
- data/smoke/function.rb +1 -1
- data/smoke/gvar.rb +1 -1
- data/smoke/gvar2.rb +1 -1
- data/smoke/hash-fetch.rb +3 -3
- data/smoke/inheritance.rb +4 -4
- data/smoke/initialize.rb +3 -2
- data/smoke/instance_eval.rb +1 -1
- data/smoke/int_times.rb +1 -1
- data/smoke/integer.rb +1 -1
- data/smoke/ivar.rb +3 -2
- data/smoke/ivar2.rb +2 -2
- data/smoke/ivar3.rb +2 -1
- data/smoke/ivar4.rb +21 -0
- data/smoke/kernel-class.rb +1 -1
- data/smoke/keyword4.rb +1 -1
- data/smoke/kwrest.rb +1 -0
- data/smoke/kwsplat1.rb +2 -2
- data/smoke/kwsplat2.rb +1 -1
- data/smoke/manual-rbs.rb +2 -1
- data/smoke/manual-rbs3.rb +1 -0
- data/smoke/method_in_branch.rb +1 -1
- data/smoke/method_missing.rb +4 -3
- data/smoke/module3.rb +1 -1
- data/smoke/module4.rb +1 -0
- data/smoke/module5.rb +1 -1
- data/smoke/module_function1.rb +3 -2
- data/smoke/module_function2.rb +3 -2
- data/smoke/multiple-include.rb +1 -0
- data/smoke/next1.rb +1 -1
- data/smoke/object-send1.rb +3 -3
- data/smoke/optional1.rb +1 -1
- data/smoke/optional2.rb +1 -1
- data/smoke/optional3.rb +1 -1
- data/smoke/parameterizedd-self.rb +2 -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/proc4.rb +1 -1
- data/smoke/public.rb +4 -0
- data/smoke/range.rb +1 -1
- data/smoke/rbs-attr.rb +2 -2
- data/smoke/rbs-proc2.rb +1 -1
- data/smoke/rbs-proc3.rb +1 -1
- data/smoke/rbs-tyvar4.rb +3 -2
- data/smoke/rbs-tyvar6.rb +3 -3
- data/smoke/redo1.rb +1 -1
- data/smoke/redo2.rb +1 -1
- data/smoke/rescue1.rb +1 -1
- data/smoke/rescue2.rb +1 -1
- data/smoke/rescue3.rb +1 -0
- data/smoke/rescue4.rb +1 -1
- data/smoke/respond_to.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/simple.rb +12 -0
- data/smoke/step.rb +3 -3
- data/smoke/struct-keyword_init.rb +6 -16
- data/smoke/struct.rb +1 -1
- data/smoke/struct2.rb +1 -1
- data/smoke/struct3.rb +1 -1
- data/smoke/struct4.rb +1 -1
- data/smoke/struct5.rb +2 -2
- data/smoke/struct6.rb +2 -2
- data/smoke/struct7.rb +1 -1
- data/smoke/super1.rb +4 -4
- data/smoke/super3.rb +3 -2
- data/smoke/super4.rb +7 -5
- data/smoke/super5.rb +6 -4
- data/smoke/symbol-proc-attr.rb +1 -1
- data/smoke/tap1.rb +2 -2
- data/smoke/toplevel.rb +1 -1
- data/smoke/type_var.rb +3 -3
- data/smoke/user-demo.rb +1 -1
- data/smoke/wrong-extend.rb +1 -0
- data/smoke/wrong-include.rb +1 -0
- data/smoke/wrong-include2.rb +1 -1
- data/testbed/goodcheck-Gemfile.lock +1 -1
- data/typeprof.gemspec +1 -1
- metadata +19 -5
data/lib/typeprof/iseq.rb
CHANGED
@@ -207,7 +207,7 @@ module TypeProf
|
|
207
207
|
end
|
208
208
|
|
209
209
|
# find a pattern: getlocal, ..., send (is_a?, respond_to?), branch
|
210
|
-
|
210
|
+
getlocal_send_branch_list = []
|
211
211
|
(@insns.size - 1).times do |i|
|
212
212
|
insn, operands = @insns[i]
|
213
213
|
if insn == :getlocal && operands[1] == 0
|
@@ -216,7 +216,7 @@ module TypeProf
|
|
216
216
|
while @insns[j]
|
217
217
|
sp = check_send_branch(sp, j)
|
218
218
|
if sp == :match
|
219
|
-
|
219
|
+
getlocal_send_branch_list << [i, j]
|
220
220
|
break
|
221
221
|
end
|
222
222
|
break if !sp
|
@@ -224,13 +224,32 @@ module TypeProf
|
|
224
224
|
end
|
225
225
|
end
|
226
226
|
end
|
227
|
-
|
227
|
+
getlocal_send_branch_list.each do |i, j|
|
228
228
|
next if (i + 1 .. j + 1).any? {|i| branch_targets[i] }
|
229
229
|
_insn, getlocal_operands = @insns[i]
|
230
230
|
_insn, send_operands = @insns[j]
|
231
231
|
_insn, branch_operands = @insns[j + 1]
|
232
232
|
@insns[j] = [:nop]
|
233
|
-
@insns[j + 1] = [:
|
233
|
+
@insns[j + 1] = [:getlocal_send_branch, [getlocal_operands, send_operands, branch_operands]]
|
234
|
+
end
|
235
|
+
|
236
|
+
# find a pattern: send (block_given?), branch
|
237
|
+
send_branch_list = []
|
238
|
+
(@insns.size - 1).times do |i|
|
239
|
+
insn, _operands = @insns[i]
|
240
|
+
if insn == :send
|
241
|
+
insn, _operands = @insns[i + 1]
|
242
|
+
if insn == :branch
|
243
|
+
send_branch_list << i
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
247
|
+
send_branch_list.each do |i|
|
248
|
+
next if branch_targets[i + 1]
|
249
|
+
_insn, send_operands = @insns[i]
|
250
|
+
_insn, branch_operands = @insns[i + 1]
|
251
|
+
@insns[i] = [:nop]
|
252
|
+
@insns[i + 1] = [:send_branch, [send_operands, branch_operands]]
|
234
253
|
end
|
235
254
|
|
236
255
|
# find a pattern: getlocal, dup, branch
|
data/lib/typeprof/method.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
module TypeProf
|
2
2
|
class MethodDef
|
3
|
+
attr_accessor :pub_meth
|
4
|
+
|
3
5
|
include Utils::StructuralEquality
|
4
6
|
end
|
5
7
|
|
@@ -12,8 +14,6 @@ module TypeProf
|
|
12
14
|
@pub_meth = pub_meth
|
13
15
|
end
|
14
16
|
|
15
|
-
attr_accessor :pub_meth
|
16
|
-
|
17
17
|
def do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn)
|
18
18
|
recv = recv.base_type while recv.respond_to?(:base_type)
|
19
19
|
recv = scratch.globalize_type(recv, caller_env, caller_ep)
|
@@ -153,14 +153,34 @@ module TypeProf
|
|
153
153
|
end
|
154
154
|
end
|
155
155
|
|
156
|
+
class AliasMethodDef < MethodDef
|
157
|
+
def initialize(orig_mid, mdef, def_ep)
|
158
|
+
@orig_mid = orig_mid
|
159
|
+
@mdef = mdef
|
160
|
+
@pub_meth = mdef.pub_meth
|
161
|
+
@def_ep = def_ep
|
162
|
+
end
|
163
|
+
|
164
|
+
attr_reader :orig_mid, :mdef, :def_ep
|
165
|
+
|
166
|
+
def do_send(recv, _mid, aargs, caller_ep, caller_env, scratch, &ctn)
|
167
|
+
@mdef.do_send(recv, @orig_mid, aargs, caller_ep, caller_env, scratch, &ctn)
|
168
|
+
end
|
169
|
+
|
170
|
+
def do_check_send(msig, recv, mid, ep, scratch)
|
171
|
+
@mdef.do_check_send(msig, recv, mid, ep, scratch)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
|
156
175
|
class AttrMethodDef < MethodDef
|
157
|
-
def initialize(ivar, kind,
|
176
|
+
def initialize(ivar, kind, pub_meth, def_ep)
|
158
177
|
@ivar = ivar
|
159
178
|
@kind = kind # :reader | :writer
|
160
|
-
@
|
179
|
+
@pub_meth = pub_meth
|
180
|
+
@def_ep = def_ep
|
161
181
|
end
|
162
182
|
|
163
|
-
attr_reader :ivar, :kind, :
|
183
|
+
attr_reader :ivar, :kind, :def_ep
|
164
184
|
|
165
185
|
def do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn)
|
166
186
|
case @kind
|
@@ -185,9 +205,10 @@ module TypeProf
|
|
185
205
|
end
|
186
206
|
|
187
207
|
class TypedMethodDef < MethodDef
|
188
|
-
def initialize(sig_rets, rbs_source) # sig_rets: Array<[MethodSignature, (return)Type]>
|
208
|
+
def initialize(sig_rets, rbs_source, pub_meth) # sig_rets: Array<[MethodSignature, (return)Type]>
|
189
209
|
@sig_rets = sig_rets
|
190
210
|
@rbs_source = rbs_source
|
211
|
+
@pub_meth = pub_meth
|
191
212
|
end
|
192
213
|
|
193
214
|
attr_reader :rbs_source
|
@@ -286,8 +307,9 @@ module TypeProf
|
|
286
307
|
end
|
287
308
|
|
288
309
|
class CustomMethodDef < MethodDef
|
289
|
-
def initialize(impl)
|
310
|
+
def initialize(impl, pub_meth)
|
290
311
|
@impl = impl
|
312
|
+
@pub_meth = pub_meth
|
291
313
|
end
|
292
314
|
|
293
315
|
def do_send(recv, mid, aargs, caller_ep, caller_env, scratch, &ctn)
|
data/lib/typeprof/type.rb
CHANGED
@@ -162,6 +162,10 @@ module TypeProf
|
|
162
162
|
substitute(DummySubstitution, Config.options[:type_depth_limit])
|
163
163
|
end
|
164
164
|
|
165
|
+
def include_untyped?(_scratch)
|
166
|
+
false
|
167
|
+
end
|
168
|
+
|
165
169
|
class Any < Type
|
166
170
|
def initialize
|
167
171
|
end
|
@@ -185,6 +189,10 @@ module TypeProf
|
|
185
189
|
def substitute(_subst, _depth)
|
186
190
|
self
|
187
191
|
end
|
192
|
+
|
193
|
+
def include_untyped?(_scratch)
|
194
|
+
true
|
195
|
+
end
|
188
196
|
end
|
189
197
|
|
190
198
|
class Void < Any
|
@@ -379,6 +387,17 @@ module TypeProf
|
|
379
387
|
end
|
380
388
|
ty
|
381
389
|
end
|
390
|
+
|
391
|
+
def include_untyped?(scratch)
|
392
|
+
@types.each do |ty|
|
393
|
+
return true if ty.include_untyped?(scratch)
|
394
|
+
end
|
395
|
+
@elems&.each do |(container_kind, base_type), elems|
|
396
|
+
return true if base_type.include_untyped?(scratch)
|
397
|
+
return true if elems.include_untyped?(scratch)
|
398
|
+
end
|
399
|
+
false
|
400
|
+
end
|
382
401
|
end
|
383
402
|
|
384
403
|
def self.any
|
@@ -583,6 +602,10 @@ module TypeProf
|
|
583
602
|
def screen_name(scratch)
|
584
603
|
scratch.show_proc_signature([self])
|
585
604
|
end
|
605
|
+
|
606
|
+
def include_untyped?(scratch)
|
607
|
+
false # XXX: need to check the block signatures recursively
|
608
|
+
end
|
586
609
|
end
|
587
610
|
|
588
611
|
class Symbol < Type
|
@@ -781,31 +804,56 @@ module TypeProf
|
|
781
804
|
class Signature
|
782
805
|
include Utils::StructuralEquality
|
783
806
|
|
784
|
-
def screen_name(scratch)
|
785
|
-
|
807
|
+
def screen_name(iseq, scratch)
|
808
|
+
fargs = @lead_tys.map {|ty| ty.screen_name(scratch) }
|
809
|
+
farg_names = []
|
810
|
+
farg_names += iseq.locals[0, @lead_tys.size] if iseq
|
786
811
|
if @opt_tys
|
787
|
-
|
812
|
+
fargs += @opt_tys.map {|ty| "?" + ty.screen_name(scratch) }
|
813
|
+
farg_names += iseq.locals[@lead_tys.size, @opt_tys.size] if iseq
|
788
814
|
end
|
789
815
|
if @rest_ty
|
790
|
-
|
816
|
+
fargs << ("*" + @rest_ty.screen_name(scratch))
|
817
|
+
if iseq
|
818
|
+
rest_index = iseq.fargs_format[:rest_start]
|
819
|
+
farg_names << (rest_index ? iseq.locals[rest_index] : nil)
|
820
|
+
end
|
791
821
|
end
|
792
822
|
if @post_tys
|
793
|
-
|
823
|
+
fargs += @post_tys.map {|ty| ty.screen_name(scratch) }
|
824
|
+
if iseq
|
825
|
+
post_start = iseq.fargs_format[:post_start]
|
826
|
+
farg_names += (post_start ? iseq.locals[post_start, @post_tys.size] : [nil] * @post_tys.size)
|
827
|
+
end
|
794
828
|
end
|
795
829
|
if @kw_tys
|
796
830
|
@kw_tys.each do |req, sym, ty|
|
797
831
|
opt = req ? "" : "?"
|
798
|
-
|
832
|
+
fargs << "#{ opt }#{ sym }: #{ ty.screen_name(scratch) }"
|
799
833
|
end
|
800
834
|
end
|
801
835
|
if @kw_rest_ty
|
802
|
-
|
836
|
+
all_val_ty = Type.bot
|
837
|
+
@kw_rest_ty.each_child_global do |ty|
|
838
|
+
if ty == Type.any
|
839
|
+
val_ty = ty
|
840
|
+
else
|
841
|
+
# ty is a Type::Hash
|
842
|
+
_key_ty, val_ty = ty.elems.squash
|
843
|
+
end
|
844
|
+
all_val_ty = all_val_ty.union(val_ty)
|
845
|
+
end
|
846
|
+
fargs << ("**" + all_val_ty.screen_name(scratch))
|
847
|
+
end
|
848
|
+
if Config.options[:show_parameter_names]
|
849
|
+
farg_names = farg_names.map {|name| name == :type ? :type_ : name } # XXX: workaround of RBS parser bug
|
850
|
+
fargs = fargs.zip(farg_names).map {|farg, name| name ? "#{ farg } #{ name }" : farg }
|
803
851
|
end
|
804
|
-
|
852
|
+
fargs = fargs.empty? ? "" : "(#{ fargs.join(", ") })"
|
805
853
|
|
806
854
|
# Dirty Hack: Stop the iteration at most once!
|
807
855
|
# I'll remove this hack if RBS removes the limitation of nesting blocks
|
808
|
-
return
|
856
|
+
return fargs if caller_locations.any? {|frame| frame.label == "show_block_signature" }
|
809
857
|
|
810
858
|
optional = false
|
811
859
|
blks = []
|
@@ -818,12 +866,12 @@ module TypeProf
|
|
818
866
|
end
|
819
867
|
end
|
820
868
|
if blks != []
|
821
|
-
|
822
|
-
|
823
|
-
|
869
|
+
fargs << " " if fargs != ""
|
870
|
+
fargs << "?" if optional
|
871
|
+
fargs << scratch.show_block_signature(blks)
|
824
872
|
end
|
825
873
|
|
826
|
-
|
874
|
+
fargs
|
827
875
|
end
|
828
876
|
end
|
829
877
|
|
@@ -838,9 +886,23 @@ module TypeProf
|
|
838
886
|
@kw_tys = kw_tys
|
839
887
|
kw_tys.each {|a| raise if a.size != 3 } if kw_tys
|
840
888
|
@kw_rest_ty = kw_rest_ty
|
889
|
+
kw_rest_ty&.each_child_global do |ty|
|
890
|
+
raise ty.inspect if ty != Type.any && !ty.is_a?(Type::Hash)
|
891
|
+
end
|
841
892
|
@blk_ty = blk_ty
|
842
893
|
end
|
843
894
|
|
895
|
+
def include_untyped?(scratch)
|
896
|
+
return true if @lead_tys.any? {|ty| ty.include_untyped?(scratch) }
|
897
|
+
return true if @opt_tys.any? {|ty| ty.include_untyped?(scratch) }
|
898
|
+
return true if @rest_ty&.include_untyped?(scratch)
|
899
|
+
return true if @post_tys.any? {|ty| ty.include_untyped?(scratch) }
|
900
|
+
return true if @kw_tys&.any? {|_, _, ty| ty.include_untyped?(scratch) }
|
901
|
+
return true if @kw_rest_ty&.include_untyped?(scratch)
|
902
|
+
return true if @blk_ty&.include_untyped?(scratch)
|
903
|
+
false
|
904
|
+
end
|
905
|
+
|
844
906
|
attr_reader :lead_tys, :opt_tys, :rest_ty, :post_tys, :kw_tys, :kw_rest_ty, :blk_ty
|
845
907
|
|
846
908
|
def substitute(subst, depth)
|
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: (Integer) -> Integer
|
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: (Integer) -> Integer
|
30
|
-
|
29
|
+
def baz: (Integer | String x) -> (Integer | String)
|
30
|
+
alias qux baz
|
31
31
|
end
|
data/smoke/alias2.rb
CHANGED
data/smoke/arguments.rb
CHANGED
data/smoke/arguments2.rb
CHANGED
@@ -44,13 +44,13 @@ __END__
|
|
44
44
|
class Object
|
45
45
|
private
|
46
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
|
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
51
|
def f6: (k: :kk) -> nil
|
52
52
|
def f7: (?k: Integer) -> nil
|
53
53
|
def f8: (?k: String) -> nil
|
54
|
-
def f9: (
|
54
|
+
def f9: (**:kk) -> nil
|
55
55
|
def f10: { (Integer) -> nil } -> nil
|
56
56
|
end
|
data/smoke/array-each.rb
CHANGED
data/smoke/array-each3.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: ([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]
|
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: ([Integer, Integer, Integer]) -> Array[Integer]
|
17
|
-
def bar: ([Integer, Integer, Integer]) -> String
|
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-range-aref.rb
CHANGED
@@ -57,15 +57,15 @@ __END__
|
|
57
57
|
# Classes
|
58
58
|
class Object
|
59
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])
|
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