From c99d0a99afc1904ef33c5214ca51ef2059e520eb Mon Sep 17 00:00:00 2001 From: "Roman.Ivanov" Date: Wed, 23 May 2018 16:25:12 +0700 Subject: [PATCH] ChangeUIDAction: make it work without initializer --- .../codeInsight/intention/impl/ChangeUIDAction.java | 9 ++++++--- .../daemonCodeAnalyzer/quickFix/changeUid/afterNew.java | 9 +++++++++ .../daemonCodeAnalyzer/quickFix/changeUid/beforeNew.java | 9 +++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/afterNew.java create mode 100644 java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/beforeNew.java diff --git a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ChangeUIDAction.java b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ChangeUIDAction.java index d2d4cb0ed80b..6e6275ba4ac1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/intention/impl/ChangeUIDAction.java +++ b/java/java-impl/src/com/intellij/codeInsight/intention/impl/ChangeUIDAction.java @@ -37,13 +37,16 @@ public class ChangeUIDAction extends PsiElementBaseIntentionAction { public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { PsiField field = PsiTreeUtil.getParentOfType(element, PsiField.class); if (field == null) return; - PsiExpression initializer = field.getInitializer(); - if (initializer == null) return; PsiElementFactory factory = JavaPsiFacade.getElementFactory(project); Application application = ApplicationManager.getApplication(); Random random = application.isUnitTestMode() ? new Random(42) : new SecureRandom(); PsiExpression newInitializer = factory.createExpressionFromText(Long.toString(random.nextLong()) + "L", null); - new CommentTracker().replaceAndRestoreComments(initializer, newInitializer); + PsiExpression initializer = field.getInitializer(); + if (initializer != null) { + new CommentTracker().replaceAndRestoreComments(initializer, newInitializer); + } else { + field.setInitializer(newInitializer); + } } @Override diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/afterNew.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/afterNew.java new file mode 100644 index 000000000000..e4fa74a868f9 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/afterNew.java @@ -0,0 +1,9 @@ +// "Randomly change 'serialVersionUID' initializer" "true" + +import java.util.function.BinaryOperator; +import java.util.function.Function; +import java.util.function.UnaryOperator; + +public class Main { + static final long serialVersionUID = -5025562857975149833L; +} diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/beforeNew.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/beforeNew.java new file mode 100644 index 000000000000..771848059641 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/changeUid/beforeNew.java @@ -0,0 +1,9 @@ +// "Randomly change 'serialVersionUID' initializer" "true" + +import java.util.function.BinaryOperator; +import java.util.function.Function; +import java.util.function.UnaryOperator; + +public class Main { + static final long serialVersionUID; +}