summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-28 00:00:05 +0000
committerkazu <kazu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-28 00:00:05 +0000
commit220d2a7182d8dff19003fa8934176a5073da9182 (patch)
tree1427c03fb48e383074b58aa1f2c15b94aa6c4d8c
parent5b94fc9601902ca796d5f09fc644f74cad2b0618 (diff)
Fix KeyError#{key,receiver} of Thread#fetch
[ruby-core:84508] [Bug #14247] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61507 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--test/ruby/test_thread.rb4
-rw-r--r--thread.c2
2 files changed, 4 insertions, 2 deletions
diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb
index 3695f6e4ea..591292962d 100644
--- a/test/ruby/test_thread.rb
+++ b/test/ruby/test_thread.rb
@@ -557,7 +557,9 @@ class TestThread < Test::Unit::TestCase
assert_equal(3, t.fetch("qux") {x = 3})
assert_equal(3, x)
- assert_raise(KeyError) {t.fetch(:qux)}
+ e = assert_raise(KeyError) {t.fetch(:qux)}
+ assert_equal(:qux, e.key)
+ assert_equal(t, e.receiver)
ensure
t.kill if t
end
diff --git a/thread.c b/thread.c
index 2460d7e3ac..9f2267a1f4 100644
--- a/thread.c
+++ b/thread.c
@@ -3168,7 +3168,7 @@ rb_thread_fetch(int argc, VALUE *argv, VALUE self)
return rb_yield(key);
}
else if (argc == 1) {
- rb_raise(rb_eKeyError, "key not found: %"PRIsVALUE, key);
+ rb_key_err_raise(rb_sprintf("key not found: %+"PRIsVALUE, key), self, key);
}
else {
return argv[1];