Move BasicObject#method_missing to Kernel#method_missing; ref #3417

More compatibility to CRuby.
Updated tests that assume old mruby behavior.
This commit is contained in:
Yukihiro "Matz" Matsumoto
2017-02-15 12:56:27 +09:00
parent 1e5b5b14d7
commit 3f9450e7b0
3 changed files with 82 additions and 82 deletions
+10 -10
View File
@@ -21,20 +21,20 @@ assert('NoMethodError#args', '15.2.32.2.1') do
end
end
assert('Can still raise when BasicObject#method_missing is removed') do
assert('Can still raise when Kernel#method_missing is removed') do
assert_raise(NoMethodError) do
begin
BasicObject.alias_method(:old_method_missing, :method_missing)
BasicObject.remove_method(:method_missing)
Kernel.alias_method(:old_method_missing, :method_missing)
Kernel.remove_method(:method_missing)
1.__send__(:foo)
ensure
BasicObject.alias_method(:method_missing, :old_method_missing)
BasicObject.remove_method(:old_method_missing)
Kernel.alias_method(:method_missing, :old_method_missing)
Kernel.remove_method(:old_method_missing)
end
end
end
assert('Can still call super when BasicObject#method_missing is removed') do
assert('Can still call super when Kernel#method_missing is removed') do
assert_raise(NoMethodError) do
class A
def foo
@@ -42,12 +42,12 @@ assert('Can still call super when BasicObject#method_missing is removed') do
end
end
begin
BasicObject.alias_method(:old_method_missing, :method_missing)
BasicObject.remove_method(:method_missing)
Kernel.alias_method(:old_method_missing, :method_missing)
Kernel.remove_method(:method_missing)
A.new.foo
ensure
BasicObject.alias_method(:method_missing, :old_method_missing)
BasicObject.remove_method(:old_method_missing)
Kernel.alias_method(:method_missing, :old_method_missing)
Kernel.remove_method(:old_method_missing)
end
end
end