error.c: KeyError#receiver and KeyError#key

* error.c: new method KeyError#receiver and KeyError#key.
  [Feature #12063]

* hash.c: make KeyError object with receiver and key.

* sprintf.c: ditto.

Author:    ksss <co000ri@gmail.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@59955 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2017-09-18 08:05:53 +00:00
parent 2627c19d82
commit 13f5dcb9f2
8 changed files with 58 additions and 7 deletions

View file

@ -452,7 +452,10 @@ class TestSprintf < Test::Unit::TestCase
assert_raise_with_message(ArgumentError, "named<key2> after numbered") {sprintf("%1$<key2>s", :key => "value")}
assert_raise_with_message(ArgumentError, "named<key2> after unnumbered(2)") {sprintf("%s%s%<key2>s", "foo", "bar", :key => "value")}
assert_raise_with_message(ArgumentError, "named<key2> after <key>") {sprintf("%<key><key2>s", :key => "value")}
assert_raise_with_message(KeyError, "key<key> not found") {sprintf("%<key>s", {})}
h = {}
e = assert_raise_with_message(KeyError, "key<key> not found") {sprintf("%<key>s", h)}
assert_same(h, e.receiver)
assert_equal(:key, e.key)
end
def test_named_untyped_enc