diff --git a/java/java-impl/src/com/intellij/refactoring/util/occurrences/BaseOccurrenceManager.java b/java/java-impl/src/com/intellij/refactoring/util/occurrences/BaseOccurrenceManager.java index 2b68d91112ce..ca5c18c38aa5 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/occurrences/BaseOccurrenceManager.java +++ b/java/java-impl/src/com/intellij/refactoring/util/occurrences/BaseOccurrenceManager.java @@ -81,7 +81,7 @@ public abstract class BaseOccurrenceManager implements OccurrenceManager { @Override public PsiElement getAnchorStatementForAllInScope(PsiElement scope) { PsiElement anchor = RefactoringUtil.getAnchorElementForMultipleExpressions(myOccurrences, scope); - return anchor instanceof PsiField && !(anchor instanceof PsiEnumConstant) ? ((PsiField)anchor).getInitializer() : anchor; + return anchor instanceof PsiField && ((PsiField)anchor).hasInitializer() && !(anchor instanceof PsiEnumConstant) ? ((PsiField)anchor).getInitializer() : anchor; } private static boolean needToDeclareFinal(PsiExpression[] occurrences) { diff --git a/java/java-tests/testData/refactoring/introduceConstant/ConstantFromAnnotationOnFieldWithoutInitializer.java b/java/java-tests/testData/refactoring/introduceConstant/ConstantFromAnnotationOnFieldWithoutInitializer.java new file mode 100644 index 000000000000..a2cc195d27d6 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceConstant/ConstantFromAnnotationOnFieldWithoutInitializer.java @@ -0,0 +1,5 @@ +class Test { + @SuppressWarnings("unused") + String myField; + String myField1 = "unused"; +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceConstant/ConstantFromAnnotationOnFieldWithoutInitializer_after.java b/java/java-tests/testData/refactoring/introduceConstant/ConstantFromAnnotationOnFieldWithoutInitializer_after.java new file mode 100644 index 000000000000..dc52b87e4ec4 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceConstant/ConstantFromAnnotationOnFieldWithoutInitializer_after.java @@ -0,0 +1,6 @@ +class Test { + public static final String xxx = "unused"; + @SuppressWarnings(xxx) + String myField; + String myField1 = xxx; +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceConstantTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceConstantTest.java index 9ca5b4788aff..d6be4ed97106 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceConstantTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/IntroduceConstantTest.java @@ -180,6 +180,10 @@ public class IntroduceConstantTest extends LightJavaCodeInsightTestCase { doTestExpr(); } + public void testConstantFromAnnotationOnFieldWithoutInitializer() { + doTestExpr(); + } + public void testEscalateVisibility() { configureByFile(BASE_PATH + getTestName(false) + ".java"); final PsiClass[] classes = ((PsiJavaFile)getFile()).getClasses();