mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 11:04:34 +02:00
8021215: javac gives incorrect doclint warnings on normal package statements
Reviewed-by: darcy
This commit is contained in:
parent
c6c6fe7b5e
commit
2a95b6ac74
10 changed files with 45 additions and 24 deletions
|
@ -141,11 +141,28 @@ public class Checker extends DocTreePathScanner<Void, Void> {
|
||||||
|
|
||||||
boolean isOverridingMethod = !env.currOverriddenMethods.isEmpty();
|
boolean isOverridingMethod = !env.currOverriddenMethods.isEmpty();
|
||||||
|
|
||||||
|
if (p.getLeaf() == p.getCompilationUnit()) {
|
||||||
|
// If p points to a compilation unit, the implied declaration is the
|
||||||
|
// package declaration (if any) for the compilation unit.
|
||||||
|
// 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 (tree == null) {
|
||||||
if (!isSynthetic() && !isOverridingMethod)
|
if (!isSynthetic() && !isOverridingMethod)
|
||||||
reportMissing("dc.missing.comment");
|
reportMissing("dc.missing.comment");
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tagStack.clear();
|
tagStack.clear();
|
||||||
currHeaderTag = null;
|
currHeaderTag = null;
|
||||||
|
@ -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;
|
||||||
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 {
|
||||||
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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,14 +1,16 @@
|
||||||
/*
|
/*
|
||||||
* @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 { }
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
Test.java:12:1: compiler.warn.proc.messager: documentation comment not expected here
|
||||||
|
- compiler.err.warnings.and.werror
|
||||||
|
1 error
|
||||||
|
1 warning
|
|
@ -1,4 +1,4 @@
|
||||||
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
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
/*
|
/*
|
||||||
* @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
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
package-info.java:12:1: compiler.warn.proc.messager: no comment
|
||||||
|
- compiler.err.warnings.and.werror
|
||||||
|
1 error
|
||||||
|
1 warning
|
|
@ -1,4 +1,4 @@
|
||||||
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 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @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 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @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. */
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue