diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiEnumConstantImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiEnumConstantImpl.java index 47b3d271e948..7dd1ba92b01e 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiEnumConstantImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiEnumConstantImpl.java @@ -194,14 +194,7 @@ public class PsiEnumConstantImpl extends JavaStubPsiElement implem @Override public boolean isDeprecated() { - final PsiFieldStub stub = getGreenStub(); - if (stub != null) { - return stub.isDeprecated(); - } - - PsiDocComment docComment = getDocComment(); - return docComment != null && docComment.findTagByName("deprecated") != null || - getModifierList().findAnnotation("java.lang.Deprecated") != null; + return PsiFieldImpl.isFieldDeprecated(this, getGreenStub()); } @Override diff --git a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiFieldImpl.java b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiFieldImpl.java index 64d346f7aeff..8f9e15f9b36a 100644 --- a/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiFieldImpl.java +++ b/java/java-psi-impl/src/com/intellij/psi/impl/source/PsiFieldImpl.java @@ -299,12 +299,15 @@ public class PsiFieldImpl extends JavaStubPsiElement implements Ps @Override public boolean isDeprecated() { - final PsiFieldStub stub = getGreenStub(); + return isFieldDeprecated(this, getGreenStub()); + } + + static boolean isFieldDeprecated(@NotNull PsiField field, @Nullable PsiFieldStub stub) { if (stub != null) { - return stub.isDeprecated() || stub.hasDeprecatedAnnotation() && PsiImplUtil.isDeprecatedByAnnotation(this); + return stub.isDeprecated() || stub.hasDeprecatedAnnotation() && PsiImplUtil.isDeprecatedByAnnotation(field); } - return PsiImplUtil.isDeprecatedByDocTag(this) || PsiImplUtil.isDeprecatedByAnnotation(this); + return PsiImplUtil.isDeprecatedByDocTag(field) || PsiImplUtil.isDeprecatedByAnnotation(field); } @Override diff --git a/java/java-tests/testSrc/com/intellij/psi/JavaStubsTest.groovy b/java/java-tests/testSrc/com/intellij/psi/JavaStubsTest.groovy index c802cb8f79e6..f2878e438275 100644 --- a/java/java-tests/testSrc/com/intellij/psi/JavaStubsTest.groovy +++ b/java/java-tests/testSrc/com/intellij/psi/JavaStubsTest.groovy @@ -159,4 +159,15 @@ import java.lang.annotation.*; assert list.parametersCount == list.parameters.size() } + void "test deprecated enum constant"() { + def cls = myFixture.addClass("enum Foo { c1, @Deprecated c2, /** @deprecated */ c3 }") + assert !((PsiFileImpl) cls.containingFile).contentsLoaded + + assert !cls.fields[0].deprecated + assert cls.fields[1].deprecated + assert cls.fields[2].deprecated + + assert !((PsiFileImpl) cls.containingFile).contentsLoaded + } + } \ No newline at end of file