aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--lib/delegate.rb8
2 files changed, 14 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 510c105b89..319dccf863 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+Fri Oct 16 19:39:28 2009 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * lib/delegate.rb (Delegator#respond_to_missing): warn if optional
+ include_private argument is not false. Delegator does (and
+ should) not forward private methods. [ruby-core:26080]
+
+ * lib/delegate.rb (Delegator#respond_to_missing): instead of
+ redefining #respond_to?, use #respond_to_missing?.
+
Fri Oct 16 18:42:18 2009 Nobuyoshi Nakada <nobu@ruby-lang.org>
* bootstraptest/test_gc.rb: added tests based on [ruby-dev:39484]
diff --git a/lib/delegate.rb b/lib/delegate.rb
index 57c479c61b..215ebf5e4d 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -146,9 +146,11 @@ class Delegator
# Checks for a method provided by this the delegate object by fowarding the
# call through \_\_getobj\_\_.
#
- def respond_to?(m, include_private = false)
- return true if super
- return self.__getobj__.respond_to?(m, include_private)
+ def respond_to_missing?(m, include_private = false)
+ if include_private
+ warn "#{caller(3)[0]}: delegator does not forward private methods"
+ end
+ self.__getobj__.respond_to?(m)
end
#