summaryrefslogtreecommitdiffhomepage
path: root/src/hash.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-08-30 22:14:10 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-08-30 22:30:36 +0900
commitf6564dd83e058fee6b264b5ce6db6d868c22d94a (patch)
tree279aea8c7c7fe58c03dde17c2d214754c5c1239b /src/hash.c
parente471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed (diff)
downloadmruby-f6564dd83e058fee6b264b5ce6db6d868c22d94a.tar.gz
mruby-f6564dd83e058fee6b264b5ce6db6d868c22d94a.zip
Add new function `mrb_ensure_hash_type()`; ref #4097
Unlike `mrb_check_hash_type()` that returns `nil` if the argument is not a `Hash`, `mrb_ensure_hash_type()` raises a `TypeError` exception.
Diffstat (limited to 'src/hash.c')
-rw-r--r--src/hash.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/hash.c b/src/hash.c
index 122f5b5d5..7d81bc343 100644
--- a/src/hash.c
+++ b/src/hash.c
@@ -321,6 +321,12 @@ mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val)
}
MRB_API mrb_value
+mrb_ensure_hash_type(mrb_state *mrb, mrb_value hash)
+{
+ return mrb_convert_type(mrb, hash, MRB_TT_HASH, "Hash", "to_hash");
+}
+
+MRB_API mrb_value
mrb_check_hash_type(mrb_state *mrb, mrb_value hash)
{
return mrb_check_convert_type(mrb, hash, MRB_TT_HASH, "Hash", "to_hash");
@@ -959,7 +965,7 @@ mrb_hash_merge(mrb_state *mrb, mrb_value hash1, mrb_value hash2)
khiter_t k;
mrb_hash_modify(mrb, hash1);
- hash2 = mrb_check_hash_type(mrb, hash2);
+ hash2 = mrb_ensure_hash_type(mrb, hash2);
h1 = RHASH_TBL(hash1);
h2 = RHASH_TBL(hash2);