diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-05-24 01:09:36 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-05-24 01:09:36 +0900 |
| commit | ad9e841c5359efdd37a132767e03ad7a2d5ae72e (patch) | |
| tree | 8e60edf2dce29e86d8b47d0b2e8dc8a2a2329ded /src/hash.c | |
| parent | 4f012f578f22cca67af8c633845464abc79913f4 (diff) | |
| download | mruby-ad9e841c5359efdd37a132767e03ad7a2d5ae72e.tar.gz mruby-ad9e841c5359efdd37a132767e03ad7a2d5ae72e.zip | |
made mrb_get_args() better (optinal args, type checks); close #173 #176
Diffstat (limited to 'src/hash.c')
| -rw-r--r-- | src/hash.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/src/hash.c b/src/hash.c index 39666214a..94be511c8 100644 --- a/src/hash.c +++ b/src/hash.c @@ -283,7 +283,6 @@ mrb_hash_init_core(mrb_state *mrb, mrb_value hash) int argc; mrb_get_args(mrb, "o*", &block, &argv, &argc); - mrb_hash_modify(mrb, hash); if (mrb_nil_p(block)) { if (argc > 0) { @@ -434,7 +433,6 @@ mrb_hash_default(mrb_state *mrb, mrb_value hash) mrb_value key; mrb_get_args(mrb, "*", &argv, &argc); - if (MRB_RHASH_PROCDEFAULT_P(hash)) { if (argc == 0) return mrb_nil_value(); key = argv[0]; @@ -470,8 +468,8 @@ static mrb_value mrb_hash_set_default(mrb_state *mrb, mrb_value hash) { mrb_value ifnone; - mrb_get_args(mrb, "o", &ifnone); + mrb_get_args(mrb, "o", &ifnone); mrb_hash_modify(mrb, hash); mrb_iv_set(mrb, hash, mrb_intern(mrb, "ifnone"), ifnone); RHASH(hash)->flags &= ~(MRB_HASH_PROC_DEFAULT); @@ -521,8 +519,8 @@ static mrb_value mrb_hash_set_default_proc(mrb_state *mrb, mrb_value hash) { mrb_value ifnone; - mrb_get_args(mrb, "o", &ifnone); + mrb_get_args(mrb, "o", &ifnone); mrb_hash_modify(mrb, hash); mrb_iv_set(mrb, hash, mrb_intern(mrb, "ifnone"), ifnone); RHASH(hash)->flags |= MRB_HASH_PROC_DEFAULT; @@ -789,7 +787,6 @@ mrb_hash_replace(mrb_state *mrb, mrb_value hash) khiter_t k; mrb_get_args(mrb, "o", &hash2); - mrb_hash_modify_check(mrb, hash); hash2 = to_hash(mrb, hash2); if (mrb_obj_equal(mrb, hash, hash2)) return hash; @@ -1207,6 +1204,7 @@ static mrb_value mrb_hash_equal(mrb_state *mrb, mrb_value hash1) { mrb_value hash2; + mrb_get_args(mrb, "o", &hash2); return hash_equal(mrb, hash1, hash2, FALSE); } @@ -1224,6 +1222,7 @@ static mrb_value mrb_hash_eql(mrb_state *mrb, mrb_value hash1) { mrb_value hash2; + mrb_get_args(mrb, "o", &hash2); return hash_equal(mrb, hash1, hash2, TRUE); } @@ -1292,7 +1291,6 @@ mrb_hash_assoc(mrb_state *mrb, mrb_value hash) mrb_value key, value, has_key; mrb_get_args(mrb, "o", &key); - if (mrb_nil_p(key)) mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments"); @@ -1325,7 +1323,6 @@ mrb_hash_rassoc(mrb_state *mrb, mrb_value hash) mrb_value key, value, has_key; mrb_get_args(mrb, "o", &key); - if (mrb_nil_p(key)) mrb_raise(mrb, E_ARGUMENT_ERROR, "wrong number of arguments"); |
