]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
regex_error.h: Remove _S_error_last to follow the standard.
authorTim Shen <timshen91@gmail.com>
Thu, 26 Sep 2013 21:48:04 +0000 (21:48 +0000)
committerTim Shen <timshen@gcc.gnu.org>
Thu, 26 Sep 2013 21:48:04 +0000 (21:48 +0000)
2013-09-26  Tim Shen  <timshen91@gmail.com>

* regex_error.h: Remove _S_error_last to follow the standard.
* regex_scanner.tcc:
(_Scanner<_FwdIter>::_M_scan_in_brace): Change error_brace to
error_badbrace.
(_Scanner<>::_M_eat_escape_posix): Extended doesn't support
back-reference.
* testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc:
Move here from ../../extended.
* testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc:
Likewise.

From-SVN: r202958

libstdc++-v3/ChangeLog
libstdc++-v3/include/bits/regex_error.h
libstdc++-v3/include/bits/regex_scanner.tcc
libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc [moved from libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/53622.cc with 90% similarity]
libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc [moved from libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/57173.cc with 88% similarity]

index ae914b969aa81b890fdc83222bb710aadd2894c0..fe1550810cb559d45bf578492f7f52a5b6349c09 100644 (file)
@@ -1,3 +1,16 @@
+2013-09-26  Tim Shen  <timshen91@gmail.com>
+
+       * regex_error.h: Remove _S_error_last to follow the standard.
+       * regex_scanner.tcc:
+       (_Scanner<_FwdIter>::_M_scan_in_brace): Change error_brace to
+       error_badbrace.
+       (_Scanner<>::_M_eat_escape_posix): Extended doesn't support
+       back-reference.
+       * testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc:
+       Move here from ../../extended.
+       * testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc:
+       Likewise.
+
 2013-09-25  Marc Glisse  <marc.glisse@inria.fr>
 
        PR libstdc++/58338
index 7f06727bfae50ded55b030078fdac416a8b83c4d..a39a8ea1a8f96ef2154f35b24262a93800f183a2 100644 (file)
@@ -61,7 +61,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
       _S_error_badrepeat,
       _S_error_complexity,
       _S_error_stack,
-      _S_error_last
     };
 
   /** The expression contained an invalid collating element name. */
index abdbcc64f1f3b4d9d41b728268f3e2b581a75b0f..e0dff9009c604107c56d000ddda9312e5bef0cf7 100644 (file)
@@ -345,7 +345,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
              ++_M_current;
            }
          else
-           __throw_regex_error(regex_constants::error_brace);
+           __throw_regex_error(regex_constants::error_badbrace);
        }
       else if (__c == '}')
        {
@@ -353,7 +353,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          _M_token = _S_token_interval_end;
        }
       else
-       __throw_regex_error(regex_constants::error_brace);
+       __throw_regex_error(regex_constants::error_badbrace);
     }
 
   template<typename _FwdIter>
@@ -428,6 +428,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
        }
     }
 
+  // Differences between styles:
+  // 1) Extended doesn't support backref, but basic does.
   template<typename _FwdIter>
     void
     _Scanner<_FwdIter>::
@@ -449,7 +451,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
          _M_eat_escape_awk();
          return;
        }
-      else if (_M_ctype.is(_CtypeT::digit, __c) && __c != '0')
+      else if (_M_is_basic() && _M_ctype.is(_CtypeT::digit, __c) && __c != '0')
        {
          _M_token = _S_token_backref;
          _M_value.assign(1, __c);
similarity index 90%
rename from libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/53622.cc
rename to libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc
index aee1dbe15dcb1f40ca901eabe34e7d348e816c8a..5f4b1d1b894fd139ea1cc9c5adb3d6d55488a3df 100644 (file)
@@ -21,7 +21,6 @@
 // <http://www.gnu.org/licenses/>.
 
 // 28.11.2 regex_match
-// Tests Extended grouping against a std::string target.
 
 #include <regex>
 #include <testsuite_hooks.h>
@@ -33,7 +32,7 @@ test01()
   bool test __attribute__((unused)) = true;
 
   {
-    std::regex  re("zxcv/(one.*)abc", std::regex::extended);
+    std::regex  re("zxcv/(one.*)abc", std::regex::ECMAScript);
     std::string target("zxcv/onetwoabc");
     std::smatch m;
 
@@ -46,7 +45,7 @@ test01()
   }
 
   {
-    std::regex  re("zxcv/(one.*)abc()\\2", std::regex::extended);
+    std::regex  re("zxcv/(one.*)abc()\\2", std::regex::ECMAScript);
     std::string target("zxcv/onetwoabc");
     std::smatch m;
 
similarity index 88%
rename from libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/57173.cc
rename to libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc
index cb3a54f4d88203186445cacac3ea64ec8c8ccd16..b9a72c93f017c595b2378e9121f59b60504dbad7 100644 (file)
@@ -20,8 +20,7 @@
 // with this library; see the file COPYING3.  If not see
 // <http://www.gnu.org/licenses/>.
 
-// 28.11.3 regex_search
-// Tests Extended against a std::string target.
+// 28.11.2 regex_match
 
 #include <regex>
 #include <testsuite_hooks.h>
@@ -34,7 +33,7 @@ test01()
   bool test __attribute__((unused)) = true;
 
   {
-    std::regex  re("/asdf(/.*)", std::regex::extended);
+    std::regex  re("/asdf(/.*)", std::regex::ECMAScript);
     std::string target("/asdf/qwerty");
     std::smatch m;
 
@@ -43,7 +42,7 @@ test01()
     VERIFY( std::string(m[1].first, m[1].second) == "/qwerty");
   }
   {
-    std::regex  re("/asdf(/.*)()\\2", std::regex::extended);
+    std::regex  re("/asdf(/.*)()\\2", std::regex::ECMAScript);
     std::string target("/asdf/qwerty");
     std::smatch m;