Merge branch 'method-missing-segfault' of https://github.com/bouk/mruby into bouk-method-missing-segfault

This commit is contained in:
Yukihiro "Matz" Matsumoto
2016-12-03 18:20:29 +09:00
2 changed files with 68 additions and 10 deletions
+31
View File
@@ -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