[#42851] Object#define_singleton_method がない?? — take_tk <ggb03124@...>

たけ(tk)です

14 messages 2006/10/06
[#42852] Re: Object#define_singleton_method がない?? — Yukihiro Matsumoto <matz@...> 2006/10/06

まつもと ゆきひろです

[#42853] Re: Object#define_singleton_method がない?? — take_tk <ggb03124@...> 2006/10/06

たけ(tk)です。

[#42870] system の実行タイミングのトラブル — "Hideo Konami" <konami@...>

小波です。

18 messages 2006/10/14
[#42874] Re: system の実行タイミングのトラブル — "Hideo Konami" <konami@...> 2006/10/14

小波です。

[#42876] Re: system の実行タイミングのトラブル — cuzic <cuzic@...> 2006/10/14

cuzic です。

[#42885] apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...>

ruby-list のみなさま、

21 messages 2006/10/16
[#42891] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42892] Re: apt-listbugs: soap4r での悩み — Junichi Uekawa <dancer@...> 2006/10/17

こんにちは、

[#42896] Re: apt-listbugs: soap4r での悩み — "NAKAMURA, Hiroshi" <nakahiro@...> 2006/10/17

-----BEGIN PGP SIGNED MESSAGE-----

[#42929] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...>

こんにちは、なかむら(う)です。

17 messages 2006/10/31
[#42930] Re: 括弧なしsuperで引数が引き継がれない — "U.Nakamura" <usa@...> 2006/10/31

こんにちは、なかむら(う)です。

[#42931] instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間といいます。

[#42933] Re: instant rails インストール! irbを起動するには? — "きむらこういち" <hogemuta@...> 2006/10/31

木村です。

[#42937] Re: instant rails インストール! irbを起動するには? — "Uema Tsuyoshi" <mugenkai15@...> 2006/10/31

上間です。

[ruby-list:42929] Re: 括弧なしsuperで引数が引き継がれない

From: "U.Nakamura" <usa@...>
Date: 2006-10-31 09:10:28 UTC
List: ruby-list #42929
こんにちは、なかむら(う)です。

In message "[ruby-list:42928] 括弧なしsuperで引数が引き継がれない"
    on Oct.31,2006 13:12:57, <gimite@gmail.com> wrote:
| 括弧なしsuperの呼び出しで、引数が基底クラスのメソッドに引き継がれない場合があるようです。

1.8は以下のような感じで直りそうです。

1.9はだいたい大丈夫なのですが、引数を渡さなかった場合にデフォ
ルト引数がzsuperでは渡されないようです。
パッチは省略しますが、formal_assign()の中で、以下のパッチと同
様にデフォルト引数を処理するrb_eval()の後で++iが必要なのでは
ないかと思われます。

Index: eval.c
===================================================================
RCS file: /home/cvs/ruby/eval.c,v
retrieving revision 1.616.2.196
diff -u -1 -p -r1.616.2.196 eval.c
--- eval.c	4 Oct 2006 08:35:18 -0000	1.616.2.196
+++ eval.c	31 Oct 2006 09:07:16 -0000
@@ -5927,2 +5927,3 @@ rb_call0(klass, recv, id, oid, argc, arg
 			    argv++; argc--;
+			    ++i;
 			    opt = opt->nd_next;
@@ -5931,6 +5932,9 @@ rb_call0(klass, recv, id, oid, argc, arg
 			    rb_eval(recv, opt);
+			    ++i;
 			}
+		    }
+		    if (!node->nd_rest) {
 			i = nopt;
 		    }
-		    if (node->nd_rest) {
+		    else {
 			VALUE v;
Index: test/ruby/test_call.rb
===================================================================
RCS file: /home/cvs/ruby/test/ruby/test_call.rb,v
retrieving revision 1.3.2.1
diff -u -1 -p -r1.3.2.1 test_call.rb
--- test/ruby/test_call.rb	18 Feb 2004 13:21:10 -0000	1.3.2.1
+++ test/ruby/test_call.rb	31 Oct 2006 09:07:16 -0000
@@ -18,2 +18,21 @@ class TestCall < Test::Unit::TestCase
   end
+
+  class Foo
+    def foo(*a)
+      a
+    end
+  end
+  class Bar < Foo
+    def foo(a = 0, *b)
+      super
+    end
+  end
+
+  def test_zsuper
+    bar = Bar.new
+    assert_equal([0], bar.foo)
+    assert_equal([1], bar.foo(1))
+    assert_equal([1, 2], bar.foo(1, 2))
+    assert_equal([1, 2, 3], bar.foo(1, 2, 3))
+  end
 end

それでは。
-- 
U.Nakamura <usa@garbagecollect.jp>



In This Thread

Prev Next