[#29911] [Bug #3231] Digest Does Not Build — Charlie Savage <redmine@...>

Bug #3231: Digest Does Not Build

19 messages 2010/05/01

[#29920] [Feature #3232] Loops (while/until) should return last statement value if any, like if/unless — Benoit Daloze <redmine@...>

Feature #3232: Loops (while/until) should return last statement value if any, like if/unless

9 messages 2010/05/01

[#29997] years in Time.utc — Xavier Noria <fxn@...>

Does anyone have a precise statement about the years supported by

13 messages 2010/05/04

[#30010] [Bug #3248] extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly — Luis Lavena <redmine@...>

Bug #3248: extension 'tk' is finding tclConfig.sh and tkConfig.sh incorrectly

9 messages 2010/05/05

[#30226] [Bug #3288] Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88 — Szymon Jeż <redmine@...>

Bug #3288: Segmentation fault - activesupport-3.0.0.beta3/lib/active_support/callbacks.rb:88

10 messages 2010/05/13

[#30358] tk doesn't startup well in doze — Roger Pack <rogerdpack2@...>

Currently with 1.9.x and tk 8.5,the following occurs

12 messages 2010/05/22

[ruby-core:30451] [Bug #3352] Delegates: protected methods

From: Marc-Andre Lafortune <redmine@...>
Date: 2010-05-27 06:55:30 UTC
List: ruby-core #30451
Bug #3352: Delegates: protected methods
http://redmine.ruby-lang.org/issues/show/3352

Author: Marc-Andre Lafortune
Status: Open, Priority: Low
Assigned to: Marc-Andre Lafortune, Category: lib, Target version: 1.9.2
ruby -v: trunk

require 'delegate'

    class X
      protected
        def pro
          :foo
        end
    end
    obj = X.new

    obj.pro #=> NoMethodError: protected method `pro' called for #<X:0x000001008a2a68>
    SimpleDelegator.new(obj).pro #=> :foo


I feel it would be more sensible to raise a NoMethodError.

No test seem to be testing for protected access, nor does RubySpec.

Unless there is objection, I'll commit the following:

diff --git a/lib/delegate.rb b/lib/delegate.rb
index f366091..93fbc37 100644
--- a/lib/delegate.rb
+++ b/lib/delegate.rb
@@ -141,7 +141,7 @@ class Delegator < BasicObject
   def method_missing(m, *args, &block)
     target = self.__getobj__
     begin
-      target.respond_to?(m) ? target.__send__(m, *args, &block) : super(m, *args, &block)
+      target.respond_to?(m) ? target.public_send(m, *args, &block) : super
     ensure
       $@.delete_if {|t| %r"\A#{Regexp.quote(__FILE__)}:#{__LINE__-2}:"o =~ t} if $@
     end


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next