From fdb5a1025dfddb41e6bbfcf0bbef55ba332cbe97 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Wed, 14 Oct 2020 12:15:25 +0700 Subject: [PATCH] [java-inspections] CodeBlockSurrounder: disable in enum initializers We could devise something like ((Runnable)() -> {...}).run() but this kind of code looks too ugly. Fixes IDEA-252688 Assertion error when applying fix to assert not null in enums GitOrigin-RevId: 6f2122acb60cfcb074cc47e6bc599626fe5547fd --- .../quickFix/addAssert/beforeInEnumInitializer.java | 6 ++++++ .../src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addAssert/beforeInEnumInitializer.java diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addAssert/beforeInEnumInitializer.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addAssert/beforeInEnumInitializer.java new file mode 100644 index 000000000000..ef9242c3f50a --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/addAssert/beforeInEnumInitializer.java @@ -0,0 +1,6 @@ +// "Assert 'field != null'" "false" +enum A { + I(field.hashCode()); + private static Object field; + A(int i) {} +} \ No newline at end of file diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java index 1febed2c3319..6ff9182be24d 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/CodeBlockSurrounder.java @@ -249,7 +249,7 @@ public abstract class CodeBlockSurrounder { } return null; } - if (parent instanceof PsiField) { + if (parent instanceof PsiField && !(parent instanceof PsiEnumConstant)) { return new ExtractFieldInitializerSurrounder(expression, (PsiField)parent); }