All,
It looks like we've got a regression, see
http://harmonytest.org/testapp.do?method=showresult&id=2293852.

[EMAIL PROTECTED]:
java.util.regex.PatternSyntaxException: Illegal inline construct near index: 3
x(?c)y^
at java.util.regex.Lexer.readFlags(Lexer.java:1097)
at java.util.regex.Lexer.movePointer(Lexer.java:749)
at java.util.regex.Lexer.<init>(Lexer.java:228)
at java.util.regex.Pattern.compileImpl(Pattern.java:279)
at java.util.regex.Pattern.compile(Pattern.java:264)
at java.util.regex.Pattern.compile(Pattern.java)
at java.util.regex.Pattern.matches(Pattern.java)
at 
org.apache.harmony.tests.java.util.regex.PatternTest.testMatches(PatternTest.java:431)
at java.lang.reflect.VMReflection.invokeMethod(Native Method)


Thanks!


On 11/16/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Author: pyang
Date: Thu Nov 16 10:57:47 2006
New Revision: 475869

URL: http://svn.apache.org/viewvc?view=rev&rev=475869
Log:
Apply patch for HARMONY-2127 ([classlib][regex] harmony does not compile 
embedded flag (?c))

Modified:
   
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/main/java/java/util/regex/Lexer.java
   
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/test/java/org/apache/harmony/tests/java/util/regex/PatternTest.java

Modified: 
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/main/java/java/util/regex/Lexer.java
URL: 
http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/regex/src/main/java/java/util/regex/Lexer.java?view=diff&rev=475869&r1=475868&r2=475869
==============================================================================
--- 
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/main/java/java/util/regex/Lexer.java
 (original)
+++ 
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/main/java/java/util/regex/Lexer.java
 Thu Nov 16 10:57:47 2006
@@ -1093,8 +1093,7 @@
                return res | (1 << 8);

            default:
-                throw new 
PatternSyntaxException(Messages.getString("regex.1A"), //$NON-NLS-1$
-                                               this.toString(), index);
+                // ignore invalid flags (HARMONY-2127)
            }
            nextIndex();
        }

Modified: 
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/test/java/org/apache/harmony/tests/java/util/regex/PatternTest.java
URL: 
http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/regex/src/test/java/org/apache/harmony/tests/java/util/regex/PatternTest.java?view=diff&rev=475869&r1=475868&r2=475869
==============================================================================
--- 
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/test/java/org/apache/harmony/tests/java/util/regex/PatternTest.java
 (original)
+++ 
incubator/harmony/enhanced/classlib/trunk/modules/regex/src/test/java/org/apache/harmony/tests/java/util/regex/PatternTest.java
 Thu Nov 16 10:57:47 2006
@@ -31,7 +31,10 @@
                       
"(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)*",
                       "(a|b)*(a|b)*A(a|b)*lice.*",
                       
"(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)(a|b|c|d|e|f|g|h|"
-                                       + 
"i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)*(1|2|3|4|5|6|7|8|9|0)*|while|for|struct|if|do"
+                                       + 
"i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)*(1|2|3|4|5|6|7|8|9|0)*|while|for|struct|if|do",
+             "x(?c)y",
+             "x(?cc)y",
+             "x(?:c)y"

       };

@@ -322,38 +325,49 @@
                */
               String pattern = "b)a";
               try {
-                       Pattern pat = Pattern.compile(pattern);
+                       Pattern.compile(pattern);
+            fail("Expected a PatternSyntacException when compiling pattern: " 
+ pattern);
               } catch (PatternSyntaxException e) {
-                       System.out.println(e);
+                       // pass
               }
               pattern = "bcde)a";
               try {
-                       Pattern pat = Pattern.compile(pattern);
+                       Pattern.compile(pattern);
+            fail("Expected a PatternSyntacException when compiling pattern: " 
+ pattern);
               } catch (PatternSyntaxException e) {
-                       System.out.println(e);
+                       // pass
               }
               pattern = "bbg())a";
               try {
                       Pattern pat = Pattern.compile(pattern);
+            fail("Expected a PatternSyntacException when compiling pattern: " 
+ pattern);
               } catch (PatternSyntaxException e) {
-                       System.out.println(e);
+                       // pass
               }

               pattern = "cdb(?i))a";
               try {
                       Pattern pat = Pattern.compile(pattern);
-               } catch (Exception e) {
-                       System.out.println(e);
+            fail("Expected a PatternSyntacException when compiling pattern: " 
+ pattern);
+               } catch (PatternSyntaxException e) {
+                       // pass
               }
+
+        /*
+         * This pattern should compile - HARMONY-2127
+         */
+        pattern = "x(?c)y";
+        Pattern.compile(pattern);
+

               /*
                * this pattern doesn't match any string, but should be compiled 
anyway
                */
               pattern = "(b\\1)a";
-               Pattern pat = Pattern.compile(pattern);
+               Pattern.compile(pattern);

       }
-
+
       /*
        * Class under test for Pattern compile(String)
        */
@@ -403,7 +417,10 @@
                                                               + 
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" },
                               { "ababbaAabababblice", "ababbaAliceababab", 
"ababbAabliceaaa",
                                               "abbbAbbbliceaaa", "Alice" },
-                               { "a123", "bnxnvgds156", "for", "while", "if", 
"struct" }
+                               { "a123", "bnxnvgds156", "for", "while", "if", 
"struct" },
+                { "xy" },
+                { "xy" },
+                { "xcy" }

               };

@@ -414,7 +431,7 @@
                                               posSeq[i][j]));
                       }
               }
-       }
+       }

       public void testTimeZoneIssue() {
               Pattern p = Pattern.compile("GMT(\\+|\\-)(\\d+)(:(\\d+))?");





--
Thank you,
Alexei

Reply via email to