introduce parameter: fix {} array initializer (IDEA-91467)

This commit is contained in:
Anna Kozlova
2012-09-13 15:16:43 +04:00
parent bf72ed90b9
commit 50745b4e9f
5 changed files with 29 additions and 3 deletions
@@ -346,8 +346,10 @@ public class IntroduceParameterProcessor extends BaseRefactoringProcessor implem
LOG.assertTrue(myLocalVariable != null);
myParameterInitializer = factory.createExpressionFromText(myLocalVariable.getName(), myLocalVariable);
}
else {
myParameterInitializer = RefactoringUtil.convertInitializerToNormalExpression(myParameterInitializer, initializerType);
else if (myParameterInitializer instanceof PsiArrayInitializerExpression){
final PsiExpression newExprArrayInitializer =
RefactoringUtil.createNewExpressionFromArrayInitializer((PsiArrayInitializerExpression)myParameterInitializer, initializerType);
myParameterInitializer = (PsiExpression)myParameterInitializer.replace(newExprArrayInitializer);
}
myInitializerWrapper = new JavaExpressionWrapper(myParameterInitializer);
@@ -773,7 +773,7 @@ public class RefactoringUtil {
return expression;
}
private static PsiExpression createNewExpressionFromArrayInitializer(PsiArrayInitializerExpression initializer, PsiType forcedType)
public static PsiExpression createNewExpressionFromArrayInitializer(PsiArrayInitializerExpression initializer, PsiType forcedType)
throws IncorrectOperationException {
PsiType initializerType = null;
if (initializer != null) {
@@ -0,0 +1,10 @@
class Test {
public synchronized boolean foo(String msg) {
return bar(new String[]{message});
}
private boolean bar(String[] anObject) {
String[] params = anObject;
return false;
}
}
@@ -0,0 +1,10 @@
class Test {
public synchronized boolean foo(String msg) {
return bar(message);
}
private boolean bar(String parameter) {
String[] params = <selection>{parameter}</selection>;
return false;
}
}
@@ -249,6 +249,10 @@ public class IntroduceParameterTest extends LightRefactoringTestCase {
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_INACCESSIBLE, false, false, false, false);
}
public void testArrayInitializer() throws Exception {
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_INACCESSIBLE, true, false, false, false);
}
public void testIncompleteEnumDefinition() throws Exception {
doTest(IntroduceParameterRefactoring.REPLACE_FIELDS_WITH_GETTERS_NONE, true, false, false, false, "Incomplete call(Root()): 2 parameters expected but only 0 found\n" +
"Incomplete call(Root()): expected to delete the 1 parameter but only 0 parameters found");