From: Mauricio Fernandez Date: 2007-04-26T18:55:46+09:00 Subject: [BUG] Proc#arity regression or bug in RDoc $ ruby19 -v -e "p proc{}.arity" ruby 1.9.0 (2007-02-07 patchlevel 0) [i686-linux] 0 $ ./ruby19 -v -e "p proc{}.arity" ruby 1.9.0 (2007-04-26 patchlevel 0) [i686-linux] -1 However, the RDoc documentation attached to proc_arity still says that it should return 0, so there's a bug, either in the code (wrong iseq->argc ?) or in the docs (if the latter, the patch below should do). See also [ruby-core:2829] [ruby-core:11026] [ruby-talk:249148] --- proc.c.orig 2007-04-26 11:48:35.000000000 +0200 +++ proc.c 2007-04-26 11:49:34.000000000 +0200 @@ -410,15 +410,14 @@ * call-seq: * prc.arity -> fixnum * - * Returns the number of arguments that would not be ignored. If the block - * is declared to take no arguments, returns 0. If the block is known - * to take exactly n arguments, returns n. If the block has optional - * arguments, return -n-1, where n is the number of mandatory - * arguments. A proc with no argument declarations - * is the same a block declaring || as its arguments. + * If the block is declared to take no arguments, returns -1. If the block is + * known to take exactly n arguments, returns n. If the block has optional + * arguments, return -n-1, where n is the number of mandatory arguments. A + * proc with no argument declarations is the same a block + * declaring || as its arguments. * - * Proc.new {}.arity #=> 0 - * Proc.new {||}.arity #=> 0 + * Proc.new {}.arity #=> -1 + * Proc.new {||}.arity #=> -1 * Proc.new {|a|}.arity #=> 1 * Proc.new {|a,b|}.arity #=> 2 * Proc.new {|a,b,c|}.arity #=> 3 -- Mauricio Fernandez - http://eigenclass.org - singular Ruby ** Latest postings ** On GC and finalizers in Ruby, corrected weak hash table implementations http://eigenclass.org/hiki/deferred-finalizers-in-Ruby simplefold: better vim folding (Ruby, Objective Caml, Perl, PHP, Java) http://eigenclass.org/hiki/simplefold