From 90276fd30c2fc56008312110092a09fed170b4b4 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 13 Jul 2017 14:05:34 +0200 Subject: [PATCH] disable "move initializer to" fixes on malformed fields --- .../intention/impl/BaseMoveInitializerToMethodAction.java | 3 ++- .../beforeMalformedInitializer.java | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/moveInitializerToConstructor/beforeMalformedInitializer.java diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java index 17aa29ccbaf5..c110808481bd 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/BaseMoveInitializerToMethodAction.java @@ -48,7 +48,8 @@ public abstract class BaseMoveInitializerToMethodAction extends PsiElementBaseIn if (element instanceof PsiCompiledElement) return false; final PsiField field = PsiTreeUtil.getParentOfType(element, PsiField.class, false, PsiMember.class, PsiCodeBlock.class, PsiDocComment.class); if (field == null || hasUnsuitableModifiers(field)) return false; - if (!field.hasInitializer()) return false; + PsiExpression initializer = field.getInitializer(); + if (initializer == null || initializer.getNextSibling() instanceof PsiErrorElement) return false; PsiClass psiClass = field.getContainingClass(); return psiClass != null && !psiClass.isInterface() && !(psiClass instanceof PsiAnonymousClass) && !(psiClass instanceof PsiSyntheticClass); diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/moveInitializerToConstructor/beforeMalformedInitializer.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/moveInitializerToConstructor/beforeMalformedInitializer.java new file mode 100644 index 000000000000..596a76ed13d7 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/moveInitializerToConstructor/beforeMalformedInitializer.java @@ -0,0 +1,8 @@ +// "Move initializer to constructor" "false" +public class X { + int i=new (); + + X() { + + } +}