On Wed, 23 Dec 2020 05:38:36 GMT, Yoshiki Sato <ysato...@openjdk.org> wrote:
>> src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java line >> 736: >> >>> 734: >>> 735: // https://html.spec.whatwg.org/#the-id-attribute >>> 736: private static final Pattern validId = Pattern.compile("[^\s]+"); >> >> The regular expression is invalid and needs to be fixed. It should be >> `Pattern.compile("[^\\s]+")` >> Note the extra `` character. This is because you need to escape the `` >> character in the string constant, so that the `` is seen in the pattern as >> part of `\s`. > > Correct. Thanks a lot for finding this error. > Now that I have doubts why this line could have been compiled without error. > This line should cause a compiler error. > > Let me review all anchor tests again because the logic should be checked > there. For some reason, `"[^\s]+"` might have been dealt with as a text block, thus `\s` was regarded as a whitespace... I believe a text block is defined with triple double quotes, but javac seems to accept `"[^\s]+"` as a text block. That aside, all anchor tests look fine. This is because there is no specific test to use whitespace characters such as `\n`, `\t`, `\r` and `\f` in an anchor name. Also I confirmed the discrepancy of the results for `"[^\s]+"` and `"[^\\s]+"`. It shows that the former is not exactly what we want to do. $ jshell -J-Duser.language=en -J--show-version java 15 2020-09-15 Java(TM) SE Runtime Environment (build 15+36-1562) Java HotSpot(TM) 64-Bit Server VM (build 15+36-1562, mixed mode, sharing) | Welcome to JShell -- Version 15 | For an introduction type: /help intro jshell> Pattern validId1 = Pattern.compile("[^\s]+") validId1 ==> [^ ]+ jshell> Pattern validId2 = Pattern.compile("[^\\s]+") validId2 ==> [^\s]+ jshell> validId1.matcher("aaa").matches() $3 ==> true jshell> validId1.matcher("aaa ").matches() $4 ==> false jshell> validId1.matcher("aaa\n").matches() $5 ==> true jshell> validId2.matcher("aaa").matches() $6 ==> true jshell> validId2.matcher("aaa ").matches() $7 ==> false jshell> validId2.matcher("aaa\n").matches() $8 ==> false ------------- PR: https://git.openjdk.java.net/jdk/pull/893