diff --git a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java index 183523f02d30..911b946bdfa5 100644 --- a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodDialog.java @@ -17,8 +17,8 @@ package com.intellij.refactoring.convertToInstanceMethod; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.help.HelpManager; -import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiParameter; import com.intellij.refactoring.HelpID; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.move.moveInstanceMethod.MoveInstanceMethodDialogBase; @@ -34,16 +34,16 @@ import java.awt.event.MouseEvent; */ public class ConvertToInstanceMethodDialog extends MoveInstanceMethodDialogBase { private static final Logger LOG = Logger.getInstance("#com.intellij.refactoring.convertToInstanceMethod.ConvertToInstanceMethodDialog"); - public ConvertToInstanceMethodDialog(final PsiMethod method, final PsiElement[] variables) { + public ConvertToInstanceMethodDialog(final PsiMethod method, final Object[] variables) { super(method, variables, ConvertToInstanceMethodHandler.REFACTORING_NAME); init(); } protected void doAction() { - final PsiElement targetVariable = (PsiElement)myList.getSelectedValue(); + final Object targetVariable = myList.getSelectedValue(); LOG.assertTrue(targetVariable != null); final ConvertToInstanceMethodProcessor processor = new ConvertToInstanceMethodProcessor(myMethod.getProject(), - myMethod, targetVariable, + myMethod, targetVariable instanceof PsiParameter ? (PsiParameter)targetVariable : null, myVisibilityPanel.getVisibility()); if (!verifyTargetClass(processor.getTargetClass())) return; invokeRefactoring(processor); diff --git a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodHandler.java b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodHandler.java index 4a4fd9e8bc06..9d045fcd3c17 100644 --- a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodHandler.java @@ -26,6 +26,7 @@ import com.intellij.refactoring.HelpID; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.RefactoringBundle; import com.intellij.refactoring.util.CommonRefactoringUtil; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import java.util.ArrayList; @@ -70,7 +71,7 @@ public class ConvertToInstanceMethodHandler implements RefactoringActionHandler return; } final PsiParameter[] parameters = method.getParameterList().getParameters(); - List targetQualifiers = new ArrayList<>(); + List targetQualifiers = new ArrayList<>(); for (final PsiParameter parameter : parameters) { final PsiType type = parameter.getType(); if (type instanceof PsiClassType) { @@ -89,11 +90,9 @@ public class ConvertToInstanceMethodHandler implements RefactoringActionHandler boolean noArgConstructor = constructors.length == 0 || Arrays.stream(constructors).anyMatch(constructor -> constructor.getParameterList().getParametersCount() == 0); if (noArgConstructor) { - targetQualifiers.add(JavaPsiFacade.getElementFactory(project).createExpressionFromText("new " + className + "()", method)); + targetQualifiers.add("this / new " + className + "()"); } - new ConvertToInstanceMethodDialog( - method, - targetQualifiers.toArray(new PsiElement[targetQualifiers.size()])).show(); + new ConvertToInstanceMethodDialog(method, ArrayUtil.toObjectArray(targetQualifiers)).show(); } } diff --git a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java index fa286c9a0dd9..f84e740e4f43 100644 --- a/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/convertToInstanceMethod/ConvertToInstanceMethodProcessor.java @@ -65,11 +65,11 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor { public ConvertToInstanceMethodProcessor(final Project project, final PsiMethod method, - final PsiElement targetParameter, + @Nullable final PsiParameter targetParameter, final String newVisibility) { super(project); myMethod = method; - myTargetParameter = targetParameter instanceof PsiParameter ? (PsiParameter)targetParameter : null; + myTargetParameter = targetParameter; LOG.assertTrue(method.hasModifierProperty(PsiModifier.STATIC)); if (myTargetParameter != null) { LOG.assertTrue(myTargetParameter.getDeclarationScope() == myMethod); diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java index 6e4ef1cd41da..915362ccc749 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialog.java @@ -106,7 +106,7 @@ public class MoveInstanceMethodDialog extends MoveInstanceMethodDialogBase { textField.setEnabled(true); } - final PsiElement variable = myVariables[selectedIndex]; + final Object variable = myVariables[selectedIndex]; if (variable instanceof PsiField) { final PsiField field = (PsiField)variable; final PsiClass hisClass = field.getContainingClass(); diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java index 7bc4df8e6c25..44ba5aded37e 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveInstanceMethod/MoveInstanceMethodDialogBase.java @@ -18,7 +18,10 @@ package com.intellij.refactoring.move.moveInstanceMethod; import com.intellij.lang.findUsages.DescriptiveNameUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; -import com.intellij.psi.*; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiMethod; +import com.intellij.psi.PsiSubstitutor; +import com.intellij.psi.PsiVariable; import com.intellij.psi.search.searches.ClassInheritorsSearch; import com.intellij.psi.util.PsiFormatUtil; import com.intellij.psi.util.PsiUtil; @@ -39,7 +42,7 @@ import java.awt.*; */ public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase { protected final PsiMethod myMethod; - protected final PsiElement[] myVariables; + protected final Object[] myVariables; public JComponent getPreferredFocusedComponent() { return myList; @@ -49,7 +52,7 @@ public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase { protected JavaVisibilityPanel myVisibilityPanel; protected final String myRefactoringName; - public MoveInstanceMethodDialogBase(PsiMethod method, PsiElement[] variables, String refactoringName) { + public MoveInstanceMethodDialogBase(PsiMethod method, Object[] variables, String refactoringName) { super(method.getProject(), true); myMethod = method; myVariables = variables; @@ -147,8 +150,8 @@ public abstract class MoveInstanceMethodDialogBase extends MoveDialogBase { setIcon(psiVariable.getIcon(0)); setText(text); } - else if (value instanceof PsiExpression) { - setText(((PsiExpression)value).getText()); + else if (value instanceof String) { + setText((String)value); } return this; }