Merge pull request #3661 from ksss/string-concat

String#concat: Try to convert when not string
This commit is contained in:
Yukihiro "Matz" Matsumoto
2017-05-21 22:53:01 +09:00
committed by GitHub
2 changed files with 18 additions and 7 deletions
+8 -1
View File
@@ -134,6 +134,8 @@ mrb_str_swapcase(mrb_state *mrb, mrb_value self)
return str;
}
static mrb_value mrb_fixnum_chr(mrb_state *mrb, mrb_value num);
/*
* call-seq:
* str << integer -> str
@@ -153,7 +155,12 @@ static mrb_value
mrb_str_concat2(mrb_state *mrb, mrb_value self)
{
mrb_value str;
mrb_get_args(mrb, "S", &str);
mrb_get_args(mrb, "o", &str);
if (mrb_fixnum_p(str))
str = mrb_fixnum_chr(mrb, str);
else
str = mrb_string_type(mrb, str);
mrb_str_concat(mrb, self, str);
return self;
}
+10 -6
View File
@@ -122,12 +122,16 @@ assert('String#swapcase!') do
end
assert('String#concat') do
s = "Hello "
s.concat "World!"
t = "Hello "
t << "World!"
assert_equal "Hello World!", t
assert_equal "Hello World!", s
assert_equal "Hello World!", "Hello " << "World" << 33
assert_equal "Hello World!", "Hello ".concat("World").concat(33)
o = Object.new
def o.to_str
"to_str"
end
assert_equal "hi to_str", "hi " << o
assert_raise(TypeError) { "".concat(Object.new) }
end
assert('String#casecmp') do