You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2023/01/09 16:23:25 UTC

[netbeans] branch master updated: [NETBEANS-1615] fixed @throws hint for type variable

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 <ja...@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-unsubscribe@netbeans.apache.org
For additional commands, e-mail: commits-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists