[#39222] [Bug #2036] AIX 5L 5.2にて、ruby-1.8.7-p174のビルド時にmake testをするとエラーになった。not ok float 7 -- ./sample/test.rb:1232 — 和弥 寺元 <redmine@...>
Bug #2036: AIX 5L 5.2にて、ruby-1.8.7-p174のビルド時にmake testをするとエラーになった。not ok float 7 -- ./sample/test.rb:1232
チケット #2036 が更新されました。 (by 和弥 寺元)
[#39248] pdeque - Double-Ended Priority Queue — Tanaka Akira <akr@...>
優先順位つきキューとして、このメールにつけてある pdeque.rb
[#39249] [Bug #2060] DLをCからRubyに変換する事を勧めます — Aaron Patterson <redmine@...>
Bug #2060: DLをCからRubyに変換する事を勧めます
なかだです。
2009/9/7 Nobuyoshi Nakada <nobu@ruby-lang.org>:
[#39277] Why doesn't Array#product return Enumerator? — Yusuke ENDOH <mame@...>
遠藤です。
まつもと ゆきひろです
遠藤です。
まつもと ゆきひろです
[#39282] [Bug #2067] bodyが大きいエラーページをopen-uriで取得するとfdがリークしている — takeru sasaki <redmine@...>
チケット #2067 が更新されました。 (by takeru sasaki)
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
In article <E1MliJq-0000yc-4o@x61.netlab.jp>,
言いだしっぺの佐々木です。
まつもと ゆきひろです
佐々木です。
In article <c507366f0909102211s5ae74f72r82afabdf57ae89@mail.gmail.com>,
[#39301] [Feature #2080] Proc#to_source, Method#to_source — Yuki Sonoda <redmine@...>
Feature #2080: Proc#to_source, Method#to_source
[#39322] [Feature #2093] String#stripの対象は\sか[:space:]か — Yui NARUSE <redmine@...>
Feature #2093: String#stripの対象は\sか[:space:]か
[#39325] makeターゲットrdevを抽象化 — "KISHIMOTO, Makoto" <ksmakoto@...4u.or.jp>
きしもとです
なかだです。
[#39352] [ruby19] Thread 切替えが異常に遅い? — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
ささだです.
永井@知能.九工大です.
なかだです。
[#39361] [Bug:1.9] ("00".."00").to_a => ["0"] — Nobuhiro IMAI <nov@...>
いまいです。
[#39367] Almost endless loop of BigMath::atan(x) when x.abs >= 1 — "Masahiro Kanai (CanI)" <cani.m.61st@...>
金井 仁弘と申します。
豊福です。遅い反応ですが。
豊福です。
金井です。
豊福です。
豊福です。
豊福です。
金井です。
[#39372] [Proposal] メンテナ確認大会のお知らせ — Yugui <yugui@...>
Yuguiです。
WXVndWkbJEIkNSRzJWEhPCVrJCIkaiQsJEgkJiQ0JDYkJCReJDckPyEjJDMkQSRpJEtKVj8uJDck
[#39385] Removing constant-able macros inside of the loop. — "Masahiro Kanai (CanI)" <cani.m.61st@...>
金井 仁弘と申します。
[#39388] Re: [ruby-cvs:32331] Ruby:r25113 (trunk): String#inspect's encoding should be fixed. — "Martin J. Dürst" <duerst@...>
成瀬さん、こんにちは。
こんにちは、なかむら(う)です。
成瀬です。
中村さん、成瀬さん、こんにちは。
MjAwOeW5tDnmnIgyOeaXpTEyOjMxICJNYXJ0aW4gSi4gRMO8cnN0IiA8ZHVlcnN0QGl0LmFveWFt
[#39404] [ANN] Ruby Developer's Meeting 20091013 — Yugui <yugui@...>
Yuguiです。
[ruby-dev:39397] redifition warning for module_function
なかだです。
jsonで警告が出ます。
$ ruby -w -rjson -ep
/usr/local/lib/ruby/1.9.1/json/common.rb:273: warning: method redefined; discarding old recurse_proc
最小化すると
$ ruby -w -e 'module M; module_function; def foo;end; module_function :foo; end'
-e:1: warning: method redefined; discarding old foo
module_functionによって定義された特異メソッドをもう一度
module_functionで再定義ということのようです。実際には同じaliasの
ようなものを作り直すだけなので、この警告は不要ではないかと思います。
Index: method.h
===================================================================
--- method.h (revision 25143)
+++ method.h (working copy)
@@ -75,4 +75,5 @@ typedef struct rb_method_entry_struct {
#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
+#define CFUNC_EQUAL(cf1, cf2) ((cf1).func == (cf2).func && (cf1).argc == (cf2).argc)
void rb_add_method_cfunc(VALUE klass, ID mid, VALUE (*func)(ANYARGS), int argc, rb_method_flag_t noex);
Index: vm_method.c
===================================================================
--- vm_method.c (revision 25143)
+++ vm_method.c (working copy)
@@ -142,4 +142,34 @@ rb_free_method_entry(rb_method_entry_t *
}
+static inline int
+method_definition_equal(const rb_method_definition_t *def1, const rb_method_definition_t *def2)
+{
+ if (def1 == def2) return TRUE;
+ if (!def1 || !def2) return FALSE;
+ if (def1->type != def2->type) return FALSE;
+ if (def1->original_id != def2->original_id) return FALSE;
+ switch (def1->type) {
+ case VM_METHOD_TYPE_CFUNC:
+ if (!CFUNC_EQUAL(def1->body.cfunc, def2->body.cfunc)) return FALSE;
+ break;
+ case VM_METHOD_TYPE_IVAR:
+ case VM_METHOD_TYPE_ATTRSET:
+ if (def1->body.attr_id != def2->body.attr_id) return FALSE;
+ break;
+ case VM_METHOD_TYPE_BMETHOD:
+ if (def1->body.proc != def2->body.proc) return FALSE;
+ break;
+ case VM_METHOD_TYPE_ISEQ:
+ if (def1->body.iseq != def2->body.iseq) return FALSE;
+ break;
+ case VM_METHOD_TYPE_OPTIMIZED:
+ if (def1->body.optimize_type != def2->body.optimize_type) return FALSE;
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
static rb_method_entry_t *
rb_add_method_def(VALUE klass, ID mid, rb_method_type_t type, rb_method_definition_t *def, rb_method_flag_t noex)
@@ -180,5 +210,5 @@ rb_add_method_def(VALUE klass, ID mid, r
rb_method_definition_t *old_def = old_me->def;
- if (old_def == def) return old_me;
+ if (method_definition_equal(old_def, def)) return old_me;
rb_vm_check_redefinition_opt_method(old_me);
Index: test/ruby/test_class.rb
===================================================================
--- test/ruby/test_class.rb (revision 25143)
+++ test/ruby/test_class.rb (working copy)
@@ -99,4 +99,15 @@ class TestClass < Test::Unit::TestCase
end
+ def verbose_warning
+ class << (stderr = "")
+ alias write <<
+ end
+ stderr, $stderr, verbose, $VERBOSE = $stderr, stderr, $VERBOSE, true
+ yield
+ ensure
+ stderr, $stderr, $VERBOSE = $stderr, stderr, verbose
+ return stderr
+ end
+
def test_module_function
c = Class.new
@@ -104,4 +115,27 @@ class TestClass < Test::Unit::TestCase
Module.instance_method(:module_function).bind(c).call(:foo)
end
+ stderr = verbose_warning do
+ Module.new do
+ def foo; end
+ def foo; end
+ end
+ end
+ assert_match(/method redefined; discarding old foo/, stderr)
+ stderr = verbose_warning do
+ Module.new do
+ def foo; end
+ alias bar foo
+ alias bar foo
+ end
+ end
+ assert_equal("", stderr)
+ stderr = verbose_warning do
+ Module.new do
+ module_function
+ def foo; end
+ module_function :foo
+ end
+ end
+ assert_equal("", stderr)
end
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦