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 9e573dc86ee9..47d2b2b2a550 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 @@ -47,8 +47,16 @@ public class TestOnlyInspection extends AbstractBaseJavaLocalInspectionTool { public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder h, boolean isOnTheFly) { return new JavaElementVisitor() { @Override - public void visitCallExpression(PsiCallExpression e) { - validate(e, e.resolveMethod(), h); + public void visitMethodCallExpression(PsiMethodCallExpression expression) { + validate(expression.getMethodExpression(), expression.resolveMethod(), h); + } + + @Override + public void visitNewExpression(PsiNewExpression expression) { + PsiJavaCodeReferenceElement reference = expression.getClassOrAnonymousClassReference(); + if (reference != null) { + validate(reference, expression.resolveMethod(), h); + } } @Override @@ -80,12 +88,12 @@ public class TestOnlyInspection extends AbstractBaseJavaLocalInspectionTool { }; } - private static void validate(@NotNull PsiElement reference, @Nullable PsiMember member, ProblemsHolder h) { + private static void validate(@NotNull PsiElement place, @Nullable PsiMember member, ProblemsHolder h) { if (member == null || !isAnnotatedAsTestOnly(member)) return; - if (isInsideTestOnlyMethod(reference)) return; - if (isInsideTestOnlyField(reference)) return; - if (isInsideTestClass(reference)) return; - if (isUnderTestSources(reference)) return; + if (isInsideTestOnlyMethod(place)) return; + if (isInsideTestOnlyField(place)) return; + if (isInsideTestClass(place)) return; + if (isUnderTestSources(place)) return; PsiAnnotation anno = findVisibleForTestingAnnotation(member); if (anno != null) { @@ -95,12 +103,12 @@ public class TestOnlyInspection extends AbstractBaseJavaLocalInspectionTool { } LightModifierList modList = new LightModifierList(member.getManager(), JavaLanguage.INSTANCE, modifier); - if (JavaResolveUtil.isAccessible(member, member.getContainingClass(), modList, reference, null, null)) { + if (JavaResolveUtil.isAccessible(member, member.getContainingClass(), modList, place, null, null)) { return; } } - reportProblem(reference, member, h); + reportProblem(place, member, h); } private static final List ourModifiersDescending =