[#10853] Why limit class def to a constant or colon node? — Charles Oliver Nutter <charles.nutter@...>

Is there a historical reason why I can't do something like these:

12 messages 2007/04/03

[#10933] Cannot build with extra library path if previous version already installed — <noreply@...>

Bugs item #10140, was opened at 2007-04-16 17:32

10 messages 2007/04/16
[#10934] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — nobu@... 2007/04/16

Hi,

[#10960] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — "Michal Suchanek" <hramrach@...> 2007/04/18

On 4/16/07, nobu@ruby-lang.org <nobu@ruby-lang.org> wrote:

[#10967] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — Nobuyoshi Nakada <nobu@...> 2007/04/19

Hi,

[#10970] Re: [ ruby-Bugs-10140 ] Cannot build with extra library path if previous version already installed — "Michal Suchanek" <hramrach@...> 2007/04/19

On 4/19/07, Nobuyoshi Nakada <nobu@ruby-lang.org> wrote:> Hi,>> At Wed, 18 Apr 2007 20:21:44 +0900,> Michal Suchanek wrote in [ruby-core:10960]:> > Yes. And this should also apply to extensions. The mkmf tests are now> > fine but the extension is linked with -L/sw/lib before -L../..>> Indeed.>>> Index: configure.in> ===================================================================> --- configure.in (revision 12191)> +++ configure.in (working copy)> @@ -1385,5 +1385,4 @@ if test "$enable_rpath" = yes; then> fi>> -LDFLAGS="-L. $LDFLAGS"> AC_SUBST(ARCHFILE)>This would break the previous fix so I did not even try to apply this ^

[#11003] miniruby loads extensions from already installed ruby — <noreply@...>

Bugs item #10303, was opened at 2007-04-23 10:44

10 messages 2007/04/23

[#11025] gsub with backslash characters in replacement string — "Adam Bozanich" <adam.boz@...>

Hello, spotted this one the other day:

10 messages 2007/04/26

Re: [patch] Re: [BUG] Proc#arity regression or bug in RDoc

From: "Adam Bozanich" <adam.boz@...>
Date: 2007-04-29 04:37:32 UTC
List: ruby-core #11059
Cleaned it up a bit & added some tests to sample/test.rb.  Not sure where
you guys prefer the unit tests to go.  Is there a specific policy?  Also, is
it better to submit small patches like this to rubyforge or directly this
list?

-Adam

Index: proc.c
===================================================================
--- proc.c      (revision 12228)
+++ proc.c      (working copy)
@@ -434,9 +434,9 @@
     GetProcPtr(self, proc);
     iseq = proc->block.iseq;
     if (iseq && BUILTIN_TYPE(iseq) != T_NODE) {
-       if (iseq->arg_rest == 0 && iseq->arg_opts == 0) {
-           return INT2FIX(iseq->argc);
-       }
+       if( iseq->arg_rest < 0 ) {
+               return INT2FIX(iseq->argc);
+       }
        else {
            return INT2FIX(-iseq->argc - 1);
        }
Index: sample/test.rb
===================================================================
--- sample/test.rb      (revision 12228)
+++ sample/test.rb      (working copy)
@@ -1283,6 +1283,36 @@
 lambda(&method(:test_ok)).call(true)
 lambda(&block_get{|a,n| test_ok(a,n)}).call(true, 2)

+# Proc#arity
+test_ok( Proc.new {}.arity        ,  0 )
+test_ok( Proc.new {||}.arity      ,  0 )
+test_ok( Proc.new {|a|}.arity     ,  1 )
+test_ok( Proc.new {|a,b|}.arity   ,  2 )
+test_ok( Proc.new {|a,b,c|}.arity ,  3 )
+test_ok( Proc.new {|*a|}.arity    , -1 )
+test_ok( Proc.new {|a,*b|}.arity  , -2 )
+
+# Method#arity
+class C
+  def one;    end
+  def two(a); end
+  def three(*a);  end
+  def four(a, b); end
+  def five(a, b, *c);    end
+  def six(a, b, *c, &d); end
+end
+c = C.new
+test_ok( c.method(:one).arity   , 0 )
+test_ok( c.method(:two).arity   , 1 )
+test_ok( c.method(:three).arity , -1 )
+test_ok( c.method(:four).arity  , 2 )
+test_ok( c.method(:five).arity  , -3 )
+test_ok( c.method(:six).arity   , -3 )
+test_ok( "cat".method(:size).arity    , 0 )
+test_ok( "cat".method(:replace).arity , 1 )
+test_ok( "cat".method(:squeeze).arity , -1 )
+test_ok( "cat".method(:count).arity   , -1 )
+
 class ITER_TEST1
    def a
      block_given?


On 4/26/07, Adam Bozanich <adam.boz@gmail.com> wrote:
>
>
> On 4/26/07, Mauricio Fernandez <mfp@acm.org> wrote:
> >
> > 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
> >
> >
> This makes arity behave like the docs specify for both method.arity and
> proc.arity.  I'm sure it's naive, but it seems to work.
>
> -Adam
>
> Index: proc.c
> ===================================================================
> --- proc.c      (revision 12226)
> +++ proc.c      (working copy)
> @@ -434,11 +434,11 @@
>      GetProcPtr(self, proc);
>      iseq = proc->block.iseq;
>      if (iseq && BUILTIN_TYPE(iseq) != T_NODE) {
> -       if (iseq->arg_rest == 0 && iseq->arg_opts == 0) {
> -           return INT2FIX(iseq->argc);
> -       }
> +       if( iseq->arg_rest < 0 ) {
> +               return INT2FIX(iseq->argc);
> +       }
>         else {
> -           return INT2FIX(-iseq->argc - 1);
> +           return INT2FIX(-(iseq->argc + 1));
>         }
>      }
>      else {
>
>

In This Thread