* vm_eval.c (method_missing): should not pop cfp if missing method

is method_missing.  [ruby-core:22298]

* vm_eval.c (rb_raise_method_missing): new function to directly
  raise NoMethodError.

* vm_insnhelper.c (vm_call_method): fixed the case method_missing
  is missing.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@22495 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2009-02-22 01:47:11 +00:00
parent 19bbab6140
commit 1e51a7b2c6
1 changed files with 11 additions and 0 deletions

View File

@ -1140,3 +1140,14 @@ assert_equal 'Object#foo', %q{
end
Foo.foo
}, '[ruby-dev:37587]'
assert_normal_exit %q{
class BasicObject
remove_method :method_missing
end
begin
"a".lalala!
rescue NoMethodError => e
e.message == "undefined method `lalala!' for \"a\":String" ? :ok : :ng
end
}, '[ruby-core:22298]'