mirror of
https://github.com/ruby/ruby.git
synced 2025-09-16 00:54:01 +02:00
NoMethodError#private_call?
* error.c (nometh_err_initialize): add private_call? parameter. * error.c (nometh_err_private_call_p): add private_call? method, to tell if the exception raised in private form FCALL or VCALL. [Feature #12043] * vm_eval.c (make_no_method_exception): append private_call? argument. * vm_insnhelper.c (ci_missing_reason): copy FCALL flag. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53961 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
74e5e61849
commit
4d9f5482ae
7 changed files with 67 additions and 10 deletions
|
@ -762,6 +762,7 @@ end.join
|
|||
assert_equal(:foo, e.name)
|
||||
assert_equal([1, 2], e.args)
|
||||
assert_same(obj, e.receiver)
|
||||
assert_not_predicate(e, :private_call?)
|
||||
|
||||
e = assert_raise(NoMethodError) {
|
||||
obj.instance_eval {foo(1, 2)}
|
||||
|
@ -769,6 +770,7 @@ end.join
|
|||
assert_equal(:foo, e.name)
|
||||
assert_equal([1, 2], e.args)
|
||||
assert_same(obj, e.receiver)
|
||||
assert_predicate(e, :private_call?)
|
||||
end
|
||||
|
||||
def test_name_error_info_local_variables
|
||||
|
@ -787,6 +789,29 @@ end.join
|
|||
assert_equal(%i[a b c d e f g], e.local_variables.sort)
|
||||
end
|
||||
|
||||
def test_name_error_info_method_missing
|
||||
obj = PrettyObject.new
|
||||
def obj.method_missing(*)
|
||||
super
|
||||
end
|
||||
|
||||
e = assert_raise(NoMethodError) {
|
||||
obj.foo(1, 2)
|
||||
}
|
||||
assert_equal(:foo, e.name)
|
||||
assert_equal([1, 2], e.args)
|
||||
assert_same(obj, e.receiver)
|
||||
assert_not_predicate(e, :private_call?)
|
||||
|
||||
e = assert_raise(NoMethodError) {
|
||||
obj.instance_eval {foo(1, 2)}
|
||||
}
|
||||
assert_equal(:foo, e.name)
|
||||
assert_equal([1, 2], e.args)
|
||||
assert_same(obj, e.receiver)
|
||||
assert_predicate(e, :private_call?)
|
||||
end
|
||||
|
||||
def test_name_error_info_parent_iseq_mark
|
||||
assert_separately(['-', File.join(__dir__, 'bug-11928.rb')], <<-'end;')
|
||||
-> {require ARGV[0]}.call
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue