create constant from usage: set static/final before insert field in order to get correct anchor (IDEA-100867)

This commit is contained in:
anna
2013-02-14 21:15:36 +01:00
parent 2794f2c106
commit 3de6d80c2e
4 changed files with 24 additions and 13 deletions
@@ -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 =
@@ -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;
}
@@ -0,0 +1,4 @@
// "Create Constant Field 'SOME_REGEXP'" "true"
class IntroduceConstant {
private static final String SOME_PATTERN = SOME_RE<caret>GEXP;
}
@@ -48,6 +48,10 @@ public class CreateFieldFromUsageTest extends LightQuickFixTestCase{
doSingleTest();
}
public void testDependantConstant() throws Exception {
doSingleTest();
}
protected void doSingleTest() {
doSingleTest(getTestName(false) + ".java");
}