make method static: fix delegate parameter place (IDEA-146900)

This commit is contained in:
Anna Kozlova
2015-10-27 19:35:18 +01:00
parent 583b5af087
commit 40db0beb8d
4 changed files with 41 additions and 8 deletions
@@ -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() {