ruby-changes:2333
From: ko1@a...
Date: 5 Nov 2007 05:37:28 +0900
Subject: [ruby-changes:2333] matz - Ruby:r13824 (trunk): * eval.c (rb_f_send): allow send/__send__ to call methods of all
matz 2007-11-05 05:36:20 +0900 (Mon, 05 Nov 2007)
New Revision: 13824
Modified files:
trunk/ChangeLog
trunk/bootstraptest/test_eval.rb
trunk/bootstraptest/test_method.rb
trunk/compile.c
trunk/eval.c
trunk/eval_method.ci
trunk/id.c
trunk/insnhelper.ci
trunk/lib/date.rb
trunk/lib/delegate.rb
trunk/lib/drb/drb.rb
trunk/lib/matrix.rb
trunk/lib/monitor.rb
trunk/lib/net/imap.rb
trunk/lib/net/smtp.rb
trunk/test/pathname/test_pathname.rb
trunk/test/rss/test_content.rb
trunk/test/rss/test_dublincore.rb
trunk/test/rss/test_syndication.rb
trunk/test/rss/test_taxonomy.rb
trunk/test/rss/test_trackback.rb
trunk/test/ruby/test_alias.rb
trunk/test/ruby/test_assignment.rb
trunk/test/ruby/test_eval.rb
trunk/test/ruby/test_primitive.rb
trunk/test/socket/test_socket.rb
trunk/test/socket/test_udp.rb
trunk/yarvtest/test_eval.rb
Log:
* eval.c (rb_f_send): allow send/__send__ to call methods of all
visibility again. we no longer provide __send, __send!.
* eval.c (rb_invoke_method): new method to honor private
visibility. if it's invoked in a function call style, it calls
private methods as well (previous 1.9 send behavior).
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/yarvtest/test_eval.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/date.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/insnhelper.ci?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_assignment.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/pathname/test_pathname.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/socket/test_socket.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_syndication.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/net/imap.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/monitor.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/delegate.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/compile.c?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_trackback.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/id.c?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/eval_method.ci?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_method.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/socket/test_udp.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/eval.c?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/net/smtp.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/matrix.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_eval.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_alias.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_content.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_taxonomy.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bootstraptest/test_eval.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/ruby/test_primitive.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/rss/test_dublincore.rb?r1=13824&r2=13823
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/drb/drb.rb?r1=13824&r2=13823
Index: eval_method.ci
===================================================================
--- eval_method.ci (revision 13823)
+++ eval_method.ci (revision 13824)
@@ -158,7 +158,7 @@
}
}
- if (mid == object_id || mid == __send || mid == __send_bang) {
+ if (mid == object_id || mid == __send__) {
if (node && nd_type(node) == RUBY_VM_METHOD_NODE) {
rb_warn("redefining `%s' may cause serious problem",
rb_id2name(mid));
@@ -302,7 +302,7 @@
}
if (OBJ_FROZEN(klass))
rb_error_frozen("class/module");
- if (mid == object_id || mid == __send || mid == __send_bang || mid == init) {
+ if (mid == object_id || mid == __send__ || mid == init) {
rb_warn("removing `%s' may cause serious problem", rb_id2name(mid));
}
if (st_lookup(RCLASS_M_TBL(klass), mid, &data)) {
@@ -466,7 +466,7 @@
rb_id2name(id));
}
rb_frozen_class_p(klass);
- if (id == object_id || id == __send || id == __send_bang || id == init) {
+ if (id == object_id || id == __send__ || id == init) {
rb_warn("undefining `%s' may cause serious problem", rb_id2name(id));
}
body = search_method(klass, id, &origin);
Index: ChangeLog
===================================================================
--- ChangeLog (revision 13823)
+++ ChangeLog (revision 13824)
@@ -17,6 +17,15 @@
User-Agent to fix 500 error on some corrupted HTTP servers.
[ruby-core:13135]
+Mon Nov 5 00:32:32 2007 Yukihiro Matsumoto <matz@r...>
+
+ * eval.c (rb_f_send): allow send/__send__ to call methods of all
+ visibility again. we no longer provide __send, __send!.
+
+ * eval.c (rb_invoke_method): new method to honor private
+ visibility. if it's invoked in a function call style, it calls
+ private methods as well (previous 1.9 send behavior).
+
Mon Nov 5 00:24:24 2007 NAKAMURA Usaku <usa@r...>
* win32/Makefile.sub: vendor_ruby support.
Index: bootstraptest/test_method.rb
===================================================================
--- bootstraptest/test_method.rb (revision 13823)
+++ bootstraptest/test_method.rb (revision 13824)
@@ -314,9 +314,9 @@
assert_equal '[1, 2]', %q( class C; def m(*a) a end end;
C.new.send(:m,1,2).inspect )
assert_equal '1', %q( class C; def m() 7 end; private :m end
- begin C.new.send(:m); rescue NoMethodError; 1 end )
+ begin C.new.invoke_method(:m); rescue NoMethodError; 1 end )
assert_equal '1', %q( class C; def m() 1 end; private :m end
- C.new.send!(:m) )
+ C.new.send(:m) )
# with block
assert_equal '[[:ok1, :foo], [:ok2, :foo, :bar]]',
@@ -867,8 +867,6 @@
end
end
- alias send! send unless defined? send!
-
c1 = c2 = nil
lambda{
@@ -899,8 +897,8 @@
test{o2.mm}
test{o1.send :m}
test{o2.send :mm}
- test{o1.send! :m}
- test{o2.send! :mm}
+ test{o1.invoke_method :m}
+ test{o2.invoke_method :mm}
test{o1.method(:m).call}
test{o2.method(:mm).call}
$ans
Index: bootstraptest/test_eval.rb
===================================================================
--- bootstraptest/test_eval.rb (revision 13823)
+++ bootstraptest/test_eval.rb (revision 13824)
@@ -89,12 +89,12 @@
eval('a')
}
assert_equal %q{ok}, %q{
- __send! :eval, %{
+ __send__ :eval, %{
:ok
}
}
assert_equal %q{ok}, %q{
- 1.__send! :instance_eval, %{
+ 1.__send__ :instance_eval, %{
:ok
}
}
Index: lib/monitor.rb
===================================================================
--- lib/monitor.rb (revision 13823)
+++ lib/monitor.rb (revision 13824)
@@ -91,13 +91,13 @@
if timeout
raise NotImplementedError, "timeout is not implemented yet"
end
- @monitor.send!(:mon_check_owner)
- count = @monitor.send!(:mon_exit_for_cond)
+ @monitor.send(:mon_check_owner)
+ count = @monitor.send(:mon_exit_for_cond)
begin
@cond.wait(@monitor.instance_variable_get("@mon_mutex"))
return true
ensure
- @monitor.send!(:mon_enter_for_cond, count)
+ @monitor.send(:mon_enter_for_cond, count)
end
end
@@ -114,12 +114,12 @@
end
def signal
- @monitor.send!(:mon_check_owner)
+ @monitor.send(:mon_check_owner)
@cond.signal
end
def broadcast
- @monitor.send!(:mon_check_owner)
+ @monitor.send(:mon_check_owner)
@cond.broadcast
end
@@ -137,7 +137,7 @@
def self.extend_object(obj)
super(obj)
- obj.send!(:mon_initialize)
+ obj.send(:mon_initialize)
end
#
Index: lib/delegate.rb
===================================================================
--- lib/delegate.rb (revision 13823)
+++ lib/delegate.rb (revision 13824)
@@ -115,7 +115,7 @@
# implementation, see SimpleDelegator.
#
class Delegator
- preserved = [:__id__, :object_id, :__send__, :__send, :__send!, :respond_to?, :send, :send!]
+ preserved = [:__id__, :object_id, :__send__, :invoke_method, :respond_to?, :send]
instance_methods.each do |m|
next if preserved.include?(m)
undef_method m
@@ -137,7 +137,7 @@
unless target.respond_to?(m)
super(m, *args, &block)
else
- target.__send(m, *args, &block)
+ target.__send__(m, *args, &block)
end
rescue Exception
$@.delete_if{|s| /^#{__FILE__}:\d+:in `method_missing'$/ =~ s} #`
@@ -262,7 +262,7 @@
klass = Class.new
methods = superclass.public_instance_methods(true)
methods -= [
- :__id__, :object_id, :__send__, :__send, :__send!, :respond_to?, :send, :send!,
+ :__id__, :object_id, :__send__, :invoke_method, :respond_to?, :send,
:==, :equal?, :initialize, :method_missing, :__getobj__, :__setobj__,
:clone, :dup, :marshal_dump, :marshal_load,
]
@@ -281,7 +281,7 @@
klass.module_eval <<-EOS, __FILE__, __LINE__+1
def #{method}(*args, &block)
begin
- @delegate_dc_obj.__send(:#{method}, *args, &block)
+ @delegate_dc_obj.__send__(:#{method}, *args, &block)
rescue
raise $!, $@[2..-1]
end
Index: lib/date.rb
===================================================================
--- lib/date.rb (revision 13823)
+++ lib/date.rb (revision 13824)
@@ -877,14 +877,14 @@
when :civil
g[1].each do |e|
break if elem[e]
- elem[e] = d.__send!(e)
+ elem[e] = d.__send__(e)
end
elem[:mon] ||= 1
elem[:mday] ||= 1
when :commercial
g[1].each do |e|
break if elem[e]
- elem[e] = d.__send!(e)
+ elem[e] = d.__send__(e)
end
elem[:cweek] ||= 1
elem[:cwday] ||= 1
@@ -893,14 +893,14 @@
when :wnum0
g[1].each do |e|
break if elem[e]
- elem[e] = d.__send!(e)
+ elem[e] = d.__send__(e)
end
elem[:wnum0] ||= 0
elem[:wday] ||= 0
when :wnum1
g[1].each do |e|
break if elem[e]
- elem[e] = d.__send!(e)
+ elem[e] = d.__send__(e)
end
elem[:wnum1] ||= 0
elem[:wday] ||= 0
@@ -1727,16 +1727,16 @@
def to_time() getlocal end
def to_date
- jd = Date.__send!(:civil_to_jd, year, mon, mday, Date::ITALY)
- Date.new!(Date.__send!(:jd_to_ajd, jd, 0, 0), 0, Date::ITALY)
+ jd = Date.__send__(:civil_to_jd, year, mon, mday, Date::ITALY)
+ Date.new!(Date.__send__(:jd_to_ajd, jd, 0, 0), 0, Date::ITALY)
end
def to_datetime
- jd = DateTime.__send!(:civil_to_jd, year, mon, mday, DateTime::ITALY)
- fr = DateTime.__send!(:time_to_day_fraction, hour, min, [sec, 59].min) +
+ jd = DateTime.__send__(:civil_to_jd, year, mon, mday, DateTime::ITALY)
+ fr = DateTime.__send__(:time_to_day_fraction, hour, min, [sec, 59].min) +
usec.to_r/86400_000_000
of = utc_offset.to_r/86400
- DateTime.new!(DateTime.__send!(:jd_to_ajd, jd, fr, of),
+ DateTime.new!(DateTime.__send__(:jd_to_ajd, jd, fr, of),
of, DateTime::ITALY)
end
Index: lib/net/smtp.rb
===================================================================
--- lib/net/smtp.rb (revision 13823)
+++ lib/net/smtp.rb (revision 13824)
@@ -722,7 +722,7 @@
def authenticate(user, secret, authtype = DEFAULT_AUTH_TYPE)
check_auth_method authtype
check_auth_args user, secret
- send! auth_method(authtype), user, secret
+ send auth_method(authtype), user, secret
end
def auth_plain(user, secret)
Index: lib/net/imap.rb
===================================================================
--- lib/net/imap.rb (revision 13823)
+++ lib/net/imap.rb (revision 13824)
@@ -1229,7 +1229,7 @@
class RawData # :nodoc:
def send_data(imap)
- imap.send!(:put_string, @data)
+ imap.send(:put_string, @data)
end
private
@@ -1241,7 +1241,7 @@
class Atom # :nodoc:
def send_data(imap)
- imap.send!(:put_string, @data)
+ imap.send(:put_string, @data)
end
private
@@ -1253,7 +1253,7 @@
class QuotedString # :nodoc:
def send_data(imap)
- imap.send!(:send_quoted_string, @data)
+ imap.send(:send_quoted_string, @data)
end
private
@@ -1265,7 +1265,7 @@
class Literal # :nodoc:
def send_data(imap)
- imap.send!(:send_literal, @data)
+ imap.send(:send_literal, @data)
end
private
@@ -1277,7 +1277,7 @@
class MessageSet # :nodoc:
def send_data(imap)
- imap.send!(:put_string, format_internal(@data))
+ imap.send(:put_string, format_internal(@data))
end
private
Index: lib/matrix.rb
===================================================================
--- lib/matrix.rb (revision 13823)
+++ lib/matrix.rb (revision 13824)
@@ -246,7 +246,7 @@
# use to general users.
#
def initialize(init_method, *argv)
- self.send!(init_method, *argv)
+ self.send(init_method, *argv)
end
def init_rows(rows, copy)
Index: lib/drb/drb.rb
===================================================================
--- lib/drb/drb.rb (revision 13823)
+++ lib/drb/drb.rb (revision 13824)
@@ -1553,7 +1553,7 @@
end
ary.collect(&@obj)[0]
else
- @obj.send!(@msg_id, *@argv)
+ @obj.send(@msg_id, *@argv)
end
end
Index: compile.c
===================================================================
--- compile.c (revision 13823)
+++ compile.c (revision 13824)
@@ -1483,11 +1483,11 @@
}
if (mid == idSend || mid == id__send ||
- mid == idSendBang || mid == id__send_bang ||
+ mid == idSendBang ||
mid == id__send__ ) {
OPERAND_AT(iobj, 3) |= INT2FIX(VM_CALL_SEND_BIT);
}
- if (mid == idSendBang || mid == id__send_bang) {
+ if (mid == idSendBang) {
OPERAND_AT(iobj, 3) |= INT2FIX(VM_CALL_SEND_BANG_BIT);
}
}
Index: eval.c
===================================================================
--- eval.c (revision 13823)
+++ eval.c (revision 13824)
@@ -25,7 +25,7 @@
static ID removed, singleton_removed, undefined, singleton_undefined;
static ID init, eqq, each, aref, aset, match, missing;
static ID added, singleton_added;
-static ID object_id, __send, __send_bang, respond_to;
+static ID object_id, __send__, respond_to;
VALUE rb_eLocalJumpError;
VALUE rb_eSysStackError;
@@ -1471,7 +1471,7 @@
/*
* call-seq:
* obj.send(symbol [, args...]) => obj
- * obj.__send__(symbol [, args...]) => obj
+ * obj.__send__(symbol [, args...]) => obj
*
* Invokes the method identified by _symbol_, passing it any
* arguments specified. You can use <code>__send__</code> if the name
@@ -1489,34 +1489,33 @@
VALUE
rb_f_send(int argc, VALUE *argv, VALUE recv)
{
- int scope = NOEX_PUBLIC;
- rb_thread_t *th = GET_THREAD();
- rb_control_frame_t *cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
-
- if (SPECIAL_CONST_P(cfp->sp[0])) {
- scope = NOEX_NOSUPER | NOEX_PRIVATE;
- }
-
- return send_internal(argc, argv, recv, scope);
+ return send_internal(argc, argv, recv, NOEX_NOSUPER | NOEX_PRIVATE);
}
+
/*
* call-seq:
- * obj.send!(symbol [, args...]) => obj
- * obj.__send!(symbol [, args...]) => obj
+ * obj.invoke_method(symbol [, args...]) => obj
*
* Invokes the method identified by _symbol_, passing it any
- * arguments specified. Unlike send, which calls public methods only
- * when it is invoked in function call style, send! always aware of
- * private methods.
+ * 1arguments specified. Unlike send, invoke_method calls public
+ * methods only, unless it's invoked in a function call style.
*
- * 1.send!(:puts, "hello") # prints "foo"
+ * 1.invoke_method(:puts, "hello") # causes NoMethodError
*/
VALUE
-rb_f_send_bang(int argc, VALUE *argv, VALUE recv)
+rb_invoke_method(int argc, VALUE *argv, VALUE recv)
{
- return send_internal(argc, argv, recv, NOEX_NOSUPER | NOEX_PRIVATE);
+ int scope = NOEX_PUBLIC;
+ rb_thread_t *th = GET_THREAD();
+ rb_control_frame_t *cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp);
+
+ if (SPECIAL_CONST_P(cfp->sp[0])) {
+ scope = NOEX_NOSUPER | NOEX_PRIVATE;
+ }
+
+ return send_internal(argc, argv, recv, scope);
}
VALUE
@@ -2718,8 +2717,7 @@
singleton_undefined = rb_intern("singleton_method_undefined");
object_id = rb_intern("object_id");
- __send = rb_intern("__send");
- __send_bang = rb_intern("__send!");
+ __send__ = rb_intern("__send__");
rb_define_virtual_variable("$@", errat_getter, errat_setter);
rb_define_virtual_variable("$!", errinfo_getter, 0);
@@ -2748,9 +2746,7 @@
rb_define_method(rb_cBasicObject, "send", rb_f_send, -1);
rb_define_method(rb_cBasicObject, "__send__", rb_f_send, -1);
- rb_define_method(rb_cBasicObject, "__send", rb_f_send, -1);
- rb_define_method(rb_cBasicObject, "send!", rb_f_send_bang, -1);
- rb_define_method(rb_cBasicObject, "__send!", rb_f_send_bang, -1);
+ rb_define_method(rb_mKernel, "invoke_method", rb_invoke_method, -1);
rb_define_method(rb_mKernel, "instance_eval", rb_obj_instance_eval, -1);
rb_define_method(rb_mKernel, "instance_exec", rb_obj_instance_exec, -1);
Index: id.c
===================================================================
--- id.c (revision 13823)
+++ id.c (revision 13824)
@@ -62,7 +62,5 @@
idSend = rb_intern("send");
idSendBang = rb_intern("send!");
- id__send = rb_intern("__send");
- id__send_bang = rb_intern("__send!");
id__send__ = rb_intern("__send__");
}
Index: yarvtest/test_eval.rb
===================================================================
--- yarvtest/test_eval.rb (revision 13823)
+++ yarvtest/test_eval.rb (revision 13824)
@@ -16,12 +16,12 @@
def test_eval_with_send
ae %q{
- __send! :eval, %{
+ __send__ :eval, %{
:ok
}
}
ae %q{
- 1.__send! :instance_eval, %{
+ 1.__send__ :instance_eval, %{
:ok
}
}
Index: test/ruby/test_alias.rb
===================================================================
--- test/ruby/test_alias.rb (revision 13823)
+++ test/ruby/test_alias.rb (revision 13824)
@@ -56,7 +56,7 @@
d = lambda {
$SAFE = 4
dclass = Class.new(C)
- dclass.send!(:alias_method, :mm, :m)
+ dclass.send(:alias_method, :mm, :m)
dclass.new
}.call
assert_raise(SecurityError) { d.mm }
Index: test/ruby/test_assignment.rb
===================================================================
--- test/ruby/test_assignment.rb (revision 13823)
+++ test/ruby/test_assignment.rb (revision 13824)
@@ -652,7 +652,7 @@
assign = assign.to_s
code1 = "#{assign}; [#{vars.join(",")}]"
assign.gsub!(/\bv\d+\b/, "o.a")
- code2 = "o=[];class << o; self end.send!(:define_method,:a=){|v|self << v};#{assign};o"
+ code2 = "o=[];class << o; self end.send(:define_method,:a=){|v|self << v};#{assign};o"
begin
vals1 = eval(code1)
rescue Exception
Index: test/ruby/test_eval.rb
===================================================================
--- test/ruby/test_eval.rb (revision 13823)
+++ test/ruby/test_eval.rb (revision 13824)
@@ -124,7 +124,7 @@
obj.class.class_variable_set :@@cvar, 13
# Use same value with env. See also test_instance_variable_cvar.
obj.class.const_set :Const, 15 unless obj.class.const_defined?(:Const)
- send! mid, obj
+ send mid, obj
end
end
@@ -364,7 +364,7 @@
assert_nothing_raised {
def temporally_method_for_test_eval_and_define_method(&block)
lambda {
- class << Object.new; self end.send!(:define_method, :zzz, &block)
+ class << Object.new; self end.send(:define_method, :zzz, &block)
}
end
v = eval("temporally_method_for_test_eval_and_define_method {}")
Index: test/ruby/test_primitive.rb
===================================================================
--- test/ruby/test_primitive.rb (revision 13823)
+++ test/ruby/test_primitive.rb (revision 13824)
@@ -50,7 +50,7 @@
assert_equal 3, A::B::C::Const
assert_equal 3, A::B::C.new.const
assert_equal 1, ::TestRubyPrimitive::A::Const
- A::B::C.send!(:remove_const, :Const)
+ A::B::C.send(:remove_const, :Const)
assert_equal 2, A::B::C.new.const
assert_raise(TypeError) {
C::CONST
Index: test/socket/test_socket.rb
===================================================================
--- test/socket/test_socket.rb (revision 13823)
+++ test/socket/test_socket.rb (revision 13824)
@@ -19,7 +19,7 @@
n = s.getsockopt(Socket::SOL_SOCKET, Socket::SO_ERROR)
assert_equal([0].pack("i"), n)
val = Object.new
- class << val; self end.send!(:define_method, :to_int) {
+ class << val; self end.send(:define_method, :to_int) {
s.close
Socket::SO_TYPE
}
@@ -34,7 +34,7 @@
linger = [0, 0].pack("ii")
val = Object.new
- class << val; self end.send!(:define_method, :to_str) {
+ class << val; self end.send(:define_method, :to_str) {
s.close
linger
}
@@ -47,7 +47,7 @@
end
val = Object.new
- class << val; self end.send!(:define_method, :to_int) {
+ class << val; self end.send(:define_method, :to_int) {
s.close
Socket::SO_LINGER
}
@@ -61,7 +61,7 @@
def test_listen
s = nil
log = Object.new
- class << log; self end.send!(:define_method, :to_int) {
+ class << log; self end.send(:define_method, :to_int) {
s.close
2
}
Index: test/socket/test_udp.rb
===================================================================
--- test/socket/test_udp.rb (revision 13823)
+++ test/socket/test_udp.rb (revision 13824)
@@ -9,7 +9,7 @@
def test_connect # [ruby-dev:25045]
s = UDPSocket.new
host = Object.new
- class << host; self end.send!(:define_method, :to_str) {
+ class << host; self end.send(:define_method, :to_str) {
s.close
"127.0.0.1"
}
@@ -21,7 +21,7 @@
def test_bind # [ruby-dev:25057]
s = UDPSocket.new
host = Object.new
- class << host; self end.send!(:define_method, :to_str) {
+ class << host; self end.send(:define_method, :to_str) {
s.close
"127.0.0.1"
}
Index: test/pathname/test_pathname.rb
===================================================================
--- test/pathname/test_pathname.rb (revision 13823)
+++ test/pathname/test_pathname.rb (revision 13824)
@@ -9,12 +9,6 @@
class TestPathname < Test::Unit::TestCase
- if RUBY_VERSION < "1.9"
- FUNCALL = :__send__
- else
- FUNCALL = :send!
- end
-
def self.define_assertion(name, &block)
@defassert_num ||= {}
@defassert_num[name] ||= 0
@@ -123,7 +117,7 @@
# has_trailing_separator?(path) -> bool
def has_trailing_separator?(path)
- Pathname.allocate.send(FUNCALL, :has_trailing_separator?, path)
+ Pathname.allocate.__send__(:has_trailing_separator?, path)
end
defassert(:has_trailing_separator?, false, "/")
@@ -132,11 +126,11 @@
defassert(:has_trailing_separator?, true, "a/")
def add_trailing_separator(path)
- Pathname.allocate.send(FUNCALL, :add_trailing_separator, path)
+ Pathname.allocate.__send__(:add_trailing_separator, path)
end
def del_trailing_separator(path)
- Pathname.allocate.send(FUNCALL, :del_trailing_separator, path)
+ Pathname.allocate.send(__send__, :del_trailing_separator, path)
end
defassert(:del_trailing_separator, "/", "/")
Index: test/rss/test_taxonomy.rb
===================================================================
--- test/rss/test_taxonomy.rb (revision 13823)
+++ test/rss/test_taxonomy.rb (revision 13824)
@@ -140,7 +140,7 @@
def test_to_s
@topics_parents.each do |parent|
meth = "taxo_topics_element"
- assert_equal(@topics_node, @rss.__send__(parent).__send!(meth))
+ assert_equal(@topics_node, @rss.__send__(parent).__send__(meth))
end
@topic_nodes.each_with_index do |node, i|
Index: test/rss/test_syndication.rb
===================================================================
--- test/rss/test_syndication.rb (revision 13823)
+++ test/rss/test_syndication.rb (revision 13824)
@@ -107,7 +107,7 @@
excepted = "<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
@parents.each do |parent|
assert_equal(excepted,
- @rss.__send__(parent).__send!("sy_#{name}_element"))
+ @rss.__send__(parent).__send__("sy_#{name}_element"))
end
end
Index: test/rss/test_trackback.rb
===================================================================
--- test/rss/test_trackback.rb (revision 13823)
+++ test/rss/test_trackback.rb (revision 13824)
@@ -114,7 +114,7 @@
@parents.each do |parent|
meth = "#{RSS::TRACKBACK_PREFIX}_#{name}_element"
meth << "s" if name == :about
- assert_equal(excepted, @rss.__send__(parent).__send!(meth))
+ assert_equal(excepted, @rss.__send__(parent).__send__(meth))
end
end
Index: test/rss/test_dublincore.rb
===================================================================
--- test/rss/test_dublincore.rb (revision 13823)
+++ test/rss/test_dublincore.rb (revision 13824)
@@ -245,7 +245,7 @@
excepted = "<#{DC_PREFIX}:#{name}>#{value}</#{DC_PREFIX}:#{name}>"
parents.each do |parent_readers|
parent = chain_reader(feed, parent_readers)
- assert_equal(excepted, parent.__send!("dc_#{name}_elements"))
+ assert_equal(excepted, parent.__send__("dc_#{name}_elements"))
end
plural_suffix = dc_plural_suffix(name, check_backward_compatibility)
@@ -257,7 +257,7 @@
klass_name = "DublinCore#{Utils.to_class_name(name.to_s)}"
klass = DublinCoreModel.const_get(klass_name)
elems << klass.new(parent.__send__("dc_#{name}"))
- assert_equal(excepted, parent.__send!("dc_#{name}_elements"))
+ assert_equal(excepted, parent.__send__("dc_#{name}_elements"))
end
end
Index: test/rss/test_content.rb
===================================================================
--- test/rss/test_content.rb (revision 13823)
+++ test/rss/test_content.rb (revision 13824)
@@ -85,7 +85,7 @@
excepted = make_element("#{@prefix}:#{name}", {}, value)
meth = "#{RSS::CONTENT_PREFIX}_#{name}_element"
[@rss10, @rss20].each do |rss|
- assert_equal(excepted, rss.items.last.__send!(meth))
+ assert_equal(excepted, rss.items.last.__send__(meth))
end
end
Index: insnhelper.ci
===================================================================
--- insnhelper.ci (revision 13823)
+++ insnhelper.ci (revision 13824)
@@ -588,10 +588,9 @@
{
if (*mn && nd_type((*mn)->nd_body) == NODE_CFUNC) {
NODE *node = (*mn)->nd_body;
- extern VALUE rb_f_send_bang(int argc, VALUE *argv, VALUE recv);
extern VALUE rb_f_send(int argc, VALUE *argv, VALUE recv);
- if (node->nd_cfnc == rb_f_send_bang || node->nd_cfnc == rb_f_send) {
+ if (node->nd_cfnc == rb_f_send) {
int i = *num - 1;
VALUE sym = TOPN(i);
*id = SYMBOL_P(sym) ? SYM2ID(sym) : rb_to_id(sym);
@@ -604,9 +603,6 @@
*mn = rb_method_node(klass, *id);
*num -= 1;
DEC_SP(1);
- }
-
- if (node->nd_cfnc == rb_f_send_bang) {
*flag |= VM_CALL_FCALL_BIT;
}
}
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml