From f6564dd83e058fee6b264b5ce6db6d868c22d94a Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 30 Aug 2018 22:14:10 +0900 Subject: 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. --- src/hash.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/hash.c b/src/hash.c index 122f5b5d5..7d81bc343 100644 --- a/src/hash.c +++ b/src/hash.c @@ -320,6 +320,12 @@ mrb_hash_set(mrb_state *mrb, mrb_value hash, mrb_value key, mrb_value val) return; } +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) { @@ -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); -- cgit v1.2.3