diff --git a/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java b/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java index 562bb3ec0ac1..2836d5bb6d50 100644 --- a/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/introduceField/LocalToFieldHandler.java @@ -139,7 +139,6 @@ public abstract class LocalToFieldHandler { PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory(); try { PsiField field = factory.createFieldFromText(pattern.toString(), null); - field = (PsiField)CodeStyleManager.getInstance(project).reformat(field); field.getTypeElement().replace(factory.createTypeElement(forcedType)); if (includeInitializer) { @@ -148,6 +147,9 @@ public abstract class LocalToFieldHandler { field.getInitializer().replace(initializer); } + for (PsiAnnotation annotation : local.getModifierList().getAnnotations()) { + field.getModifierList().add(annotation.copy()); + } return field; } catch (IncorrectOperationException e) { diff --git a/java/java-tests/testData/refactoring/introduceField/afterLocalVarAnnotations.java b/java/java-tests/testData/refactoring/introduceField/afterLocalVarAnnotations.java new file mode 100644 index 000000000000..3ede0846a511 --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceField/afterLocalVarAnnotations.java @@ -0,0 +1,5 @@ +class Test { + void foo() { + @Deprecated String foo; + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/introduceField/beforeLocalVarAnnotations.java b/java/java-tests/testData/refactoring/introduceField/beforeLocalVarAnnotations.java new file mode 100644 index 000000000000..01dad3b5423a --- /dev/null +++ b/java/java-tests/testData/refactoring/introduceField/beforeLocalVarAnnotations.java @@ -0,0 +1,5 @@ +class Test { + void foo() { + @Deprecated String fo = ""; + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFieldInSameClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFieldInSameClassTest.java index a31fd3d3e030..5159ab459f28 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFieldInSameClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/IntroduceFieldInSameClassTest.java @@ -1,14 +1,15 @@ package com.intellij.refactoring; import com.intellij.JavaTestUtil; -import com.intellij.openapi.projectRoots.Sdk; -import com.intellij.openapi.projectRoots.impl.JavaSdkImpl; +import com.intellij.idea.Bombed; import com.intellij.psi.PsiPrimitiveType; import com.intellij.psi.PsiType; import com.intellij.refactoring.introduceField.BaseExpressionToFieldHandler; import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.testFramework.LightCodeInsightTestCase; +import java.util.Calendar; + /** * @author ven */ @@ -105,4 +106,11 @@ public class IntroduceFieldInSameClassTest extends LightCodeInsightTestCase { performRefactoring(BaseExpressionToFieldHandler.InitializationPlace.IN_CONSTRUCTOR, false); checkResultByFile("/refactoring/introduceField/afterEnclosingAnonymous.java"); } + + @Bombed(month = Calendar.JANUARY, day = 17) + public void testLocalVarAnnotations() throws Exception { + configureByFile("/refactoring/introduceField/beforeLocalVarAnnotations.java"); + performRefactoring(BaseExpressionToFieldHandler.InitializationPlace.IN_CONSTRUCTOR, false); + checkResultByFile("/refactoring/introduceField/afterLocalVarAnnotations.java"); + } } \ No newline at end of file