summaryrefslogtreecommitdiffhomepage
path: root/src/numeric.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-01-17 22:53:54 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-01-17 23:02:35 +0900
commitb4817a54f07f576a34a079f2e8d96f8c13611a76 (patch)
tree6631f2aa59489b2ba139f6c02f848b67d86bd9d8 /src/numeric.c
parent126f0f0563837c7169b7580dd5ae1ea433bd9a54 (diff)
downloadmruby-b4817a54f07f576a34a079f2e8d96f8c13611a76.tar.gz
mruby-b4817a54f07f576a34a079f2e8d96f8c13611a76.zip
Make `mrb_to_flo()` to convert objects, not integer, not float; #5268
Thinking `Ratinal` and `Complex` in mind.
Diffstat (limited to 'src/numeric.c')
-rw-r--r--src/numeric.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/numeric.c b/src/numeric.c
index 117f447e5..146eb635b 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -39,8 +39,13 @@ mrb_to_flo(mrb_state *mrb, mrb_value val)
return (mrb_float)mrb_integer(val);
case MRB_TT_FLOAT:
break;
- default:
+ case MRB_TT_STRING:
+ case MRB_TT_FALSE:
+ case MRB_TT_TRUE:
mrb_raise(mrb, E_TYPE_ERROR, "non float value");
+ default:
+ val = mrb_type_convert(mrb, val, MRB_TT_FLOAT, MRB_SYM(to_f));
+ break;
}
return mrb_float(val);
}