Project

General

Profile

Actions

Bug #4179

closed

OpenStruct#method_missing handles #[]= wrongly

Added by caius (Caius Durling) almost 14 years ago. Updated over 13 years ago.

Status:
Closed
Assignee:
-
Target version:
ruby -v:
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
Backport:
[ruby-core:33792]

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

ostruct_square_bracket_equals.patch (977 Bytes) ostruct_square_bracket_equals.patch Test case for []= and [], and fix for []= bug caius (Caius Durling), 12/21/2010 08:40 AM
Actions #1

Updated by caius (Caius Durling) almost 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

+44 (0) 7960 268 100
http://caius.name/

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
+44 (0) 7960 268 100

=end
Actions #2

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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0