diff --git a/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java b/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java index 745b9bae07c5..1f2d47996384 100644 --- a/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java +++ b/java/java-psi-api/src/com/intellij/psi/util/PsiClassUtil.java @@ -33,7 +33,11 @@ public class PsiClassUtil { public static boolean isRunnableClass(final PsiClass aClass, final boolean mustBePublic, boolean mustNotBeAbstract) { if (aClass instanceof PsiAnonymousClass) return false; if (aClass.isInterface()) return false; - if (mustBePublic && !aClass.hasModifierProperty(PsiModifier.PUBLIC)) return false; + if (mustBePublic && !aClass.hasModifierProperty(PsiModifier.PUBLIC)) { + if (mustNotBeAbstract || !aClass.hasModifierProperty(PsiModifier.ABSTRACT)) { + return false; + } + } if (aClass.hasModifierProperty(PsiModifier.PRIVATE)) return false; if (mustNotBeAbstract && aClass.hasModifierProperty(PsiModifier.ABSTRACT)) return false; return aClass.getContainingClass() == null || aClass.hasModifierProperty(PsiModifier.STATIC);