mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
normalize array initializer in surround with try catch (IDEA-128218)
This commit is contained in:
@@ -28,6 +28,7 @@ import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTypesUtil;
|
||||
import com.intellij.psi.util.PsiUtilBase;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -59,7 +60,7 @@ public class SurroundWithUtil {
|
||||
PsiExpressionStatement assignment = (PsiExpressionStatement)factory.createStatementFromText(name + "=x;", null);
|
||||
assignment = (PsiExpressionStatement)CodeStyleManager.getInstance(psiManager.getProject()).reformat(assignment);
|
||||
PsiAssignmentExpression expr = (PsiAssignmentExpression)assignment.getExpression();
|
||||
expr.getRExpression().replace(initializer);
|
||||
expr.getRExpression().replace(RefactoringUtil.convertInitializerToNormalExpression(initializer, var.getType()));
|
||||
assignment = (PsiExpressionStatement)block.addAfter(assignment, declaration);
|
||||
array.add(assignment);
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleManager;
|
||||
import com.intellij.psi.javadoc.PsiDocComment;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -119,12 +120,7 @@ public class SplitDeclarationAction extends PsiElementBaseIntentionAction {
|
||||
statement = (PsiExpressionStatement)CodeStyleManager.getInstance(project).reformat(statement);
|
||||
PsiAssignmentExpression assignment = (PsiAssignmentExpression)statement.getExpression();
|
||||
PsiExpression initializer = var.getInitializer();
|
||||
PsiExpression rExpression = initializer;
|
||||
if (initializer instanceof PsiArrayInitializerExpression && var.getType() instanceof PsiArrayType) {
|
||||
rExpression = JavaPsiFacade.getInstance(psiManager.getProject()).getElementFactory().createExpressionFromText(
|
||||
"new " + var.getTypeElement().getText() + " " + initializer.getText(), null
|
||||
);
|
||||
}
|
||||
PsiExpression rExpression = RefactoringUtil.convertInitializerToNormalExpression(initializer, var.getType());
|
||||
|
||||
assignment.getRExpression().replace(rExpression);
|
||||
initializer.delete();
|
||||
|
||||
@@ -677,7 +677,7 @@ public class RefactoringUtil {
|
||||
|
||||
public static PsiExpression convertInitializerToNormalExpression(PsiExpression expression, PsiType forcedReturnType)
|
||||
throws IncorrectOperationException {
|
||||
if (expression instanceof PsiArrayInitializerExpression) {
|
||||
if (expression instanceof PsiArrayInitializerExpression && (forcedReturnType == null || forcedReturnType instanceof PsiArrayType)) {
|
||||
return createNewExpressionFromArrayInitializer((PsiArrayInitializerExpression)expression, forcedReturnType);
|
||||
}
|
||||
return expression;
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
// "Surround with try/catch" "true"
|
||||
public class ExTest {
|
||||
public static String maybeThrow(String data) throws Ex {
|
||||
throw new Ex(data);
|
||||
}
|
||||
|
||||
{
|
||||
String[] a = new String[0];
|
||||
try {
|
||||
a = new String[]{maybeThrow("")};
|
||||
} catch (Ex ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
System.out.println(a);
|
||||
}
|
||||
|
||||
|
||||
private static class Ex extends Exception {
|
||||
public Ex(String s) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
// "Surround with try/catch" "true"
|
||||
public class ExTest {
|
||||
public static String maybeThrow(String data) throws Ex {
|
||||
throw new Ex(data);
|
||||
}
|
||||
|
||||
{
|
||||
String[] a = {mayb<caret>eThrow("")};
|
||||
System.out.println(a);
|
||||
}
|
||||
|
||||
|
||||
private static class Ex extends Exception {
|
||||
public Ex(String s) {
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user