提交 305a3361 编写于 作者: J jjg

8021215: javac gives incorrect doclint warnings on normal package statements

Reviewed-by: darcy
上级 82c8d34d
...@@ -141,10 +141,27 @@ public class Checker extends DocTreePathScanner<Void, Void> { ...@@ -141,10 +141,27 @@ public class Checker extends DocTreePathScanner<Void, Void> {
boolean isOverridingMethod = !env.currOverriddenMethods.isEmpty(); boolean isOverridingMethod = !env.currOverriddenMethods.isEmpty();
if (tree == null) { if (p.getLeaf() == p.getCompilationUnit()) {
if (!isSynthetic() && !isOverridingMethod) // If p points to a compilation unit, the implied declaration is the
reportMissing("dc.missing.comment"); // package declaration (if any) for the compilation unit.
return null; // Handle this case specially, because doc comments are only
// expected in package-info files.
JavaFileObject fo = p.getCompilationUnit().getSourceFile();
boolean isPkgInfo = fo.isNameCompatible("package-info", JavaFileObject.Kind.SOURCE);
if (tree == null) {
if (isPkgInfo)
reportMissing("dc.missing.comment");
return null;
} else {
if (!isPkgInfo)
reportReference("dc.unexpected.comment");
}
} else {
if (tree == null) {
if (!isSynthetic() && !isOverridingMethod)
reportMissing("dc.missing.comment");
return null;
}
} }
tagStack.clear(); tagStack.clear();
...@@ -187,6 +204,10 @@ public class Checker extends DocTreePathScanner<Void, Void> { ...@@ -187,6 +204,10 @@ public class Checker extends DocTreePathScanner<Void, Void> {
env.messages.report(MISSING, Kind.WARNING, env.currPath.getLeaf(), code, args); env.messages.report(MISSING, Kind.WARNING, env.currPath.getLeaf(), code, args);
} }
private void reportReference(String code, Object... args) {
env.messages.report(REFERENCE, Kind.WARNING, env.currPath.getLeaf(), code, args);
}
@Override @Override
public Void visitDocComment(DocCommentTree tree, Void ignore) { public Void visitDocComment(DocCommentTree tree, Void ignore) {
super.visitDocComment(tree, ignore); super.visitDocComment(tree, ignore);
......
...@@ -32,8 +32,6 @@ import java.util.ArrayList; ...@@ -32,8 +32,6 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.lang.model.element.Name; import javax.lang.model.element.Name;
import javax.tools.Diagnostic;
import javax.tools.JavaFileObject;
import javax.tools.StandardLocation; import javax.tools.StandardLocation;
import com.sun.source.doctree.DocCommentTree; import com.sun.source.doctree.DocCommentTree;
...@@ -152,18 +150,6 @@ public class DocLint implements Plugin { ...@@ -152,18 +150,6 @@ public class DocLint implements Plugin {
TreePath p = getCurrentPath(); TreePath p = getCurrentPath();
DocCommentTree dc = env.trees.getDocCommentTree(p); DocCommentTree dc = env.trees.getDocCommentTree(p);
if (p.getLeaf() == p.getCompilationUnit()) {
JavaFileObject fo = p.getCompilationUnit().getSourceFile();
boolean pkgInfo = fo.isNameCompatible("package-info", JavaFileObject.Kind.SOURCE);
if (!pkgInfo) {
if (dc == null)
return;
env.setCurrent(p, dc);
env.messages.report(Messages.Group.REFERENCE, Diagnostic.Kind.WARNING, p.getLeaf(),
"dc.unexpected.comment");
}
}
checker.scan(dc, p); checker.scan(dc, p);
} }
}; };
......
/* /*
* @test /nodynamiccopyright/ * @test /nodynamiccopyright/
* @bug 8020664 * @bug 8020664 8021215
* @summary doclint gives incorrect warnings on normal package statements * @summary doclint gives incorrect warnings on normal package statements
* @library ../.. * @library ../..
* @build DocLintTester * @build DocLintTester
* @run main DocLintTester -ref Test.out Test.java * @run main DocLintTester -ref Test.out Test.java
* @compile/fail/ref=Test.javac.out -XDrawDiagnostics -Werror -Xdoclint:all Test.java
*/ */
/** Unexpected comment */ /** Unexpected comment */
package bad; package bad;
/** */
class Test { } class Test { }
Test.java:12:1: compiler.warn.proc.messager: documentation comment not expected here
- compiler.err.warnings.and.werror
1 error
1 warning
Test.java:11: warning: documentation comment not expected here Test.java:12: warning: documentation comment not expected here
package bad; package bad;
^ ^
1 warning 1 warning
/* /*
* @test /nodynamiccopyright/ * @test /nodynamiccopyright/
* @bug 8020664 * @bug 8020664 8021215
* @summary doclint gives incorrect warnings on normal package statements * @summary doclint gives incorrect warnings on normal package statements
* @library ../.. * @library ../..
* @build DocLintTester * @build DocLintTester
* @run main DocLintTester -ref package-info.out package-info.java * @run main DocLintTester -ref package-info.out package-info.java
* @compile/fail/ref=package-info.javac.out -XDrawDiagnostics -Werror -Xdoclint:all package-info.java
*/ */
// missing comment // missing comment
......
package-info.java:12:1: compiler.warn.proc.messager: no comment
- compiler.err.warnings.and.werror
1 error
1 warning
package-info.java:11: warning: no comment package-info.java:12: warning: no comment
package bad; package bad;
^ ^
1 warning 1 warning
...@@ -23,15 +23,17 @@ ...@@ -23,15 +23,17 @@
/* /*
* @test /nodynamiccopyright/ * @test /nodynamiccopyright/
* @bug 8020664 * @bug 8020664 8021215
* @summary doclint gives incorrect warnings on normal package statements * @summary doclint gives incorrect warnings on normal package statements
* @library ../.. * @library ../..
* @build DocLintTester * @build DocLintTester
* @run main DocLintTester Test.java * @run main DocLintTester Test.java
* @compile -Xdoclint:all Test.java
*/ */
// no doc comment // no doc comment
package good; package good;
/** */
class Test { } class Test { }
...@@ -23,11 +23,12 @@ ...@@ -23,11 +23,12 @@
/* /*
* @test /nodynamiccopyright/ * @test /nodynamiccopyright/
* @bug 8020664 * @bug 8020664 8021215
* @summary doclint gives incorrect warnings on normal package statements * @summary doclint gives incorrect warnings on normal package statements
* @library ../.. * @library ../..
* @build DocLintTester * @build DocLintTester
* @run main DocLintTester package-info.java * @run main DocLintTester package-info.java
* @compile -Xdoclint:all package-info.java
*/ */
/** Description. */ /** Description. */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册