Project

General

Profile

Actions

Bug #9155

closed

DelegateClass - ArgumentError: not delegated

Added by rhs (Russell Smith) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Target version:
ruby -v:
ruby 2.1.0dev (2013-11-23 trunk 43807) [x86_64-darwin13.0]
[ruby-core:58572]

Description

Running the attached code gives ArgumentError: not delegated. It's unexpected as it worked on preview 1 and in 2.0.0. Error pasted below. https://gist.github.com/ukd1/9293c419a080d034f4bb - has sample code plus runs on 2.0.0p247 + 2.1.0-preview1 and 2.1.0-preview2

ArgumentError: not delegated
from /Users/russ/.rvm/rubies/ruby-2.1.0-preview2/lib/ruby/2.1.0/delegate.rb:384:in __getobj__' from /Users/russ/.rvm/rubies/ruby-2.1.0-preview2/lib/ruby/2.1.0/delegate.rb:77:in method_missing'
from (irb):5:in initialize' from (irb):11:in new'
from (irb):11
from /Users/russ/.rvm/rubies/ruby-2.1.0-preview2/bin/irb:11:in `'


Files

sample.rb (171 Bytes) sample.rb sample file that's also in the gist in the issue rhs (Russell Smith), 11/26/2013 05:33 AM

Updated by hsbt (Hiroshi SHIBATA) over 10 years ago

  • Assignee set to nobu (Nobuyoshi Nakada)
  • Priority changed from Normal to 5

Updated by rhs (Russell Smith) over 10 years ago

@hsbt (Hiroshi SHIBATA) yep that's where I found the issue - I thought I'd make it easier to replicate with the above code :)

Actions #5

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r43984.
Russell, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


delegate.rb: ignore unset target

  • lib/delegate.rb (Delegator#method_missing): ignore the target if not
    set, and delegate to global methods. [ruby-core:58572] [Bug #9155]
  • lib/delegate.rb (Delegator#respond_to_missing): ditto.
  • lib/delegate.rb (SimpleDelegator#getobj): yield and return if
    not delegated but a block is given, like as Hash#fetch.
  • lib/delegate.rb (DelegateClass#getobj): ditto.
Actions #6

Updated by rhs (Russell Smith) over 10 years ago

No problem, thanks for the fix.

Just a quick question - Simon fixed this on github; is this not the correct place to do a pull request / fix for a bug? If you can let us know, next time we'll do it through the correct channel.

Russ

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

I prefer here but a pull request on github is also a correct place.

The reason I didn't merge it is:

  • I didn't want to add another instance variable, and
  • more importantly, a subclass of Delegator/DelegateClass may not call
    super in its setobj method, and then the flag will be left unset.
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0