Bug #4179
closedOpenStruct#method_missing handles #[]= wrongly
Description
=begin
Code to reproduce:¶
require "ostruct"
OpenStruct.new[:foo] = true
Expected¶
NoMethodError
to be raised, as OpenStruct#[]=
is not a defined method.
Actual¶
wrong number of arguments (2 for 1) (ArgumentError)
Notes¶
I wrote a test case to check that it would raise NoMethodError
when you call OpenStruct#[]=
, and then amended OpenStruct#method_missing
to fix the bug. Patch attached with both test case (including a check that OpenStruct#[]
raises a NoMethodError
too) and the fix in it.
=end
Files
Updated by caius (Caius Durling) about 14 years ago
=begin
On 20 Dec 2010, at 23:43, Caius Durling wrote:
Bug #4179: OpenStruct#method_missing handles #[]= wrongly
http://redmine.ruby-lang.org/issues/show/4179
Erm, not quite sure why reloading the redmine page triggered another notification about the ticket to be sent to the list. Apologies about that.
C¶
Caius Durling
caius@caius.name
+44 (0) 7960 268 100
http://caius.name/
Bug #4179: OpenStruct#method_missing handles #[]= wrongly
http://redmine.ruby-lang.org/issues/show/4179
Updated by marcandre (Marc-Andre Lafortune) over 13 years ago
- Project changed from Ruby 1.8 to Ruby master
- Category changed from lib to lib
- Target version deleted (
Ruby 1.8.7)
Updated by marcandre (Marc-Andre Lafortune) over 13 years ago
- Status changed from Open to Closed
- Target version set to 1.9.3
- % Done changed from 0 to 100
Thanks for the patch.
It was modified so that:
- s[] also raises an error
- s[1]=2 states that "[]=" is the missing method (not "[]")
Applied as r31753, RubySpec updated as 9d36c78