diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java
index 2ac602d69d54..4e7d44f40af0 100644
--- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java
+++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DataFlowInspectionBase.java
@@ -140,7 +140,7 @@ public class DataFlowInspectionBase extends BaseJavaBatchLocalInspectionTool {
if (scope == null) return;
PsiClass containingClass = PsiTreeUtil.getParentOfType(scope, PsiClass.class);
- if (containingClass != null && PsiUtil.isLocalOrAnonymousClass(containingClass)) return;
+ if (containingClass != null && PsiUtil.isLocalOrAnonymousClass(containingClass) && !(containingClass instanceof PsiEnumConstantInitializer)) return;
final StandardDataFlowRunner dfaRunner = new StandardDataFlowRunner(TREAT_UNKNOWN_MEMBERS_AS_NULLABLE, !isInsideConstructorOrInitializer(
scope)) {
diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/CustomDefaultInEnums.java b/java/java-tests/testData/inspection/dataFlow/fixture/CustomDefaultInEnums.java
new file mode 100644
index 000000000000..2c9bbfc80592
--- /dev/null
+++ b/java/java-tests/testData/inspection/dataFlow/fixture/CustomDefaultInEnums.java
@@ -0,0 +1,37 @@
+package foo;
+
+import javax.annotation.*;
+
+enum TestNonnull {
+ TEST {
+ @Nonnull
+ @Override
+ public Object testWithAnnotation(@Nonnull Object aObject) {
+ if (aObject == null) {
+ return new Object();
+ }
+ return null;
+ }
+
+ @Override
+ public Object testWithoutAnnotation(Object aObject) {
+ return null;
+ }
+ };
+
+ public boolean testParameter(TestNonnull aTest) {
+ if (aTest == null) {
+ return true;
+ }
+ return false;
+ }
+
+ public Object testReturn() {
+ return null;
+ }
+
+ @Nonnull
+ public abstract Object testWithAnnotation(@Nonnull Object aObject);
+
+ public abstract Object testWithoutAnnotation(Object aObject);
+}
\ No newline at end of file
diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java
index 3e8b46f428a4..e5b714799fc3 100644
--- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java
+++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java
@@ -336,6 +336,21 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase {
myFixture.testHighlighting(true, false, true, getTestName(false) + ".java");
}
+ public void testCustomDefaultInEnums() {
+ DataFlowInspectionTest.addJavaxNullabilityAnnotations(myFixture);
+ myFixture.addClass("package foo;" +
+ "import static java.lang.annotation.ElementType.*;" +
+ "@javax.annotation.meta.TypeQualifierDefault({PARAMETER, FIELD, METHOD, LOCAL_VARIABLE}) " +
+ "@javax.annotation.Nonnull " +
+ "public @interface NonnullByDefault {}");
+
+ myFixture.addFileToProject("foo/package-info.java", "@NonnullByDefault package foo;");
+
+ myFixture.configureFromExistingVirtualFile(myFixture.copyFileToProject(getTestName(false) + ".java", "foo/Classes.java"));
+ myFixture.enableInspections(new DataFlowInspection());
+ myFixture.checkHighlighting(true, false, true);
+ }
+
public void testTrueOrEqualsSomething() {
doTest();
myFixture.launchAction(myFixture.findSingleIntention("Remove redundant assignment"));