diff --git a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageFix.java b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageFix.java index f435a4269718..18c2e0b1c6b4 100644 --- a/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageFix.java +++ b/java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateFieldFromUsageFix.java @@ -78,24 +78,22 @@ public class CreateFieldFromUsageFix extends CreateVarFromUsageFix { PsiUtil.setModifierProperty(field, PsiModifier.FINAL, true); } + if (createConstantField()) { + PsiUtil.setModifierProperty(field, PsiModifier.STATIC, true); + PsiUtil.setModifierProperty(field, PsiModifier.FINAL, true); + } else { + if (!targetClass.isInterface() && shouldCreateStaticMember(myReferenceExpression, targetClass)) { + PsiUtil.setModifierProperty(field, PsiModifier.STATIC, true); + } + if (shouldCreateFinalMember(myReferenceExpression, targetClass)) { + PsiUtil.setModifierProperty(field, PsiModifier.FINAL, true); + } + } field = CreateFieldFromUsageHelper.insertField(targetClass, field, myReferenceExpression); setupVisibility(parentClass, targetClass, field.getModifierList()); - if (!targetClass.isInterface() && shouldCreateStaticMember(myReferenceExpression, targetClass)) { - PsiUtil.setModifierProperty(field, PsiModifier.STATIC, true); - } - - if (shouldCreateFinalMember(myReferenceExpression, targetClass)) { - PsiUtil.setModifierProperty(field, PsiModifier.FINAL, true); - } - - if (createConstantField()) { - PsiUtil.setModifierProperty(field, PsiModifier.STATIC, true); - PsiUtil.setModifierProperty(field, PsiModifier.FINAL, true); - } - final Editor newEditor = positionCursor(project, targetFile, field); if (newEditor == null) return; Template template = diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/afterDependantConstant.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/afterDependantConstant.java new file mode 100644 index 000000000000..335e2591a9e2 --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/afterDependantConstant.java @@ -0,0 +1,5 @@ +// "Create Constant Field 'SOME_REGEXP'" "true" +class IntroduceConstant { + private static final String SOME_REGEXP = ; + private static final String SOME_PATTERN = SOME_REGEXP; +} \ No newline at end of file diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/beforeDependantConstant.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/beforeDependantConstant.java new file mode 100644 index 000000000000..1889aaade33b --- /dev/null +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/createFieldFromUsage/beforeDependantConstant.java @@ -0,0 +1,4 @@ +// "Create Constant Field 'SOME_REGEXP'" "true" +class IntroduceConstant { + private static final String SOME_PATTERN = SOME_REGEXP; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateFieldFromUsageTest.java b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateFieldFromUsageTest.java index 038f5a3bbcc7..c5122fe6df5f 100644 --- a/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateFieldFromUsageTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInsight/daemon/quickFix/CreateFieldFromUsageTest.java @@ -48,6 +48,10 @@ public class CreateFieldFromUsageTest extends LightQuickFixTestCase{ doSingleTest(); } + public void testDependantConstant() throws Exception { + doSingleTest(); + } + protected void doSingleTest() { doSingleTest(getTestName(false) + ".java"); }