[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]