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