summaryrefslogtreecommitdiffhomepage
path: root/src/numeric.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-04-12 16:38:28 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-04-12 16:38:28 +0900
commitbff93ba93f5a722b6aec47c5737794db2ac5d56e (patch)
treed18f1bd7db6284754050b8e5579d60f44fca4b2b /src/numeric.c
parent1ef77ab3ff655dc5557064a7d63909a4acdcac9c (diff)
downloadmruby-bff93ba93f5a722b6aec47c5737794db2ac5d56e.tar.gz
mruby-bff93ba93f5a722b6aec47c5737794db2ac5d56e.zip
simplify Fixnum#==
Diffstat (limited to 'src/numeric.c')
-rw-r--r--src/numeric.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/numeric.c b/src/numeric.c
index 7c30449fb..6cca92f31 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -863,15 +863,16 @@ static mrb_value
fix_equal(mrb_state *mrb, mrb_value x)
{
mrb_value y;
- mrb_bool equal_p;
mrb_get_args(mrb, "o", &y);
-
- equal_p = mrb_obj_equal(mrb, x, y) ||
- (mrb_type(y) == MRB_TT_FLOAT &&
- (mrb_float)mrb_fixnum(x) == mrb_float(y));
-
- return mrb_bool_value(equal_p);
+ switch (mrb_type(y)) {
+ case MRB_TT_FIXNUM:
+ return mrb_bool_value(mrb_fixnum(x) == mrb_fixnum(y));
+ case MRB_TT_FLOAT:
+ return mrb_bool_value((mrb_float)mrb_fixnum(x) == mrb_float(y));
+ default:
+ return mrb_false_value();
+ }
}
/* 15.2.8.3.8 */