inplace introduce constant: restore expression from literal (IDEA-106893)

This commit is contained in:
anna
2013-05-08 18:35:11 +02:00
parent 1b33b6b621
commit 178aaf4a9a
4 changed files with 35 additions and 1 deletions
@@ -162,7 +162,15 @@ public abstract class AbstractJavaInplaceIntroducer extends AbstractInplaceIntro
return null;
}
}
return expression != null && expression.isValid() && expression.getText().equals(exprText) ? expression : null;
if (expression != null && expression.isValid() && expression.getText().equals(exprText)) {
return expression;
}
if (refVariableElementParent instanceof PsiExpression && refVariableElementParent.getText().equals(exprText)) {
return (PsiExpression)refVariableElementParent;
}
return null;
}
public static Expression createExpression(final TypeExpression expression, final String defaultType) {
@@ -0,0 +1,6 @@
class B {
public static void foo(boolean f) {
Object[] objs = new Object[0];
System.out.println(objs[<caret>9] != null ? Integer.valueOf(objs[9].toString()) : null);
}
}
@@ -0,0 +1,9 @@
class B {
public static final int NINE = 9;
public static void foo(boolean f) {
Object[] objs = new Object[0];
System.out.println(objs[NINE] != null ? Integer.valueOf(objs[NINE].toString()) : null);
}
}
@@ -65,6 +65,17 @@ public class InplaceIntroduceConstantTest extends AbstractJavaInplaceIntroduceTe
});
}
public void testReplaceAllFromLiteral() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {
@Override
public void pass(AbstractInplaceIntroducer inplaceIntroduceFieldPopup) {
type("NINE");
inplaceIntroduceFieldPopup.setReplaceAllOccurrences(true);
}
});
}
public void testConflictingConstantName() throws Exception {
doTest(new Pass<AbstractInplaceIntroducer>() {