error.c: receiver kwarg

* error.c (name_err_initialize_options): NameError#initialize
  accepts receiver.  [Feature #14313]

* error.c (nometh_err_initialize_options): pass keyword arguments
  to the super method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2018-01-26 10:55:47 +00:00
parent f79d891aad
commit c30aed0817
2 changed files with 77 additions and 1 deletions

View file

@ -866,6 +866,14 @@ end.join
error = NameError.new
assert_raise(ArgumentError) {error.receiver}
assert_equal("NameError", error.message)
error = NameError.new(receiver: receiver)
assert_equal(["NameError", receiver],
[error.message, error.receiver])
error = NameError.new("Message", :foo, receiver: receiver)
assert_equal(["Message", receiver, :foo],
[error.message, error.receiver, error.name])
end
def test_nomethod_error_new_default
@ -903,6 +911,44 @@ end.join
[error.name, error.args, error.private_call?])
end
def test_nomethod_error_new_receiver
receiver = Object.new
error = NoMethodError.new
assert_raise(ArgumentError) {error.receiver}
error = NoMethodError.new(receiver: receiver)
assert_equal(receiver, error.receiver)
error = NoMethodError.new("Message")
assert_raise(ArgumentError) {error.receiver}
error = NoMethodError.new("Message", receiver: receiver)
assert_equal(["Message", receiver],
[error.message, error.receiver])
error = NoMethodError.new("Message", :foo)
assert_raise(ArgumentError) {error.receiver}
error = NoMethodError.new("Message", :foo, receiver: receiver)
assert_equal(["Message", :foo, receiver],
[error.message, error.name, error.receiver])
error = NoMethodError.new("Message", :foo, [1, 2])
assert_raise(ArgumentError) {error.receiver}
error = NoMethodError.new("Message", :foo, [1, 2], receiver: receiver)
assert_equal(["Message", :foo, [1, 2], receiver],
[error.message, error.name, error.args, error.receiver])
error = NoMethodError.new("Message", :foo, [1, 2], true)
assert_raise(ArgumentError) {error.receiver}
error = NoMethodError.new("Message", :foo, [1, 2], true, receiver: receiver)
assert_equal([:foo, [1, 2], true, receiver],
[error.name, error.args, error.private_call?, error.receiver])
end
def test_name_error_info_const
obj = PrettyObject.new