Index: lib/ostruct.rb =================================================================== --- lib/ostruct.rb (revision 34752) +++ lib/ostruct.rb (working copy) @@ -190,8 +190,8 @@ # def delete_field(name) sym = name.to_sym + singleton_class.__send__(:remove_method, sym, "#{name}=") @table.delete sym - singleton_class.__send__(:remove_method, sym, "#{name}=") end InspectKey = :__inspect_key__ # :nodoc: Index: test/ostruct/test_ostruct.rb =================================================================== --- test/ostruct/test_ostruct.rb (revision 34752) +++ test/ostruct/test_ostruct.rb (working copy) @@ -57,9 +57,10 @@ o.a = 'a' assert_respond_to(o, :a) assert_respond_to(o, :a=) - o.delete_field :a + a = o.delete_field :a assert_not_respond_to(o, :a, bug) assert_not_respond_to(o, :a=, bug) + assert_equal(a, 'a') end def test_method_missing_handles_square_bracket_equals