From: nagachika00@... Date: 2016-08-18T14:03:41+00:00 Subject: [ruby-core:76966] [Ruby trunk Bug#12568] wrong ArgumentError if an array is given for instance_exec with optional argument Issue #12568 has been updated by Tomoyuki Chikanaga. Backport changed from 2.1: DONTNEED, 2.2: DONE, 2.3: REQUIRED to 2.1: DONTNEED, 2.2: DONE, 2.3: DONE ruby_2_3 r55956 merged revision(s) 55609. ---------------------------------------- Bug #12568: wrong ArgumentError if an array is given for instance_exec with optional argument https://bugs.ruby-lang.org/issues/12568#change-60192 * Author: Yui NARUSE * Status: Closed * Priority: Normal * Assignee: * ruby -v: ruby 2.4.0dev (2016-07-08 trunk 55607) [x86_64-darwin15] * Backport: 2.1: DONTNEED, 2.2: DONE, 2.3: DONE ---------------------------------------- From Ruby 2.2 to trunk, it wrongly raise ArgumentError as follows: Sample code: ```ruby instance_exec([1,2,3]){|a| p a} instance_exec([1,2,3]){|a=[]| p a} instance_exec([1,2,3], &->(a){ p a }) ->(a=[]){ p a }.to_proc.call([1,2,3]) instance_exec([1,2,3], &->(a=[]){ p a }) ``` Expected result: ``` [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3] ``` Actual result: ``` [1, 2, 3] [1, 2, 3] [1, 2, 3] [1, 2, 3] test.rb:7:in `block in
': wrong number of arguments (given 3, expected 0..1) (ArgumentError) from test.rb:7:in `instance_exec' from test.rb:7:in `
' ``` This issue affect https://github.com/rails/rails/pull/25699 -- https://bugs.ruby-lang.org/ Unsubscribe: