diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-08-30 22:14:10 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-08-30 22:30:36 +0900 |
| commit | f6564dd83e058fee6b264b5ce6db6d868c22d94a (patch) | |
| tree | 279aea8c7c7fe58c03dde17c2d214754c5c1239b /src/hash.c | |
| parent | e471d37ca5f1422860a1eaa81d4c9f1b3c8b6aed (diff) | |
| download | mruby-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.c | 8 |
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); |
