diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrows.java b/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrows.java index 3648b5ce83c..82f0c9d0602 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrows.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrows.java @@ -33,6 +33,7 @@ import com.sun.source.util.DocTreePathScanner; import com.sun.tools.javac.api.JavacTrees; import com.sun.tools.javac.code.Type; +import com.sun.tools.javac.code.TypeTag; import javax.lang.model.element.Element; /** @@ -84,7 +85,8 @@ public Void visitThrows(ThrowsTree throwsTree, Void unused) { } private boolean isCheckedException(Type type) { - return !state.getTypes().isAssignable(type, state.getSymtab().errorType) + return type.hasTag(TypeTag.CLASS) + && !state.getTypes().isAssignable(type, state.getSymtab().errorType) && !state.getTypes().isAssignable(type, state.getSymtab().runtimeExceptionType); } } diff --git a/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrowsTest.java b/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrowsTest.java index f77fb9d7f69..4b513e808e9 100644 --- a/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrowsTest.java +++ b/core/src/test/java/com/google/errorprone/bugpatterns/javadoc/InvalidThrowsTest.java @@ -84,4 +84,20 @@ public void unrecognisedException_noComplaint() { .expectUnchanged() .doTest(TestMode.TEXT_MATCH); } + + @Test + public void throwsInvalidType() { + refactoring + .addInputLines( + "Test.java", + "interface Test {", + " /**", + " * @throws bar when failed", + " */", + " void foo();", + " void bar();", + "}") + .expectUnchanged() + .doTest(TestMode.TEXT_MATCH); + } }