Skip to content

Commit 0a4f9ad

Browse files
committedJun 6, 2023
8292157: Incorrect error: "block element not allowed within inline element <a>"
Reviewed-by: jjg
1 parent 16ab7bf commit 0a4f9ad

File tree

4 files changed

+31
-18
lines changed

4 files changed

+31
-18
lines changed
 

‎src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/Checker.java

+9-3
Original file line numberDiff line numberDiff line change
@@ -492,15 +492,21 @@ private void checkStructure(StartElementTree tree, HtmlTag t) {
492492
case START_ELEMENT -> {
493493
if (top.tag.blockType == HtmlTag.BlockType.INLINE) {
494494
Name name = ((StartElementTree) top.tree).getName();
495-
env.messages.error(HTML, tree, "dc.tag.not.allowed.inline.element",
496-
treeName, name);
495+
// Links may use block display style so issue warning instead of error
496+
if ("a".equalsIgnoreCase(name.toString())) {
497+
env.messages.warning(HTML, tree, "dc.tag.not.allowed.element.default.style",
498+
treeName, name);
499+
} else {
500+
env.messages.error(HTML, tree, "dc.tag.not.allowed.inline.element",
501+
treeName, name);
502+
}
497503
return;
498504
}
499505
}
500506

501507
case LINK, LINK_PLAIN -> {
502508
String name = top.tree.getKind().tagName;
503-
env.messages.error(HTML, tree, "dc.tag.not.allowed.inline.tag",
509+
env.messages.warning(HTML, tree, "dc.tag.not.allowed.tag.default.style",
504510
treeName, name);
505511
return;
506512
}

‎src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclint/resources/doclint.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ dc.tag.nested.tag=nested tag: {0}
7777
dc.tag.not.allowed.here = tag not allowed here: <{0}>
7878
dc.tag.not.allowed = element not allowed in documentation comments: <{0}>
7979
dc.tag.not.allowed.inline.element = block element not allowed within inline element <{1}>: {0}
80-
dc.tag.not.allowed.inline.tag = block element not allowed within @{1}: {0}
81-
dc.tag.not.allowed.inline.other = block element not allowed here: {0}
80+
dc.tag.not.allowed.element.default.style = block element <{0}> not allowed within element <{1}> with default style
81+
dc.tag.not.allowed.tag.default.style = block element <{0}> not allowed within @{1} with default style
8282
dc.tag.not.closed= element not closed: {0}
8383
dc.tag.p.in.pre= unexpected use of <p> inside <pre> element
8484
dc.tag.requires.heading = heading not found for </{0}>

‎test/langtools/tools/doclint/HtmlTagsTest.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
* @test /nodynamiccopyright/
3-
* @bug 8004832 8247957
3+
* @bug 8004832 8247957 8292157
44
* @summary Add new doclint package
55
* @modules jdk.javadoc/jdk.javadoc.internal.doclint
66
* @build DocLintTester
@@ -32,6 +32,7 @@ public void not_allowed() { }
3232

3333
/**
3434
* <span> <p> </span>
35+
* <a> <p> </a>
3536
*/
3637
public void not_allowed_inline() { }
3738

‎test/langtools/tools/doclint/HtmlTagsTest.out

+18-12
Original file line numberDiff line numberDiff line change
@@ -19,35 +19,41 @@ HtmlTagsTest.java:34: error: block element not allowed within inline element <sp
1919
HtmlTagsTest.java:34: warning: empty <p> tag
2020
* <span> <p> </span>
2121
^
22-
HtmlTagsTest.java:39: error: block element not allowed within @link: p
22+
HtmlTagsTest.java:35: warning: block element <p> not allowed within element <a> with default style
23+
* <a> <p> </a>
24+
^
25+
HtmlTagsTest.java:35: warning: empty <p> tag
26+
* <a> <p> </a>
27+
^
28+
HtmlTagsTest.java:40: warning: block element <p> not allowed within @link with default style
2329
* {@link java.lang.String <p> }
2430
^
25-
HtmlTagsTest.java:40: error: block element not allowed within @link: p
31+
HtmlTagsTest.java:41: warning: block element <p> not allowed within @link with default style
2632
* {@link java.lang.String <p> }
2733
^
28-
HtmlTagsTest.java:45: error: invalid end tag: </img>
34+
HtmlTagsTest.java:46: error: invalid end tag: </img>
2935
* <img src="any.jpg" alt="alt"> </img>
3036
^
31-
HtmlTagsTest.java:50: error: end tag missing: </b>
37+
HtmlTagsTest.java:51: error: end tag missing: </b>
3238
* <i> <b> </i>
3339
^
34-
HtmlTagsTest.java:55: error: unexpected end tag: </b>
40+
HtmlTagsTest.java:56: error: unexpected end tag: </b>
3541
* <i> </b> </i>
3642
^
37-
HtmlTagsTest.java:55: warning: empty <i> tag
43+
HtmlTagsTest.java:56: warning: empty <i> tag
3844
* <i> </b> </i>
3945
^
40-
HtmlTagsTest.java:60: error: text not allowed in <ul> element
46+
HtmlTagsTest.java:61: error: text not allowed in <ul> element
4147
* <ul> text <li> ... </li> </ul>
4248
^
43-
HtmlTagsTest.java:65: error: tag not allowed here: <b>
49+
HtmlTagsTest.java:66: error: tag not allowed here: <b>
4450
* <ul> <b>text</b> <li> ... </li> </ul>
4551
^
46-
HtmlTagsTest.java:70: error: text not allowed in <ul> element
52+
HtmlTagsTest.java:71: error: text not allowed in <ul> element
4753
* <ul> &amp; <li> ... </li> </ul>
4854
^
49-
HtmlTagsTest.java:75: error: text not allowed in <ul> element
55+
HtmlTagsTest.java:76: error: text not allowed in <ul> element
5056
* <ul> *@/ <li> ... </li> </ul>
5157
^
52-
15 errors
53-
2 warnings
58+
13 errors
59+
6 warnings

1 commit comments

Comments
 (1)

openjdk-notifier[bot] commented on Jun 6, 2023

@openjdk-notifier[bot]
Please sign in to comment.