# HG changeset patch # User pmuthuswamy # Date 1542862544 -19800 # Node ID 12956ca371c229484c6f6daa0f87e468ccfa248f # Parent 148124c951fd104d75eb0a80d8e8364ea83c446c 8213819: doclint should warn against {@index} inside tag Reviewed-by: jjg, hannesw diff -r 148124c951fd -r 12956ca371c2 src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java --- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java Thu Nov 22 10:30:47 2018 +0800 +++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/Checker.java Thu Nov 22 10:25:44 2018 +0530 @@ -59,7 +59,9 @@ import com.sun.source.doctree.EntityTree; import com.sun.source.doctree.ErroneousTree; import com.sun.source.doctree.IdentifierTree; +import com.sun.source.doctree.IndexTree; import com.sun.source.doctree.InheritDocTree; +import com.sun.source.doctree.InlineTagTree; import com.sun.source.doctree.LinkTree; import com.sun.source.doctree.LiteralTree; import com.sun.source.doctree.ParamTree; @@ -71,6 +73,7 @@ import com.sun.source.doctree.SinceTree; import com.sun.source.doctree.StartElementTree; import com.sun.source.doctree.SummaryTree; +import com.sun.source.doctree.SystemPropertyTree; import com.sun.source.doctree.TextTree; import com.sun.source.doctree.ThrowsTree; import com.sun.source.doctree.UnknownBlockTagTree; @@ -765,6 +768,18 @@ } @Override @DefinedBy(Api.COMPILER_TREE) + public Void visitIndex(IndexTree tree, Void ignore) { + for (TagStackItem tsi : tagStack) { + if (tsi.tag == HtmlTag.A) { + env.messages.warning(HTML, tree, "dc.tag.a.within.a", + "{@" + tree.getTagName() + "}"); + break; + } + } + return super.visitIndex(tree, ignore); + } + + @Override @DefinedBy(Api.COMPILER_TREE) public Void visitInheritDoc(InheritDocTree tree, Void ignore) { markEnclosingTag(Flag.HAS_INLINE_TAG); // TODO: verify on overridden method @@ -921,6 +936,18 @@ } @Override @DefinedBy(Api.COMPILER_TREE) + public Void visitSystemProperty(SystemPropertyTree tree, Void ignore) { + for (TagStackItem tsi : tagStack) { + if (tsi.tag == HtmlTag.A) { + env.messages.warning(HTML, tree, "dc.tag.a.within.a", + "{@" + tree.getTagName() + "}"); + break; + } + } + return super.visitSystemProperty(tree, ignore); + } + + @Override @DefinedBy(Api.COMPILER_TREE) public Void visitThrows(ThrowsTree tree, Void ignore) { ReferenceTree exName = tree.getExceptionName(); Element ex = env.trees.getElement(new DocTreePath(getCurrentPath(), exName)); diff -r 148124c951fd -r 12956ca371c2 src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties --- a/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties Thu Nov 22 10:30:47 2018 +0800 +++ b/src/jdk.compiler/share/classes/com/sun/tools/doclint/resources/doclint.properties Thu Nov 22 10:25:44 2018 +0530 @@ -60,6 +60,7 @@ dc.service.not.found = service-type not found dc.tag.code.within.code = '{@code'} within dc.tag.empty = empty <{0}> tag +dc.tag.a.within.a = {0} tag, which expands to , within dc.tag.end.not.permitted = invalid end tag: dc.tag.end.unexpected = unexpected end tag: dc.tag.header.sequence.1 = header used out of sequence: <{0}> diff -r 148124c951fd -r 12956ca371c2 test/langtools/jdk/javadoc/doclet/testIndexTaglet/TestIndexTaglet.java --- a/test/langtools/jdk/javadoc/doclet/testIndexTaglet/TestIndexTaglet.java Thu Nov 22 10:30:47 2018 +0800 +++ b/test/langtools/jdk/javadoc/doclet/testIndexTaglet/TestIndexTaglet.java Thu Nov 22 10:25:44 2018 +0530 @@ -55,9 +55,17 @@ @Test void test(Path base) throws Exception { Path srcDir = base.resolve("src"); - createTestClass(srcDir); + Path outDir = base.resolve("out"); + + MethodBuilder method = MethodBuilder + .parse("public void func(A a) {}") + .setComments("test description with {@index search_phrase_a class a}"); - Path outDir = base.resolve("out"); + new ClassBuilder(tb, "pkg.A") + .setModifiers("public", "class") + .addMembers(method) + .write(srcDir); + javadoc("-d", outDir.toString(), "-sourcepath", srcDir.toString(), "pkg"); @@ -74,15 +82,24 @@ "
test description with search_phrase_a
"); } - void createTestClass(Path srcDir) throws Exception { - MethodBuilder method = MethodBuilder - .parse("public void func(A a) {}") - .setComments("test description with {@index search_phrase_a class a}"); + @Test + void testIndexWithinATag(Path base) throws Exception { + Path srcDir = base.resolve("src"); + Path outDir = base.resolve("out"); - new ClassBuilder(tb, "pkg.A") + new ClassBuilder(tb, "pkg2.A") .setModifiers("public", "class") - .addMembers(method) + .addMembers(MethodBuilder.parse("public void func(){}") + .setComments("a within a :
{@index check}")) .write(srcDir); + javadoc("-d", outDir.toString(), + "-sourcepath", srcDir.toString(), + "pkg2"); + + checkExit(Exit.OK); + + checkOutput(Output.OUT, true, + "warning: {@index} tag, which expands to , within "); } } diff -r 148124c951fd -r 12956ca371c2 test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/TestSystemPropertyTaglet.java --- a/test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/TestSystemPropertyTaglet.java Thu Nov 22 10:30:47 2018 +0800 +++ b/test/langtools/jdk/javadoc/doclet/testSystemPropertyTaglet/TestSystemPropertyTaglet.java Thu Nov 22 10:25:44 2018 +0530 @@ -55,9 +55,18 @@ @Test void test(Path base) throws Exception { Path srcDir = base.resolve("src"); - createTestClass(srcDir); + Path outDir = base.resolve("out"); + + MethodBuilder method = MethodBuilder + .parse("public void func(A a) {}") + .setComments("test with {@systemProperty java.version}"); - Path outDir = base.resolve("out"); + new ClassBuilder(tb, "pkg.A") + .setComments("test with {@systemProperty user.name}") + .setModifiers("public", "class") + .addMembers(method) + .write(srcDir); + javadoc("-d", outDir.toString(), "-sourcepath", srcDir.toString(), "pkg"); @@ -87,15 +96,24 @@ + "\"u\":\"pkg/A.html#user.name\"}"); } - void createTestClass(Path srcDir) throws Exception { - MethodBuilder method = MethodBuilder - .parse("public void func(A a) {}") - .setComments("test with {@systemProperty java.version}"); + @Test + void testSystemProperytWithinATag(Path base) throws Exception { + Path srcDir = base.resolve("src"); + Path outDir = base.resolve("out"); - new ClassBuilder(tb, "pkg.A") - .setComments("test with {@systemProperty user.name}") + new ClassBuilder(tb, "pkg2.A") .setModifiers("public", "class") - .addMembers(method) + .addMembers(MethodBuilder.parse("public void func(){}") + .setComments("a within a : {@systemProperty user.name}")) .write(srcDir); + + javadoc("-d", outDir.toString(), + "-sourcepath", srcDir.toString(), + "pkg2"); + + checkExit(Exit.OK); + + checkOutput(Output.OUT, true, + "warning: {@systemProperty} tag, which expands to , within "); } }