[#55222] [ruby-trunk - Feature #8468][Feedback] Remove $SAFE — "shugo (Shugo Maeda)" <redmine@...>

20 messages 2013/06/01

[#55260] [ruby-trunk - Feature #8478][Open] The hash returned by Enumerable#group_by should have an empty array for its default value — "phiggins (Pete Higgins)" <pete@...>

8 messages 2013/06/02

[#55276] Re: [ruby-changes:28951] zzak:r41003 (trunk): * process.c: Improve Process::exec documentation — Tanaka Akira <akr@...>

2013/5/31 zzak <ko1@atdot.net>:

9 messages 2013/06/03

[#55306] [ruby-trunk - Feature #8490][Open] Bring ActiveSupport Enumerable#index_by to core — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

12 messages 2013/06/04

[#55330] [ruby-trunk - Feature #8499][Assigned] Importing Hash#slice, Hash#slice!, Hash#except, and Hash#except! from ActiveSupport — "mrkn (Kenta Murata)" <muraken@...>

30 messages 2013/06/06

[#55391] [ruby-trunk - Bug #8507][Open] Keyword splat does not convert arg to Hash — "stephencelis (Stephen Celis)" <stephen.celis@...>

16 messages 2013/06/09

[#55393] [ruby-trunk - Bug #8508][Open] Invalid byte sequence in UTF-8 (ArgumentError) in win32/registry.rb — "thasmo (Thomas Deinhamer)" <thasmo@...>

11 messages 2013/06/09

[#55528] [ruby-trunk - Bug #8538][Open] c method not pushed into the callstack when called, but popped when returned — deivid (David Rodríguez) <deivid.rodriguez@...>

9 messages 2013/06/17

[#55557] [ruby-trunk - misc #8543][Open] rb_iseq_load — "alvoskov (Alexey Voskov)" <alvoskov@...>

47 messages 2013/06/19

[#55558] [ruby-trunk - Feature #8544][Open] OpenURI should open 'file://' URIs — "silasdavis (Silas Davis)" <ruby-lang@...>

12 messages 2013/06/19

[#55580] [CommonRuby - Feature #8556][Open] MutexedDelegator as a trivial way to make an object thread-safe — "headius (Charles Nutter)" <headius@...>

19 messages 2013/06/21

[#55596] [ruby-trunk - Feature #8563][Open] Instance variable arguments — "sawa (Tsuyoshi Sawada)" <sawadatsuyoshi@...>

18 messages 2013/06/22

[#55638] [CommonRuby - Feature #8568][Open] Introduce RbConfig value for native word size, to avoid Fixnum#size use — "headius (Charles Nutter)" <headius@...>

18 messages 2013/06/24

[#55678] [ruby-trunk - Feature #8572][Open] Fiber should be a Enumerable — "mattn (Yasuhiro Matsumoto)" <mattn.jp@...>

13 messages 2013/06/28

[#55699] [ruby-trunk - Feature #8579][Open] Frozen string syntax — "charliesome (Charlie Somerville)" <charliesome@...>

20 messages 2013/06/29

[#55708] [ruby-trunk - Bug #8584][Assigned] Remove curses — "shugo (Shugo Maeda)" <redmine@...>

17 messages 2013/06/30

[ruby-core:55226] [ruby-trunk - Bug #8463] Proc auto-splat bug with named arguments

From: "nobu (Nobuyoshi Nakada)" <nobu@...>
Date: 2013-06-01 08:28:38 UTC
List: ruby-core #55226
Issue #8463 has been updated by nobu (Nobuyoshi Nakada).

Backport changed from 1.9.3: UNKNOWN, 2.0.0: UNKNOWN to 2.0.0: REQUIRED


----------------------------------------
Bug #8463: Proc auto-splat bug with named arguments
https://bugs.ruby-lang.org/issues/8463#change-39589

Author: marcandre (Marc-Andre Lafortune)
Status: Closed
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: 
ruby -v: r40734
Backport: 2.0.0: REQUIRED


=begin
I'd expect a proc to either do an implicit splat or not, but right now it looks for options before doing the implicit splat. Should it not do it after doing the implicit splat?

I thought that when a proc had an argument list with more than one element, it was the same to call it with a single array argument than with the same array splatted:

   Proc{|a, ...| ... }.call([...]) == Proc{|a, ...}| ... }.call(*[...]) # => Because of implicit splat

But we have currently:

  Proc.new{|a, *b, **c| p a, b, c}.call(1,2, bar: 3)
  # => 1, [2], {:bar=>3} : OK

  Proc.new{|a, *b, **c| p a, b, c}.call([1,2, bar: 3])
  # => 1, [2, {:bar=>3}], {}: Expected same as above

  Proc.new{|(a, *b), **c| p a, b, c}.call([1,2], bar: 3)
  # => 1, [2], {:bar=>3} : OK

  Proc.new{|(a, *b), **c| p a, b, c}.call([[1,2], bar: 3])
  # => [1, 2], [{:bar=>3}], {}: Expected same as above

As an additional note, this affects some methods of Enumerable when yielding multiple arguments.

For example:

    def each; yield 1, 2, bar: 3; end
    include Enumerable

    each{|a, *b, **c| p a, b, c} # => 1, [2], {:bar => 3}: ok
    detect{|a, *b, **c| p a, b, c} # => 1, [2, {:bar => 3}], {}: should be the same, no?
=end



-- 
http://bugs.ruby-lang.org/

In This Thread

Prev Next