From 976becf7eb18aa1592c703ac4d86a2cf9dfa701e Mon Sep 17 00:00:00 2001 From: nobu Date: Sun, 19 Mar 2017 01:11:12 +0000 Subject: vm_args.c: arity check of lambda * vm_eval.c (rb_yield_lambda): new function which yields an array to a proc and splat to a lambda. mainly for Enumerable only. * vm_args.c (setup_parameters_complex): remove special lambda splatting for [Bug #9605]. [ruby-core:77065] [Bug #12705] * vm_insnhelper.c (vm_callee_setup_block_arg): ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58019 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/ruby/test_lambda.rb | 6 ++++++ test/ruby/test_yield.rb | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'test/ruby') diff --git a/test/ruby/test_lambda.rb b/test/ruby/test_lambda.rb index 826bfcf203..3ac2e4cb98 100644 --- a/test/ruby/test_lambda.rb +++ b/test/ruby/test_lambda.rb @@ -101,6 +101,12 @@ class TestLambdaParameters < Test::Unit::TestCase assert_equal(:ok, x, bug13090) end + def test_arity_error + assert_raise(ArgumentError, '[Bug #12705]') do + [1, 2].tap(&lambda {|a, b|}) + end + end + def foo assert_equal(nil, ->(&b){ b }.call) end diff --git a/test/ruby/test_yield.rb b/test/ruby/test_yield.rb index 0690d3cdf4..9b2b2f37e0 100644 --- a/test/ruby/test_yield.rb +++ b/test/ruby/test_yield.rb @@ -245,7 +245,7 @@ class TestRubyYieldGen < Test::Unit::TestCase throw :emuerror, ArgumentError end else - if args.length != params.length and !(args.length == 1 and Array === args[0] and args[0].length == params.length) + if args.length != params.length throw :emuerror, ArgumentError end end -- cgit v1.2.3