diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/testOnly/TestOnlyInspection.java b/java/java-analysis-impl/src/com/intellij/codeInspection/testOnly/TestOnlyInspection.java index 2c8eb7e3652e..aa87acc06087 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/testOnly/TestOnlyInspection.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/testOnly/TestOnlyInspection.java @@ -112,8 +112,8 @@ public class TestOnlyInspection extends AbstractBaseJavaLocalInspectionTool { if (vft == null && !isAnnotatedAsTestOnly(member)) { return true; } - if (isInsideTestOnlyMethod(place) || isInsideTestOnlyField(place) || isInsideTestClass(place) || isUnderTestSources(place) - || isGenericType(place, member)) { + if (isInsideTestOnlyMethod(place) || isInsideTestOnlyField(place) || isInsideTestOnlyClass(place) || isInsideTestClass(place) + || isUnderTestSources(place)) { return true; } @@ -174,6 +174,10 @@ public class TestOnlyInspection extends AbstractBaseJavaLocalInspectionTool { return isAnnotatedAsTestOnly(getTopLevelParentOfType(e, PsiField.class)); } + private static boolean isInsideTestOnlyClass(@NotNull PsiElement e) { + return isAnnotatedAsTestOnly(getTopLevelParentOfType(e, PsiClass.class)); + } + private static boolean isAnnotatedAsTestOnly(@Nullable PsiMember m) { if (m == null) return false; return isDirectlyTestOnly(m) || isAnnotatedAsTestOnly(m.getContainingClass()); @@ -188,11 +192,6 @@ public class TestOnlyInspection extends AbstractBaseJavaLocalInspectionTool { return c != null && TestFrameworks.getInstance().isTestClass(c); } - private static boolean isGenericType(@NotNull PsiElement place, @NotNull PsiMember member) { - PsiClass parent = PsiTreeUtil.getParentOfType(place, PsiClass.class); - return member.equals(parent); - } - private static T getTopLevelParentOfType(PsiElement e, Class c) { T parent = PsiTreeUtil.getParentOfType(e, c); if (parent == null) return null; diff --git a/java/java-tests/testData/inspection/testOnly/genericType/expected.xml b/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/expected.xml similarity index 100% rename from java/java-tests/testData/inspection/testOnly/genericType/expected.xml rename to java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/expected.xml diff --git a/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/InnerGenericType.java b/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/InnerGenericType.java new file mode 100644 index 000000000000..9b1259a8c873 --- /dev/null +++ b/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/InnerGenericType.java @@ -0,0 +1,8 @@ +import org.jetbrains.annotations.TestOnly; +import java.util.List; + +@TestOnly +public class Bar { + static abstract class Foo implements List { + } +} \ No newline at end of file diff --git a/java/java-tests/testData/inspection/testOnly/genericType/src/SeveralGenericTypes.java b/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/SeveralGenericTypes.java similarity index 100% rename from java/java-tests/testData/inspection/testOnly/genericType/src/SeveralGenericTypes.java rename to java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/SeveralGenericTypes.java diff --git a/java/java-tests/testData/inspection/testOnly/genericType/src/SingleGenericType.java b/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/SingleGenericType.java similarity index 100% rename from java/java-tests/testData/inspection/testOnly/genericType/src/SingleGenericType.java rename to java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/SingleGenericType.java diff --git a/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/StaticInitializerVariable.java b/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/StaticInitializerVariable.java new file mode 100644 index 000000000000..94544e4690c5 --- /dev/null +++ b/java/java-tests/testData/inspection/testOnly/insideTestOnlyClass/src/StaticInitializerVariable.java @@ -0,0 +1,8 @@ +import org.jetbrains.annotations.TestOnly; + +@TestOnly +public class Bar { + static { + java.lang.Class clazz = Bar.class; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/codeInspection/TestOnlyInspectionTest.java b/java/java-tests/testSrc/com/intellij/java/codeInspection/TestOnlyInspectionTest.java index e1f0b8e18d2a..19ac896bfaf3 100644 --- a/java/java-tests/testSrc/com/intellij/java/codeInspection/TestOnlyInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/java/codeInspection/TestOnlyInspectionTest.java @@ -80,7 +80,7 @@ public class TestOnlyInspectionTest extends JavaInspectionTestCase { doTest(); } - public void testGenericType() { + public void testInsideTestOnlyClass() { doTest(); }