From f7b72462aa27716370c6bea1f2c240983aca9a55 Mon Sep 17 00:00:00 2001 From: Shugo Maeda Date: Thu, 19 Jan 2023 17:13:07 +0900 Subject: String#bytesplice should return self In Feature #19314, we concluded that the return value of String#bytesplice should be changed from the source string to the receiver, because the source string is useless and confusing when extra arguments are added. This change should be included in Ruby 3.2.1. --- string.c | 4 ++-- test/ruby/test_string.rb | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/string.c b/string.c index de96796269..af5721ecc5 100644 --- a/string.c +++ b/string.c @@ -6268,7 +6268,7 @@ rb_str_byteslice(int argc, VALUE *argv, VALUE str) * bytesplice(index, length, str) -> string * bytesplice(range, str) -> string * - * Replaces some or all of the content of +self+ with +str+, and returns +str+. + * Replaces some or all of the content of +self+ with +str+, and returns +self+. * The portion of the string affected is determined using * the same criteria as String#byteslice, except that +length+ cannot be omitted. * If the replacement string is not the same length as the text it is replacing, @@ -6330,7 +6330,7 @@ rb_str_bytesplice(int argc, VALUE *argv, VALUE str) cr = ENC_CODERANGE_AND(ENC_CODERANGE(str), ENC_CODERANGE(val)); if (cr != ENC_CODERANGE_BROKEN) ENC_CODERANGE_SET(str, cr); - return val; + return str; } /* diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb index e34fd116c9..2e66521df7 100644 --- a/test/ruby/test_string.rb +++ b/test/ruby/test_string.rb @@ -3489,7 +3489,7 @@ CODE private def assert_bytesplice_result(expected, s, *args) - assert_equal(args.last, s.send(:bytesplice, *args)) + assert_equal(expected, s.send(:bytesplice, *args)) assert_equal(expected, s) end -- cgit v1.2.3