summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2018-09-20 10:13:36 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2018-09-20 10:13:36 +0900
commit8e91316bd64aa39b3afeffb0ade5eb38b05d3953 (patch)
treefabce96f895417c6d2252860211aeb7b4df97a31 /src/class.c
parent3820ef791f3ccb766956d12534ae519f4923ac7e (diff)
parentcb85fa6787ea9467f81be41570a36b475b7ef061 (diff)
downloadmruby-8e91316bd64aa39b3afeffb0ade5eb38b05d3953.tar.gz
mruby-8e91316bd64aa39b3afeffb0ade5eb38b05d3953.zip
Merge branch 'no-implicit-conversion' into mruby2-draftmruby2-draft
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c27
1 files changed, 12 insertions, 15 deletions
diff --git a/src/class.c b/src/class.c
index 76c699881..b5a492d8f 100644
--- a/src/class.c
+++ b/src/class.c
@@ -492,34 +492,31 @@ mrb_notimplement_m(mrb_state *mrb, mrb_value self)
return mrb_nil_value();
}
-static mrb_value
-check_type(mrb_state *mrb, mrb_value val, enum mrb_vtype t, const char *c, const char *m)
-{
- mrb_value tmp;
-
- tmp = mrb_check_convert_type(mrb, val, t, c, m);
- if (mrb_nil_p(tmp)) {
- mrb_raisef(mrb, E_TYPE_ERROR, "expected %S", mrb_str_new_cstr(mrb, c));
- }
- 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
to_ary(mrb_state *mrb, mrb_value val)
{
- return check_type(mrb, val, MRB_TT_ARRAY, "Array", "to_ary");
+ CHECK_TYPE(mrb, val, MRB_TT_ARRAY, "Array");
+ return val;
}
static mrb_value
to_hash(mrb_state *mrb, mrb_value val)
{
- return check_type(mrb, val, MRB_TT_HASH, "Hash", "to_hash");
+ CHECK_TYPE(mrb, val, MRB_TT_HASH, "Hash");
+ return val;
}
#define to_sym(mrb, ss) mrb_obj_to_sym(mrb, ss)
@@ -1971,7 +1968,7 @@ mrb_mod_const_get(mrb_state *mrb, mrb_value mod)
}
/* const get with class path string */
- path = mrb_string_type(mrb, path);
+ path = mrb_ensure_string_type(mrb, path);
ptr = RSTRING_PTR(path);
len = RSTRING_LEN(path);
off = 0;