summaryrefslogtreecommitdiffhomepage
path: root/test/t
diff options
context:
space:
mode:
authorksss <[email protected]>2014-05-10 00:11:51 +0900
committerksss <[email protected]>2014-05-10 09:43:32 +0900
commit7dbfe19fc67c60dad3b2347ae64ce13ffb79dbe4 (patch)
tree980f9602e7b1d818bff45e1163e75d51619d80c7 /test/t
parente07a3731d1c7198eb5b443818c0f6a0601ca790d (diff)
downloadmruby-7dbfe19fc67c60dad3b2347ae64ce13ffb79dbe4.tar.gz
mruby-7dbfe19fc67c60dad3b2347ae64ce13ffb79dbe4.zip
OP_ENTER fix segmentation fault
Diffstat (limited to 'test/t')
-rw-r--r--test/t/proc.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/t/proc.rb b/test/t/proc.rb
index 49d4d92f8..33c3a0ef2 100644
--- a/test/t/proc.rb
+++ b/test/t/proc.rb
@@ -72,6 +72,29 @@ assert('Proc#call proc args pos block') do
assert_equal [1, 2, Proc, :x], (pr.call(1, 2, 3, 4){|x| x})
end
+assert('Proc#call proc args pos rest post') do
+ pr = Proc.new {|a,b,*c,d,e|
+ [a,b,c,d,e]
+ }
+ assert_equal [nil, nil, [], nil, nil], pr.call()
+ assert_equal [1, nil, [], nil, nil], pr.call(1)
+ assert_equal [1, 2, [], nil, nil], pr.call(1,2)
+ assert_equal [1, 2, [], 3, nil], pr.call(1,2,3)
+ assert_equal [1, 2, [], 3, 4], pr.call(1,2,3,4)
+ assert_equal [1, 2, [3], 4, 5], pr.call(1,2,3,4,5)
+ assert_equal [1, 2, [3, 4], 5, 6], pr.call(1,2,3,4,5,6)
+ assert_equal [1, 2, [3, 4, 5], 6,7], pr.call(1,2,3,4,5,6,7)
+
+ assert_equal [nil, nil, [], nil, nil], pr.call([])
+ assert_equal [1, nil, [], nil, nil], pr.call([1])
+ assert_equal [1, 2, [], nil, nil], pr.call([1,2])
+ assert_equal [1, 2, [], 3, nil], pr.call([1,2,3])
+ assert_equal [1, 2, [], 3, 4], pr.call([1,2,3,4])
+ assert_equal [1, 2, [3], 4, 5], pr.call([1,2,3,4,5])
+ assert_equal [1, 2, [3, 4], 5, 6], pr.call([1,2,3,4,5,6])
+ assert_equal [1, 2, [3, 4, 5], 6,7], pr.call([1,2,3,4,5,6,7])
+end
+
assert('Proc#return_does_not_break_self') do
class TestClass
attr_accessor :block