From: Caius Durling Date: 2010-12-21T08:43:25+09:00 Subject: [ruby-core:33792] [Ruby 1.8-Bug#4179][Open] OpenStruct#method_missing handles #[]= wrongly --mimepart_4d0fe986c56dd_3340b54eb007a1 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Bug #4179: OpenStruct#method_missing handles #[]=3D wrongly http://redmine.ruby-lang.org/issues/show/4179 Author: Caius Durling Status: Open, Priority: Normal Category: lib, Target version: Ruby 1.8.7 ruby -v: ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] = ## Code to reproduce: require "ostruct" OpenStruct.new[:foo] =3D true ## Expected `NoMethodError` to be raised, as `OpenStruct#[]=3D` is not a defined meth= od. ## 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#[]=3D`, 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. ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d0fe986c56dd_3340b54eb007a1 Content-Type: text/plain; name=ostruct_square_bracket_equals.patch Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=ostruct_square_bracket_equals.patch ZGlmZiAtLWdpdCBhL2xpYi9vc3RydWN0LnJiIGIvbGliL29zdHJ1Y3QucmIK aW5kZXggNDVlYmI4MC4uYjFhZDExNiAxMDA2NDQKLS0tIGEvbGliL29zdHJ1 Y3QucmIKKysrIGIvbGliL29zdHJ1Y3QucmIKQEAgLTg5LDcgKzg5LDcgQEAg Y2xhc3MgT3BlblN0cnVjdAogICBkZWYgbWV0aG9kX21pc3NpbmcobWlkLCAq YXJncykgIyA6bm9kb2M6CiAgICAgbW5hbWUgPSBtaWQuaWQybmFtZQogICAg IGxlbiA9IGFyZ3MubGVuZ3RoCi0gICAgaWYgbW5hbWUuY2hvbXAhKCc9JykK KyAgICBpZiBtbmFtZS5jaG9tcCEoJz0nKSAmJiBtbmFtZSAhPSAiW10iCiAg ICAgICBpZiBsZW4gIT0gMQogICAgICAgICByYWlzZSBBcmd1bWVudEVycm9y LCAid3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyAoI3tsZW59IGZvciAxKSIs IGNhbGxlcigxKQogICAgICAgZW5kCmRpZmYgLS1naXQgYS90ZXN0L29zdHJ1 Y3QvdGVzdF9vc3RydWN0LnJiIGIvdGVzdC9vc3RydWN0L3Rlc3Rfb3N0cnVj dC5yYgppbmRleCA1YzE0MGE0Li43NTA0ZTI5IDEwMDY0NAotLS0gYS90ZXN0 L29zdHJ1Y3QvdGVzdF9vc3RydWN0LnJiCisrKyBiL3Rlc3Qvb3N0cnVjdC90 ZXN0X29zdHJ1Y3QucmIKQEAgLTYzLDQgKzYzLDE1IEBAIEVPVAogICAgIGFz c2VydF9yYWlzZShUeXBlRXJyb3IpIHtvLmEgPSAneid9CiAgICAgYXNzZXJ0 X2VxdWFsKCdhJywgby5hKQogICBlbmQKKworICBkZWYgdGVzdF9tZXRob2Rf bWlzc2luZ19oYW5kbGVzX3NxdWFyZV9icmFja2V0X2VxdWFscworICAgIG8g PSBPcGVuU3RydWN0Lm5ldworICAgIGFzc2VydF9yYWlzZShOb01ldGhvZEVy cm9yKSB7IG9bOmZvb10gPSA6YmFyIH0KKyAgZW5kCisKKyAgZGVmIHRlc3Rf bWV0aG9kX21pc3NpbmdfaGFuZGxlc19zcXVhcmVfYnJhY2tldHMKKyAgICBv ID0gT3BlblN0cnVjdC5uZXcKKyAgICBhc3NlcnRfcmFpc2UoTm9NZXRob2RF cnJvcikgeyBvWzpmb29dIH0KKyAgZW5kCisKIGVuZAo= --mimepart_4d0fe986c56dd_3340b54eb007a1--