On Thu, Apr 26, 2007 at 06:55:46PM +0900, Mauricio Fernandez wrote:
> $ 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).

It seems it's a regression after all; no time to fix it now, but I've found
when it happened:

ruby-trunk-12116$ ./ruby -v -e "p proc{}.arity"
ruby 1.9.0 (2007-03-21 patchlevel 0) [i686-linux]
0

ruby-trunk-12117$ ./ruby -v -e "p proc{}.arity"
ruby 1.9.0 (2007-03-21 patchlevel 0) [i686-linux]
-1

The regression was introduced in 

Wed Mar 21 20:05:07 2007  Koichi Sasada  <ko1 / atdot.net>

	* compile.c, parse.y, eval.c, intern.h, iseq.c, lex.c, node.h,
	  proc.c, vm.c, vm_macro.def, vm_macro.def, yarvcore.c, yarvcore.h,
	  debug.c, debug.h: merge half-baked-1.9 changes.  The biggest change
	  is to change node structure around NODE_SCOPE, NODE_ARGS.  Every
	  scope (method/class/block) has own NODE_SCOPE node and NODE_ARGS
	  represents more details of arguments information.  I'll write a
	  document about detail of node structure.


PS: there's already a test in test/ruby/test_proc.rb
  def test_arity
      assert_equal(0, proc{}.arity)
      assert_equal(0, proc{||}.arity)
  ...
maybe it should also be added to sample/test.rb, so it gets executed on 
make test  w/o requiring a full  make test-all ?

-- 
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