diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-26 06:41:13 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-01-26 06:41:13 +0000 |
commit | ba4aba0d6ca77a6c4724c26f6bfaedf83a0fb443 (patch) | |
tree | 059ce1b8c8689447543e6d8b076aad315a2d3b2c | |
parent | 6b61e99e0860697d2a2b58881ab3939ee2de2f49 (diff) | |
download | ruby-ba4aba0d6ca77a6c4724c26f6bfaedf83a0fb443.tar.gz |
error.c: KeyError missing keyword arguments
* error.c (key_err_initialize): leave attributes for missing
keyword arguments unset, so accessors can tell if it is missing
or explicit nil. [Feature #14313]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62053 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | error.c | 9 | ||||
-rw-r--r-- | test/ruby/test_key_error.rb | 4 |
2 files changed, 6 insertions, 7 deletions
@@ -1692,8 +1692,6 @@ key_err_initialize(int argc, VALUE *argv, VALUE self) { VALUE message; VALUE options; - VALUE receiver = Qnil; - VALUE key = Qnil; rb_scan_args(argc, argv, "01:", &message, &options); @@ -1711,16 +1709,13 @@ key_err_initialize(int argc, VALUE *argv, VALUE self) keywords[1] = id_key; rb_get_kwargs(options, keywords, 0, 2, values); if (values[0] != Qundef) { - receiver = values[0]; + rb_ivar_set(self, id_receiver, values[0]); } if (values[1] != Qundef) { - key = values[1]; + rb_ivar_set(self, id_key, values[1]); } } - rb_ivar_set(self, id_receiver, receiver); - rb_ivar_set(self, id_key, key); - return self; } diff --git a/test/ruby/test_key_error.rb b/test/ruby/test_key_error.rb index 852bd32712..fe1d5bb5ab 100644 --- a/test/ruby/test_key_error.rb +++ b/test/ruby/test_key_error.rb @@ -15,11 +15,15 @@ class TestKeyError < Test::Unit::TestCase receiver = Object.new error = KeyError.new(receiver: receiver) assert_equal(receiver, error.receiver) + error = KeyError.new + assert_raise(ArgumentError) {error.receiver} end def test_key error = KeyError.new(key: :key) assert_equal(:key, error.key) + error = KeyError.new + assert_raise(ArgumentError) {error.key} end def test_receiver_and_key |