harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jim Yu (JIRA)" <j...@apache.org>
Subject [jira] Commented: (HARMONY-6087) [luni] java.util.Scanner behaves differently with RI while parsing specific pattern
Date Tue, 10 Feb 2009 12:01:04 GMT

    [ https://issues.apache.org/jira/browse/HARMONY-6087?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672241#action_12672241
] 

Jim Yu commented on HARMONY-6087:
---------------------------------

I looked into code and found the root cause why Harmony fails to find a match was that the

Scanner would ignore the next line terminator completely while trying to find a match. According

to the Spec for findInLine(Pattern) method, this method "Attempts to find the next occurrence
of 
the specified pattern ignoring delimiters." It seems our behavior of ignoring the delimiter
complies 
with the Spec. But for the specific pattern in this case which contains a special constructs'?='

which means a zero-width positive lookahead, RI's behavior indicates it didn't ignore the
delimiter
completely. In fact, according to the testcase result, RI would take the delimiter into consideration

when it tries to find a match but exclude it in its match result. So it seems the Spec is
obscure for
the meaning of "ignore". To ignore the delimiter at all even when scanning as Harmony does
or just
ignore it in the match result ? RI's behavior indicates it means the later one. 

I've attached a patch to follow RI's behavior. 

> [luni] java.util.Scanner behaves differently with RI while parsing specific pattern 
> ------------------------------------------------------------------------------------
>
>                 Key: HARMONY-6087
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6087
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>    Affects Versions: 5.0M8
>            Reporter: Jim Yu
>             Fix For: 5.0M9
>
>         Attachments: HARMONY-6087.diff
>
>   Original Estimate: 24h
>  Remaining Estimate: 24h
>
> Here is a testcase, Scanner of Harmony behaves differently with RI 
> import java.util.Scanner;
> import java.util.regex.Pattern;
> public class SpecialPattern {
>     private static final Pattern pattern = Pattern.compile("^\\s*(?:\\*(?=[^/]))");
>     public static void main(String[] args) {
>         Scanner scn = new Scanner("   *\n");
>         String found = scn.findInLine(pattern);
>         System.out.print(found);
>     }
> }
> Result of RI:
>    *
> Result of Harmony:
> null

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message