Bug #17512 ยป 0001-Allow-ostruct-to-return-a-value-on-super.patch
| lib/ostruct.rb | ||
|---|---|---|
|
raise! ArgumentError, "wrong number of arguments (given #{len}, expected 1)", caller(1)
|
||
|
end
|
||
|
set_ostruct_member_value!(mname, args[0])
|
||
|
elsif len == 0
|
||
|
elsif len == 0 # and /\A[a-z_]\w*\z/ =~ mid #
|
||
|
if @table.key?(mid)
|
||
|
new_ostruct_member!(mid) unless frozen?
|
||
|
@table[mid]
|
||
|
end
|
||
|
else
|
||
|
begin
|
||
|
super
|
||
| test/ostruct/test_ostruct.rb | ||
|---|---|---|
|
assert_equal(:bar, os.format)
|
||
|
end
|
||
|
def test_super
|
||
|
c = Class.new(OpenStruct) {
|
||
|
def foo; super; end
|
||
|
}
|
||
|
os = c.new(foo: :bar)
|
||
|
assert_equal(:bar, os.foo)
|
||
|
end
|
||
|
|
||
|
def test_overridden_public_methods
|
||
|
os = OpenStruct.new(method: :foo, class: :bar)
|
||
|
assert_equal(:foo, os.method)
|
||