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

string.cをぼんやり眺めていて思い出したのですが、string =~ string
と ~string の警告がまたしてもHEADで無駄に無効になっていたので、
両方追放してみました(前者はTypeError、後者はNoMethodError)。
これでいいかどうかはよくわかりませんが、どっちにしろこれに類する
処置は必要だと思います。

ところで、1.8も同じコードがありますが、このままだとたぶん1.8.2に
した時に忘れて警告が出なくなるだけのような気がするので、
  #if RUBY_VERSION_CODE < xxx
で警告をくくるスタイルはやめませんか?
せめて
  #else
  # error
とでもなってればまだマシかも。

Index: Makefile.in =================================================================== RCS file: /home/cvs/ruby/Makefile.in,v retrieving revision 1.59 diff -u -1 -p -w -r1.59 Makefile.in --- Makefile.in 9 Feb 2004 08:46:23 -0000 1.59 +++ Makefile.in 10 Feb 2004 03:04:20 -0000 @@ -401,3 +401,3 @@ st.@OBJEXT@: st.c config.h st.h string.@OBJEXT@: string.c ruby.h config.h defines.h intern.h missing.h \ - re.h regex.h version.h + re.h regex.h struct.@OBJEXT@: struct.c ruby.h config.h defines.h intern.h missing.h Index: string.c =================================================================== RCS file: /home/cvs/ruby/string.c,v retrieving revision 1.186 diff -u -1 -p -w -r1.186 string.c --- string.c 30 Dec 2003 16:36:05 -0000 1.186 +++ string.c 10 Feb 2004 03:04:23 -0000 @@ -16,3 +16,2 @@ #include "re.h" -#include "version.h" @@ -1251,7 +1250,4 @@ rb_str_match(x, y) case T_STRING: -#if RUBY_VERSION_CODE < 182 - rb_warn("string =~ string will be obsolete; use explicit regexp"); -#endif - y = rb_reg_regcomp(y); - /* fall through */ + rb_raise(rb_eTypeError, "type mismatch: String given"); + case T_REGEXP: @@ -1265,20 +1261,2 @@ rb_str_match(x, y) -/* - * call-seq: - * ~str => fixnum or nil - * - * Equivalent to <code>$_</code><code>=~ <i>str</i></code>. - */ - -static VALUE -rb_str_match2(str) - VALUE str; -{ - StringValue(str); -#if RUBY_VERSION_CODE < 182 - rb_warn("~string will be obsolete; use explicit regexp"); -#endif - return rb_reg_match2(rb_reg_regcomp(rb_reg_quote(str))); -} - static VALUE get_pat _((VALUE, int)); @@ -4598,3 +4576,2 @@ Init_String() rb_define_method(rb_cString, "=~", rb_str_match, 1); - rb_define_method(rb_cString, "~", rb_str_match2, 0); rb_define_method(rb_cString, "match", rb_str_match_m, 1); Index: bcc32/Makefile.sub =================================================================== RCS file: /home/cvs/ruby/bcc32/Makefile.sub,v retrieving revision 1.46 diff -u -1 -p -w -r1.46 Makefile.sub --- bcc32/Makefile.sub 9 Feb 2004 08:46:24 -0000 1.46 +++ bcc32/Makefile.sub 10 Feb 2004 03:04:23 -0000 @@ -632,3 +632,3 @@ sprintf.obj: sprintf.c ruby.h config.h d st.obj: st.c config.h st.h -string.obj: string.c ruby.h config.h defines.h intern.h missing.h re.h regex.h version.h win32.h +string.obj: string.c ruby.h config.h defines.h intern.h missing.h re.h regex.h win32.h struct.obj: struct.c ruby.h config.h defines.h intern.h missing.h win32.h Index: win32/Makefile.sub =================================================================== RCS file: /home/cvs/ruby/win32/Makefile.sub,v retrieving revision 1.66 diff -u -1 -p -w -r1.66 Makefile.sub --- win32/Makefile.sub 9 Feb 2004 08:46:24 -0000 1.66 +++ win32/Makefile.sub 10 Feb 2004 03:04:24 -0000 @@ -711,4 +711,3 @@ string.obj: {$(srcdir)}string.c {$(srcdi {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \ - {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}version.h \ - {$(srcdir)}/win32/win32.h + {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h struct.obj: {$(srcdir)}struct.c {$(srcdir)}ruby.h config.h \ Index: wince/Makefile.sub =================================================================== RCS file: /home/cvs/ruby/wince/Makefile.sub,v retrieving revision 1.18 diff -u -1 -p -w -r1.18 Makefile.sub --- wince/Makefile.sub 29 Jan 2004 14:18:42 -0000 1.18 +++ wince/Makefile.sub 10 Feb 2004 03:04:24 -0000 @@ -705,4 +705,3 @@ string.obj: {$(srcdir)}string.c {$(srcdi {$(srcdir)}defines.h {$(srcdir)}intern.h {$(srcdir)}missing.h \ - {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}version.h \ - {$(srcdir)}/win32/win32.h + {$(srcdir)}re.h {$(srcdir)}regex.h {$(srcdir)}/win32/win32.h struct.obj: {$(srcdir)}struct.c {$(srcdir)}ruby.h config.h \
それでは。 -- U.Nakamura <usa / garbagecollect.jp>