summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--lib/ostruct.rb7
-rw-r--r--test/rss/test_dublincore.rb4
-rw-r--r--test/rss/test_trackback.rb2
-rw-r--r--test/ruby/test_eval.rb2
-rw-r--r--test/ruby/test_lambda.rb2
6 files changed, 20 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index ec96e958a6..3be2b3a574 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+Tue Sep 13 08:09:18 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * lib/ostruct.rb (new_ostruct_member): Object#send no longer call
+ private methods. [ruby-dev:27044]
+
+ * test/rss/test_dublincore.rb, test/rss/test_trackback.rb,
+ test/ruby/test_eval.rb, test/socket/test_socket.rb: ditto.
+
+ * test/ruby/test_lambda (test_call_with_block): lambda makes new scope
+ for formal block parameter.
+
Tue Sep 13 01:17:45 2005 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (proc_save_safe_level): no need to restrict safe level
diff --git a/lib/ostruct.rb b/lib/ostruct.rb
index 6af5bbdac0..f3ed01524b 100644
--- a/lib/ostruct.rb
+++ b/lib/ostruct.rb
@@ -70,9 +70,10 @@ class OpenStruct
def new_ostruct_member(name)
name = name.to_sym
unless self.respond_to?(name)
- meta = class << self; self; end
- meta.send(:define_method, name) { @table[name] }
- meta.send(:define_method, :"#{name}=") { |x| @table[name] = x }
+ class << self; self; end.class_eval do
+ define_method(name) { @table[name] }
+ define_method(:"#{name}=") { |x| @table[name] = x }
+ end
end
end
diff --git a/test/rss/test_dublincore.rb b/test/rss/test_dublincore.rb
index 5ad9311fb5..614c25eebe 100644
--- a/test/rss/test_dublincore.rb
+++ b/test/rss/test_dublincore.rb
@@ -151,7 +151,7 @@ EOR
@elems.each do |name, value|
excepted = "<#{@prefix}:#{name}>#{value}</#{@prefix}:#{name}>"
@parents.each do |parent|
- assert_equal(excepted, @rss.send(parent).send("dc_#{name}_elements"))
+ assert_equal(excepted, @rss.send(parent).fcall("dc_#{name}_elements"))
end
excepted = Array.new(2, excepted).join("\n")
@@ -161,7 +161,7 @@ EOR
klass_name = "DublinCore#{Utils.to_class_name(name.to_s)}"
klass = DublinCoreModel.const_get(klass_name)
elems << klass.new(@rss.send(parent).send("dc_#{name}"))
- assert_equal(excepted, @rss.send(parent).send("dc_#{name}_elements"))
+ assert_equal(excepted, @rss.send(parent).fcall("dc_#{name}_elements"))
end
end
diff --git a/test/rss/test_trackback.rb b/test/rss/test_trackback.rb
index a3f023e887..2f92a0b1fe 100644
--- a/test/rss/test_trackback.rb
+++ b/test/rss/test_trackback.rb
@@ -114,7 +114,7 @@ EOR
@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).fcall(meth))
end
end
diff --git a/test/ruby/test_eval.rb b/test/ruby/test_eval.rb
index 6b3fea7bb4..273b3172b9 100644
--- a/test/ruby/test_eval.rb
+++ b/test/ruby/test_eval.rb
@@ -146,7 +146,7 @@ class TestEval < Test::Unit::TestCase
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.fcall(:define_method, :zzz, &block)
}
end
v = eval("temporally_method_for_test_eval_and_define_method {}")
diff --git a/test/ruby/test_lambda.rb b/test/ruby/test_lambda.rb
index 0173bead11..d65ab7667f 100644
--- a/test/ruby/test_lambda.rb
+++ b/test/ruby/test_lambda.rb
@@ -38,7 +38,7 @@ class TestLambdaParameters < Test::Unit::TestCase
assert_equal(1, ->(&b){ b.call }.call { 1 })
b = nil
assert_equal(1, ->(&b){ b.call }.call { 1 })
- assert_not_nil(b)
+ assert_nil(b)
end
def foo