This is an automated email from the ASF dual-hosted git repository. matthiasblaesing pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/netbeans.git
The following commit(s) were added to refs/heads/master by this push: new 64b055527b [NETBEANS-1615] fixed @throws hint for type variable new e944fa4211 Merge pull request #2974 from wal-jan/NETBEANS-1615 64b055527b is described below commit 64b055527b807b6a0f9cbc4ee45f1fe056cdb12a Author: Jan Walkotte <jan.walko...@gmx.net> AuthorDate: Mon Oct 17 19:05:22 2022 +0200 [NETBEANS-1615] fixed @throws hint for type variable --- .../netbeans/modules/javadoc/hints/Analyzer.java | 13 ++++++----- .../modules/javadoc/hints/AddTagFixTest.java | 26 ++++++++++++++++++++++ .../modules/javadoc/hints/Analyzer2Test.java | 17 ++++++++++++++ 3 files changed, 51 insertions(+), 5 deletions(-) diff --git a/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java b/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java index 94772b233a..1a75306226 100644 --- a/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java +++ b/java/javadoc/src/org/netbeans/modules/javadoc/hints/Analyzer.java @@ -77,6 +77,7 @@ import javax.lang.model.element.Name; import javax.lang.model.element.TypeElement; import javax.lang.model.type.TypeKind; import javax.lang.model.type.TypeMirror; +import javax.lang.model.type.TypeVariable; import javax.lang.model.util.Elements; import javax.lang.model.util.Types; import org.netbeans.api.java.source.CompilationInfo; @@ -676,8 +677,8 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { DocSourcePositions sp = (DocSourcePositions) javac.getTrees().getSourcePositions(); int start = (int) sp.getStartPosition(javac.getCompilationUnit(), currentDocPath.getDocComment(), tree); int end = (int) sp.getEndPosition(javac.getCompilationUnit(), currentDocPath.getDocComment(), tree); - if (ex == null || (ex.asType().getKind() == TypeKind.DECLARED - && types.isAssignable(ex.asType(), throwable))) { + boolean isType = ex != null && (ex.asType().getKind() == TypeKind.DECLARED || ex.asType().getKind() == TypeKind.TYPEVAR); + if (ex == null || (isType && types.isAssignable(ex.asType(), throwable))) { switch (currentElement.getKind()) { case CONSTRUCTOR: case METHOD: @@ -685,12 +686,14 @@ final class Analyzer extends DocTreePathScanner<Void, List<ErrorDescription>> { || types.isAssignable(ex.asType(), runtime))) { ExecutableElement ee = (ExecutableElement) currentElement; String fqn; - if (ex != null) { - fqn = ((TypeElement) ex).getQualifiedName().toString(); - } else { + if (ex == null) { ExpressionTree referenceClass = javac.getTreeUtilities().getReferenceClass(new DocTreePath(currentDocPath, exName)); if(referenceClass == null) break; fqn = referenceClass.toString(); + } else if (ex.asType().getKind() == TypeKind.TYPEVAR) { + fqn = ex.getSimpleName().toString(); + } else { + fqn = ((TypeElement) ex).getQualifiedName().toString(); } checkThrowsDeclared(tree, ex, fqn, ee.getThrownTypes(), dtph, start, end, errors); } diff --git a/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/AddTagFixTest.java b/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/AddTagFixTest.java index 784c9df874..3aa3ebb493 100644 --- a/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/AddTagFixTest.java +++ b/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/AddTagFixTest.java @@ -641,6 +641,32 @@ public class AddTagFixTest extends NbTestCase { + "}\n"); } + public void testAddThrowsTagFix_NETBEANS_1615() throws Exception { + // issue NETBEANS-1615 + HintTest.create() + .input( + "package test;\n" + + "interface Zima {\n" + + " /**\n" + + " */\n" + + " <X extends Exception> void leden() throws X;\n" + + "}\n") + .preference(AVAILABILITY_KEY + true, true) + .preference(SCOPE_KEY, "private") + .run(JavadocHint.class) + .findWarning("4:46-4:47:warning:Missing @throws tag for X") + .applyFix("Add @throws X tag") + .assertCompilable() + .assertOutput( + "package test;\n" + + "interface Zima {\n" + + " /**\n" + + " * @throws X\n" + + " */\n" + + " <X extends Exception> void leden() throws X;\n" + + "}\n"); + } + public void testAddThrowsTagFix_NestedClass_160414() throws Exception { // issue 160414 HintTest.create() diff --git a/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java b/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java index 477c0ac38e..77dab6fa59 100644 --- a/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java +++ b/java/javadoc/test/unit/src/org/netbeans/modules/javadoc/hints/Analyzer2Test.java @@ -182,6 +182,23 @@ public class Analyzer2Test extends NbTestCase { .assertNotContainsWarnings("Unknown throwable: @throws java.nio.file.NoSuchFileException"); } + public void testExceptionTypeAnalyzer() throws Exception { + // issue NETBEANS-1615 + HintTest.create() + .input( + "package test;\n" + + "interface Zima {\n" + + " /**\n" + + " * @throws X\n" + + " */\n" + + " <X extends Exception> void leden() throws X;\n" + + "}\n") + .preference(AVAILABILITY_KEY + true, true) + .preference(SCOPE_KEY, "private") + .run(JavadocHint.class) + .assertNotContainsWarnings("Missing @throws tag for X"); + } + public void testInheritanceAnalyzer() throws Exception { HintTest.create() .input( --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@netbeans.apache.org For additional commands, e-mail: commits-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists