[#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:55363] [ruby-trunk - Bug #8072] Method#arity for keyword arguments

From: "boris_stitnicky (Boris Stitnicky)" <boris@...>
Date: 2013-06-07 21:46:48 UTC
List: ruby-core #55363
Issue #8072 has been updated by boris_stitnicky (Boris Stitnicky).


+1

Ruby has outgrown #arity. Today, plain #arity should only return positive value, when
the function has only compulsory ordered arguments. If there are any other arguments
(optional ordered arguments, named arguments, splat-collected arguments...), #arity
should return a negative value, meaning "Sorry, I give up, the negative integer I am
returning to you does not convey full information on this function's arguments."

However, I propose to make #arity work with one argument, and with terminology used
int the return values of #parameters method:

    f = -> a, b, c=1, d=2, *e, f: 3, g: 4, **h {}
    f.parameters
    #=> [[:req, :a], [:req, :b], [:opt, :c], [:opt, :d], [:rest, :e], [:key, :f], [:key, :g], [:keyrest, :h]]
    f.arity #=> -3
    f.arity( :req ) #=> 2
    f.arity( :opt ) #=> 2
    f.arity( :rest ) #=> 1
    f.arity( :key ) #=> 2
    f.arity( :keyrest ) #=> 1

    g = -> req, **named_arguments {}
    g.arity #=> -2
    g.arity( :req ) #=> 1
    g.arity( :opt ) #=> 0
    g.arity( :rest ) #=> 0
    g.arity( :key ) #=> 0
    g.arity( :keyrest ) #=> 1

----------------------------------------
Bug #8072: Method#arity for keyword arguments
https://bugs.ruby-lang.org/issues/8072#change-39782

Author: marcandre (Marc-Andre Lafortune)
Status: Open
Priority: Normal
Assignee: matz (Yukihiro Matsumoto)
Category: core
Target version: current: 2.1.0
ruby -v: r39608
Backport: 


I would expect the following two methods to have the same arity:

    def old_way(req, options = {}); end
    def new_way(req, **options); end

    method(:new_way).arity # => 1, should be -2


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

In This Thread