IDEA-77607 Introduce refactoring looses annotation

This commit is contained in:
anna
2012-01-15 17:39:29 +01:00
parent 05192ef0f4
commit 90bdbd8764
4 changed files with 23 additions and 3 deletions

View File

@@ -139,7 +139,6 @@ public abstract class LocalToFieldHandler {
PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory(); PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
try { try {
PsiField field = factory.createFieldFromText(pattern.toString(), null); PsiField field = factory.createFieldFromText(pattern.toString(), null);
field = (PsiField)CodeStyleManager.getInstance(project).reformat(field);
field.getTypeElement().replace(factory.createTypeElement(forcedType)); field.getTypeElement().replace(factory.createTypeElement(forcedType));
if (includeInitializer) { if (includeInitializer) {
@@ -148,6 +147,9 @@ public abstract class LocalToFieldHandler {
field.getInitializer().replace(initializer); field.getInitializer().replace(initializer);
} }
for (PsiAnnotation annotation : local.getModifierList().getAnnotations()) {
field.getModifierList().add(annotation.copy());
}
return field; return field;
} }
catch (IncorrectOperationException e) { catch (IncorrectOperationException e) {

View File

@@ -0,0 +1,5 @@
class Test {
void foo() {
@Deprecated String foo;
}
}

View File

@@ -0,0 +1,5 @@
class Test {
void foo() {
@Deprecated String f<caret>o = "";
}
}

View File

@@ -1,14 +1,15 @@
package com.intellij.refactoring; package com.intellij.refactoring;
import com.intellij.JavaTestUtil; import com.intellij.JavaTestUtil;
import com.intellij.openapi.projectRoots.Sdk; import com.intellij.idea.Bombed;
import com.intellij.openapi.projectRoots.impl.JavaSdkImpl;
import com.intellij.psi.PsiPrimitiveType; import com.intellij.psi.PsiPrimitiveType;
import com.intellij.psi.PsiType; import com.intellij.psi.PsiType;
import com.intellij.refactoring.introduceField.BaseExpressionToFieldHandler; import com.intellij.refactoring.introduceField.BaseExpressionToFieldHandler;
import com.intellij.refactoring.util.CommonRefactoringUtil; import com.intellij.refactoring.util.CommonRefactoringUtil;
import com.intellij.testFramework.LightCodeInsightTestCase; import com.intellij.testFramework.LightCodeInsightTestCase;
import java.util.Calendar;
/** /**
* @author ven * @author ven
*/ */
@@ -105,4 +106,11 @@ public class IntroduceFieldInSameClassTest extends LightCodeInsightTestCase {
performRefactoring(BaseExpressionToFieldHandler.InitializationPlace.IN_CONSTRUCTOR, false); performRefactoring(BaseExpressionToFieldHandler.InitializationPlace.IN_CONSTRUCTOR, false);
checkResultByFile("/refactoring/introduceField/afterEnclosingAnonymous.java"); 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");
}
} }