diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-09-19 21:51:53 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2018-09-19 22:01:59 +0900 |
| commit | e207d5af43e9d6e09679e9aee9bf00a843528e0e (patch) | |
| tree | 7f83038d199fc076b316d51654819ef6bad5fa78 /src/class.c | |
| parent | c09d250ca148c0efc0167d55885bd20da87b43f7 (diff) | |
| download | mruby-e207d5af43e9d6e09679e9aee9bf00a843528e0e.tar.gz mruby-e207d5af43e9d6e09679e9aee9bf00a843528e0e.zip | |
Remove implicit conversion using `to_str` method.
We have added internal convenience method `__to_str` which
does string type check.
Diffstat (limited to 'src/class.c')
| -rw-r--r-- | src/class.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/class.c b/src/class.c index 76c699881..7d7e6216c 100644 --- a/src/class.c +++ b/src/class.c @@ -504,10 +504,17 @@ check_type(mrb_state *mrb, mrb_value val, enum mrb_vtype t, const char *c, const return tmp; } +#define CHECK_TYPE(mrb, val, t, c) do { \ + if (mrb_type(val) != (t)) {\ + mrb_raisef(mrb, E_TYPE_ERROR, "expected %S", mrb_str_new_lit(mrb, c));\ + }\ +} while (0) + static mrb_value to_str(mrb_state *mrb, mrb_value val) { - return check_type(mrb, val, MRB_TT_STRING, "String", "to_str"); + CHECK_TYPE(mrb, val, MRB_TT_STRING, "String"); + return val; } static mrb_value |
