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

ruby-changes:52874

From: nobu <ko1@a...>
Date: Mon, 15 Oct 2018 21:31:31 +0900 (JST)
Subject: [ruby-changes:52874] nobu:r65086 (trunk): regparse.c: Suppress duplicated range warning by mere \X

nobu	2018-10-15 21:31:25 +0900 (Mon, 15 Oct 2018)

  New Revision: 65086

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=65086

  Log:
    regparse.c: Suppress duplicated range warning by mere \X
    
    * regparse.c (node_extended_grapheme_cluster): as Unicode 10 has
      added Grapheme_Cluster_Break properties to some characters,
      remove duplicated ranges for Unicode 9.

  Modified files:
    trunk/enc/unicode.c
    trunk/regparse.c
    trunk/test/ruby/test_regexp.rb
Index: regparse.c
===================================================================
--- regparse.c	(revision 65085)
+++ regparse.c	(revision 65086)
@@ -35,6 +35,7 @@ https://github.com/ruby/ruby/blob/trunk/regparse.c#L35
 
 #define CASE_FOLD_IS_APPLIED_INSIDE_NEGATIVE_CCLASS
 
+extern const int onigenc_unicode_version_number[3];
 
 const OnigSyntaxType OnigSyntaxRuby = {
   (( SYN_GNU_REGEX_OP | ONIG_SYN_OP_QMARK_NON_GREEDY |
@@ -6067,7 +6068,7 @@ node_extended_grapheme_cluster(Node** np https://github.com/ruby/ruby/blob/trunk/regparse.c#L6068
     np1 = node_new_cclass();
     if (IS_NULL(np1)) goto err;
     cc = NCCLASS(np1);
-    {
+    if (onigenc_unicode_version_number[0] < 10) {
       static const OnigCodePoint ranges[] = {
 	13,
 	0x1F308, 0x1F308,
@@ -6209,7 +6210,7 @@ node_extended_grapheme_cluster(Node** np https://github.com/ruby/ruby/blob/trunk/regparse.c#L6210
     if (IS_NULL(np1)) goto err;
     cc = NCCLASS(np1);
     {
-      static const OnigCodePoint ranges[] = {
+      static const OnigCodePoint ranges9[] = {
 	8,
 	0x1F3C2, 0x1F3C2,
 	0x1F3C7, 0x1F3C7,
@@ -6220,6 +6221,14 @@ node_extended_grapheme_cluster(Node** np https://github.com/ruby/ruby/blob/trunk/regparse.c#L6221
 	0x1F574, 0x1F574,
 	0x1F6CC, 0x1F6CC,
       };
+      static const OnigCodePoint ranges10[] = {
+	3,
+	0x1F3F3, 0x1F3F3,
+	0x1F441, 0x1F441,
+	0x1F46F, 0x1F46F,
+      };
+      const OnigCodePoint *ranges =
+        (onigenc_unicode_version_number[0] < 10) ? ranges9 : ranges10;
       r = add_ctype_to_cc_by_range(cc, -1, 0, env, sb_out, ranges);
       if (r != 0) goto err;
     }
Index: test/ruby/test_regexp.rb
===================================================================
--- test/ruby/test_regexp.rb	(revision 65085)
+++ test/ruby/test_regexp.rb	(revision 65086)
@@ -962,6 +962,8 @@ class TestRegexp < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_regexp.rb#L962
     assert_match /\A\X\z/, "\u{1F468 200D 1F393}"
     assert_match /\A\X\z/, "\u{1F46F 200D 2642 FE0F}"
     assert_match /\A\X\z/, "\u{1f469 200d 2764 fe0f 200d 1f469}"
+
+    assert_warning('') {/\X/ =~ "\u{a0}"}
   end
 
   def test_backward
Index: enc/unicode.c
===================================================================
--- enc/unicode.c	(revision 65085)
+++ enc/unicode.c	(revision 65086)
@@ -786,7 +786,6 @@ SpecialsCopy: https://github.com/ruby/ruby/blob/trunk/enc/unicode.c#L786
   return (int )(to - to_start);
 }
 
-#if 0
 const char onigenc_unicode_version_string[] =
 #ifdef ONIG_UNICODE_VERSION_STRING
     ONIG_UNICODE_VERSION_STRING
@@ -802,4 +801,3 @@ const int onigenc_unicode_version_number https://github.com/ruby/ruby/blob/trunk/enc/unicode.c#L801
     0
 #endif
 };
-#endif

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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