ruby-changes:54365
From: mame <ko1@a...>
Date: Wed, 26 Dec 2018 23:43:29 +0900 (JST)
Subject: [ruby-changes:54365] mame:r66579 (trunk): string.c: remove the deprecation warnings of `String#bytes` with block
mame 2018-12-26 23:43:25 +0900 (Wed, 26 Dec 2018) New Revision: 66579 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=66579 Log: string.c: remove the deprecation warnings of `String#bytes` with block And its friends: lines, chars, grapheme_clusters, and codepoints. [Feature #6670] [ruby-core:90728] Modified files: trunk/string.c trunk/test/ruby/test_string.rb Index: test/ruby/test_string.rb =================================================================== --- test/ruby/test_string.rb (revision 66578) +++ test/ruby/test_string.rb (revision 66579) @@ -878,20 +878,15 @@ CODE https://github.com/ruby/ruby/blob/trunk/test/ruby/test_string.rb#L878 assert_equal [65, 66, 67], s.bytes {} } else - warning = /passing a block to String#bytes is deprecated/ - assert_warning(warning) { - res = [] - assert_equal s.object_id, s.bytes {|x| res << x }.object_id - assert_equal(65, res[0]) - assert_equal(66, res[1]) - assert_equal(67, res[2]) - } - assert_warning(warning) { - s = S("ABC") - res = [] - assert_same s, s.bytes {|x| res << x } - assert_equal [65, 66, 67], res - } + res = [] + assert_equal s.object_id, s.bytes {|x| res << x }.object_id + assert_equal(65, res[0]) + assert_equal(66, res[1]) + assert_equal(67, res[2]) + s = S("ABC") + res = [] + assert_same s, s.bytes {|x| res << x } + assert_equal [65, 66, 67], res end end @@ -922,20 +917,15 @@ CODE https://github.com/ruby/ruby/blob/trunk/test/ruby/test_string.rb#L917 assert_equal [0x3042, 0x3044, 0x3046], s.codepoints {} } else - warning = /passing a block to String#codepoints is deprecated/ - assert_warning(warning) { - res = [] - assert_equal s.object_id, s.codepoints {|x| res << x }.object_id - assert_equal(0x3042, res[0]) - assert_equal(0x3044, res[1]) - assert_equal(0x3046, res[2]) - } - assert_warning(warning) { - s = S("ABC") - res = [] - assert_same s, s.codepoints {|x| res << x } - assert_equal [65, 66, 67], res - } + res = [] + assert_equal s.object_id, s.codepoints {|x| res << x }.object_id + assert_equal(0x3042, res[0]) + assert_equal(0x3044, res[1]) + assert_equal(0x3046, res[2]) + s = S("ABC") + res = [] + assert_same s, s.codepoints {|x| res << x } + assert_equal [65, 66, 67], res end end @@ -960,14 +950,11 @@ CODE https://github.com/ruby/ruby/blob/trunk/test/ruby/test_string.rb#L950 assert_equal ["A", "B", "C"], s.chars {} } else - warning = /passing a block to String#chars is deprecated/ - assert_warning(warning) { - res = [] - assert_equal s.object_id, s.chars {|x| res << x }.object_id - assert_equal("A", res[0]) - assert_equal("B", res[1]) - assert_equal("C", res[2]) - } + res = [] + assert_equal s.object_id, s.chars {|x| res << x }.object_id + assert_equal("A", res[0]) + assert_equal("B", res[1]) + assert_equal("C", res[2]) end end @@ -1032,17 +1019,14 @@ CODE https://github.com/ruby/ruby/blob/trunk/test/ruby/test_string.rb#L1019 assert_equal ["A", "B", "C"], "ABC".grapheme_clusters {} } else - warning = /passing a block to String#grapheme_clusters is deprecated/ - assert_warning(warning) { - s = "ABC".b.taint - res = [] - assert_same s, s.grapheme_clusters {|x| res << x } - assert_equal(3, res.size) - assert_equal("A", res[0]) - assert_equal("B", res[1]) - assert_equal("C", res[2]) - res.each {|g| assert_predicate(g, :tainted?)} - } + s = "ABC".b.taint + res = [] + assert_same s, s.grapheme_clusters {|x| res << x } + assert_equal(3, res.size) + assert_equal("A", res[0]) + assert_equal("B", res[1]) + assert_equal("C", res[2]) + res.each {|g| assert_predicate(g, :tainted?)} end end @@ -1155,12 +1139,10 @@ CODE https://github.com/ruby/ruby/blob/trunk/test/ruby/test_string.rb#L1139 assert_equal ["hello\n", "world"], s.lines {} } else - assert_warning(/passing a block to String#lines is deprecated/) { - res = [] - assert_equal s.object_id, s.lines {|x| res << x }.object_id - assert_equal(S("hello\n"), res[0]) - assert_equal(S("world"), res[1]) - } + res = [] + assert_equal s.object_id, s.lines {|x| res << x }.object_id + assert_equal(S("hello\n"), res[0]) + assert_equal(S("world"), res[1]) end end Index: string.c =================================================================== --- string.c (revision 66578) +++ string.c (revision 66579) @@ -42,8 +42,6 @@ https://github.com/ruby/ruby/blob/trunk/string.c#L42 # define HAVE_CRYPT_R 1 #endif -#define STRING_ENUMERATORS_WANTARRAY 0 /* next major */ - #undef rb_str_new #undef rb_usascii_str_new #undef rb_utf8_str_new @@ -7956,22 +7954,7 @@ rb_str_split(VALUE str, const char *sep0 https://github.com/ruby/ruby/blob/trunk/string.c#L7954 return rb_str_split_m(1, &sep, str); } -static int -enumerator_wantarray(const char *method) -{ - if (rb_block_given_p()) { -#if STRING_ENUMERATORS_WANTARRAY - rb_warn("given block not used"); -#else - rb_warning("passing a block to String#%s is deprecated", method); - return 0; -#endif - } - return 1; -} - -#define WANTARRAY(m, size) \ - (enumerator_wantarray(m) ? rb_ary_new_capa(size) : 0) +#define WANTARRAY(m, size) (!rb_block_given_p() ? rb_ary_new_capa(size) : 0) static inline int enumerator_element(VALUE ary, VALUE e) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/