8283041: [javadoc] Crashes using {@return} with @param

Reviewed-by: jjg
This commit is contained in:
Pavel Rappo 2022-03-11 22:41:47 +00:00
parent 0fd09d383b
commit 374193b6d2
2 changed files with 20 additions and 6 deletions

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2012, 2021, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2012, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -985,8 +985,8 @@ public class Checker extends DocTreePathScanner<Void, Void> {
} }
if (tree.isInline()) { if (tree.isInline()) {
DocCommentTree dct = getCurrentPath().getDocComment(); DocCommentTree dct = getCurrentPath().getDocComment();
if (tree != dct.getFirstSentence().get(0)) { if (dct.getFirstSentence().isEmpty() || tree != dct.getFirstSentence().get(0)) {
env.messages.warning(REFERENCE, tree, "dc.return.not.first"); env.messages.warning(SYNTAX, tree, "dc.return.not.first");
} }
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2003, 2021, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2003, 2022, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
@ -23,7 +23,7 @@
/* /*
* @test * @test
* @bug 4490068 8075778 * @bug 4490068 8075778 8283041
* @summary General tests for inline or block at-return tag * @summary General tests for inline or block at-return tag
* @library /tools/lib ../../lib * @library /tools/lib ../../lib
* @modules jdk.javadoc/jdk.javadoc.internal.tool * @modules jdk.javadoc/jdk.javadoc.internal.tool
@ -265,16 +265,30 @@ public class TestReturnTag extends JavadocTester {
*/ */
public int m() { return 0; } public int m() { return 0; }
} }
""",
"""
/** Comment. */
public class X {
/**
* @author Jim
* {@return the result}
*/
public int m() { return 0; }
}
"""); """);
javadoc("-d", base.resolve("out").toString(), javadoc("-d", base.resolve("out").toString(),
"-sourcepath", src.toString(), "-sourcepath", src.toString(),
src.resolve("C.java").toString()); src.resolve("C.java").toString(),
src.resolve("X.java").toString());
checkExit(Exit.OK); checkExit(Exit.OK);
checkOutput(Output.OUT, true, checkOutput(Output.OUT, true,
"C.java:4: warning: {@return} not at beginning of description"); "C.java:4: warning: {@return} not at beginning of description");
checkOutput(Output.OUT, true,
"X.java:5: warning: {@return} not at beginning of description");
checkOutput("C.html", true, checkOutput("C.html", true,
""" """
<div class="block">Some text. Returns the result. More text.</div> <div class="block">Some text. Returns the result. More text.</div>