Commit 0133d9ac authored by Robert Mosolgo's avatar Robert Mosolgo Committed by Yukihiro "Matz" Matsumoto

fix(String) String#[] accepts float; close #2650 #2651

parent 28bd3329
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "mruby/class.h" #include "mruby/class.h"
#include "mruby/range.h" #include "mruby/range.h"
#include "mruby/string.h" #include "mruby/string.h"
#include "mruby/numeric.h"
#include "mruby/re.h" #include "mruby/re.h"
const char mrb_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz"; const char mrb_digitmap[] = "0123456789abcdefghijklmnopqrstuvwxyz";
...@@ -750,6 +751,8 @@ mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value indx) ...@@ -750,6 +751,8 @@ mrb_str_aref(mrb_state *mrb, mrb_value str, mrb_value indx)
mrb_regexp_check(mrb, indx); mrb_regexp_check(mrb, indx);
switch (mrb_type(indx)) { switch (mrb_type(indx)) {
case MRB_TT_FLOAT:
indx = mrb_flo_to_fixnum(mrb, indx);
case MRB_TT_FIXNUM: case MRB_TT_FIXNUM:
idx = mrb_fixnum(indx); idx = mrb_fixnum(indx);
...@@ -813,6 +816,7 @@ num_index: ...@@ -813,6 +816,7 @@ num_index:
* *
* a = "hello there" * a = "hello there"
* a[1] #=> 101(1.8.7) "e"(1.9.2) * a[1] #=> 101(1.8.7) "e"(1.9.2)
* a[1.1] #=> "e"(1.9.2)
* a[1,3] #=> "ell" * a[1,3] #=> "ell"
* a[1..3] #=> "ell" * a[1..3] #=> "ell"
* a[-3,2] #=> "er" * a[-3,2] #=> "er"
......
...@@ -44,6 +44,7 @@ assert('String#[]', '15.2.10.5.6') do ...@@ -44,6 +44,7 @@ assert('String#[]', '15.2.10.5.6') do
b = 'abc'[-1] b = 'abc'[-1]
c = 'abc'[10] c = 'abc'[10]
d = 'abc'[-10] d = 'abc'[-10]
e = 'abc'[1.1]
# length of args is 2 # length of args is 2
a1 = 'abc'[0, -1] a1 = 'abc'[0, -1]
...@@ -63,6 +64,7 @@ assert('String#[]', '15.2.10.5.6') do ...@@ -63,6 +64,7 @@ assert('String#[]', '15.2.10.5.6') do
assert_equal 'c', b assert_equal 'c', b
assert_nil c assert_nil c
assert_nil d assert_nil d
assert_equal 'b', e
assert_nil a1 assert_nil a1
assert_nil b1 assert_nil b1
assert_nil c1 assert_nil c1
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment