From eac22bca216623d68aaeee8d52e81550714a1012 Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 6 Jun 2016 16:45:31 +0200 Subject: [PATCH] avoid invoking augmenters inside hasModifierProperty (IDEA-157105) --- .../com/intellij/psi/impl/source/PsiModifierListImpl.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiModifierListImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiModifierListImpl.java index bd6a6e26538a..9e67d8932827 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiModifierListImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiModifierListImpl.java @@ -136,7 +136,9 @@ public class PsiModifierListImpl extends JavaStubPsiElement if (!(grandParent instanceof PsiFile)) { implicitModifiers.add(STATIC); } - boolean hasSubClass = ContainerUtil.find(((PsiClass)parent).getFields(), new Condition() { + List fields = parent instanceof PsiExtensibleClass ? ((PsiExtensibleClass)parent).getOwnFields() + : Arrays.asList(((PsiClass)parent).getFields()); + boolean hasSubClass = ContainerUtil.find(fields, new Condition() { @Override public boolean value(PsiField field) { return field instanceof PsiEnumConstant && ((PsiEnumConstant)field).getInitializingClass() != null; @@ -146,7 +148,9 @@ public class PsiModifierListImpl extends JavaStubPsiElement implicitModifiers.add(FINAL); } - for (PsiMethod method : ((PsiClass)parent).getMethods()) { + List methods = parent instanceof PsiExtensibleClass ? ((PsiExtensibleClass)parent).getOwnMethods() + : Arrays.asList(((PsiClass)parent).getMethods()); + for (PsiMethod method : methods) { if (method.hasModifierProperty(ABSTRACT)) { implicitModifiers.add(ABSTRACT); break;