ReuseVariableDeclarationFix: support array initializers

GitOrigin-RevId: 2b384594722e9e8b92792336b9e39a1479e5e8d4
This commit is contained in:
Tagir Valeev
2020-06-17 12:15:25 +07:00
committed by intellij-monorepo-bot
parent 568a40ae1c
commit 615388d9cb
3 changed files with 22 additions and 1 deletions

View File

@@ -28,6 +28,7 @@ import com.intellij.psi.scope.util.PsiScopesUtil;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.util.PsiUtil;
import com.intellij.util.IncorrectOperationException;
import com.siyeh.ig.psiutils.ExpressionUtils;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -80,7 +81,9 @@ public class ReuseVariableDeclarationFix implements IntentionAction {
PsiUtil.setModifierProperty(refVariable, PsiModifier.FINAL, false);
final PsiElementFactory factory = JavaPsiFacade.getElementFactory(myVariable.getProject());
final PsiElement statement = factory.createStatementFromText(myVariable.getName() + " = " + initializer.getText() + ";", null);
final PsiElement statement = factory.createStatementFromText(
myVariable.getName() + " = " +
ExpressionUtils.convertInitializerToExpression(initializer, factory, myVariable.getType()).getText() + ";", null);
myVariable.getParent().replace(statement);
}

View File

@@ -0,0 +1,9 @@
// "Reuse previous variable 'i' declaration" "true"
import java.io.*;
class a {
void f(int[] i) {
i = new int[]{};
}
}

View File

@@ -0,0 +1,9 @@
// "Reuse previous variable 'i' declaration" "true"
import java.io.*;
class a {
void f(int[] i) {
int[] <caret>i = {};
}
}