diff options
| author | KOBAYASHI Shuji <[email protected]> | 2019-09-17 09:28:51 +0900 |
|---|---|---|
| committer | KOBAYASHI Shuji <[email protected]> | 2019-09-17 09:28:51 +0900 |
| commit | 2f7175442fffecc1139312e9e1055ba37ba8527d (patch) | |
| tree | 66113aeab85e24fac20474df35af5ea6b5022ce6 | |
| parent | 2f9b1fdb0c6ec4835b66b26db52ef7b98b9554b8 (diff) | |
| download | mruby-2f7175442fffecc1139312e9e1055ba37ba8527d.tar.gz mruby-2f7175442fffecc1139312e9e1055ba37ba8527d.zip | |
Fix `Fixnum#(to_s|inspect)` argument specs
Before this patch:
$ bin/mruby -e 'p 3.to_s(2)'
trace (most recent call last):
[0] -e:1
-e:1: 'to_s': wrong number of arguments (1 for 0) (ArgumentError)
After this patch:
$ bin/mruby -e 'p 3.to_s(2)'
"11"
| -rw-r--r-- | src/numeric.c | 4 | ||||
| -rw-r--r-- | test/t/integer.rb | 12 |
2 files changed, 12 insertions, 4 deletions
diff --git a/src/numeric.c b/src/numeric.c index d4ada1809..e6a68f289 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -1663,8 +1663,8 @@ mrb_init_numeric(mrb_state *mrb) #ifndef MRB_WITHOUT_FLOAT mrb_define_method(mrb, fixnum, "to_f", fix_to_f, MRB_ARGS_NONE()); /* 15.2.8.3.23 */ #endif - mrb_define_method(mrb, fixnum, "to_s", fix_to_s, MRB_ARGS_NONE()); /* 15.2.8.3.25 */ - mrb_define_method(mrb, fixnum, "inspect", fix_to_s, MRB_ARGS_NONE()); + mrb_define_method(mrb, fixnum, "to_s", fix_to_s, MRB_ARGS_OPT(1)); /* 15.2.8.3.25 */ + mrb_define_method(mrb, fixnum, "inspect", fix_to_s, MRB_ARGS_OPT(1)); mrb_define_method(mrb, fixnum, "divmod", fix_divmod, MRB_ARGS_REQ(1)); /* 15.2.8.3.30 (x) */ #ifndef MRB_WITHOUT_FLOAT diff --git a/test/t/integer.rb b/test/t/integer.rb index 4ab49eb0a..bd7efa855 100644 --- a/test/t/integer.rb +++ b/test/t/integer.rb @@ -232,8 +232,16 @@ assert('Integer#to_i', '15.2.8.3.24') do end assert('Integer#to_s', '15.2.8.3.25') do - assert_equal '1', 1.to_s - assert_equal("-1", -1.to_s) + assert_equal "1", 1.to_s + assert_equal "-1", -1.to_s + assert_equal "1010", 10.to_s(2) + assert_equal "a", 10.to_s(36) + assert_equal "-a", -10.to_s(36) + assert_equal "30071", 12345.to_s(8) + assert_raise(ArgumentError) { 10.to_s(-1) } + assert_raise(ArgumentError) { 10.to_s(0) } + assert_raise(ArgumentError) { 10.to_s(1) } + assert_raise(ArgumentError) { 10.to_s(37) } end assert('Integer#truncate', '15.2.8.3.26') do |
