mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
Merge branch 'method-missing-segfault' of https://github.com/bouk/mruby into bouk-method-missing-segfault
This commit is contained in:
@@ -20,3 +20,34 @@ assert('NoMethodError#args', '15.2.32.2.1') do
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assert('Can still raise when BasicObject#method_missing is removed') do
|
||||
assert_raise(TypeError) do
|
||||
begin
|
||||
BasicObject.alias_method(:old_method_missing, :method_missing)
|
||||
BasicObject.remove_method(:method_missing)
|
||||
1.__send__(:foo)
|
||||
ensure
|
||||
BasicObject.alias_method(:method_missing, :old_method_missing)
|
||||
BasicObject.remove_method(:old_method_missing)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
assert('Can still call super when BasicObject#method_missing is removed') do
|
||||
assert_raise(TypeError) do
|
||||
class A
|
||||
def foo
|
||||
super
|
||||
end
|
||||
end
|
||||
begin
|
||||
BasicObject.alias_method(:old_method_missing, :method_missing)
|
||||
BasicObject.remove_method(:method_missing)
|
||||
A.new.foo
|
||||
ensure
|
||||
BasicObject.alias_method(:method_missing, :old_method_missing)
|
||||
BasicObject.remove_method(:old_method_missing)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user