mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 21:55:01 +07:00
make method static: fix delegate parameter place (IDEA-146900)
This commit is contained in:
+12
-6
@@ -25,7 +25,10 @@ import com.intellij.psi.javadoc.PsiDocTag;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.changeSignature.*;
|
||||
import com.intellij.refactoring.changeSignature.JavaChangeInfoImpl;
|
||||
import com.intellij.refactoring.changeSignature.JavaChangeSignatureUsageProcessor;
|
||||
import com.intellij.refactoring.changeSignature.ParameterInfoImpl;
|
||||
import com.intellij.refactoring.changeSignature.ThrownExceptionInfo;
|
||||
import com.intellij.refactoring.changeSignature.inCallers.JavaCallerChooser;
|
||||
import com.intellij.refactoring.util.CanonicalTypes;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
@@ -37,7 +40,10 @@ import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* @author dsl
|
||||
@@ -139,10 +145,6 @@ public class MakeMethodStaticProcessor extends MakeMethodOrClassStaticProcessor<
|
||||
List<ParameterInfoImpl> params = new ArrayList<ParameterInfoImpl>();
|
||||
PsiParameter[] parameters = myMember.getParameterList().getParameters();
|
||||
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
params.add(new ParameterInfoImpl(i));
|
||||
}
|
||||
|
||||
if (mySettings.isMakeClassParameter()) {
|
||||
params.add(new ParameterInfoImpl(-1, mySettings.getClassParameterName(),
|
||||
factory.createType(containingClass, PsiSubstitutor.EMPTY), "this"));
|
||||
@@ -154,6 +156,10 @@ public class MakeMethodStaticProcessor extends MakeMethodOrClassStaticProcessor<
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < parameters.length; i++) {
|
||||
params.add(new ParameterInfoImpl(i));
|
||||
}
|
||||
|
||||
final PsiType returnType = myMember.getReturnType();
|
||||
LOG.assertTrue(returnType != null);
|
||||
JavaChangeSignatureUsageProcessor.generateDelegate(new JavaChangeInfoImpl(VisibilityUtil.getVisibilityModifier(myMember.getModifierList()),
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
public class Test {
|
||||
int i;
|
||||
|
||||
public void foo(int j) {
|
||||
foo(this, j);
|
||||
}
|
||||
|
||||
public static void foo(Test anObject, int j) {
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
public class Test {
|
||||
int i;
|
||||
public void <caret>foo(int j) {
|
||||
}
|
||||
}
|
||||
@@ -211,13 +211,21 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testDelegatePlace() throws Exception {
|
||||
doTest(true, true);
|
||||
}
|
||||
|
||||
private void doTest() throws Exception {
|
||||
doTest(false);
|
||||
}
|
||||
|
||||
private void doTest(final boolean addClassParameter) throws Exception {
|
||||
doTest(addClassParameter, false);
|
||||
}
|
||||
|
||||
private void doTest(final boolean addClassParameter, boolean delegate) throws Exception {
|
||||
configureByFile("/refactoring/makeMethodStatic/before" + getTestName(false) + ".java");
|
||||
perform(addClassParameter);
|
||||
perform(addClassParameter, delegate);
|
||||
checkResultByFile("/refactoring/makeMethodStatic/after" + getTestName(false) + ".java");
|
||||
}
|
||||
|
||||
@@ -230,6 +238,10 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase {
|
||||
|
||||
|
||||
private static void perform(boolean addClassParameter) {
|
||||
perform(addClassParameter, false);
|
||||
}
|
||||
|
||||
private static void perform(boolean addClassParameter, boolean delegate) {
|
||||
PsiElement element = TargetElementUtil.findTargetElement(myEditor, TargetElementUtil.ELEMENT_NAME_ACCEPTED);
|
||||
assertTrue(element instanceof PsiMethod);
|
||||
PsiMethod method = (PsiMethod) element;
|
||||
@@ -237,7 +249,7 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase {
|
||||
new MakeMethodStaticProcessor(
|
||||
getProject(),
|
||||
method,
|
||||
new Settings(true, addClassParameter ? "anObject" : null, null)).run();
|
||||
new Settings(true, addClassParameter ? "anObject" : null, null, delegate)).run();
|
||||
}
|
||||
|
||||
private static void performWithFields() {
|
||||
|
||||
Reference in New Issue
Block a user