allow change signature propagation to the containing method (IDEA-201205)

This commit is contained in:
Anna Kozlova
2018-10-29 12:49:19 +01:00
parent 0c7e980d62
commit a6fc7fb32e
5 changed files with 29 additions and 3 deletions
@@ -281,7 +281,7 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr
}
}
final PsiMethod caller = RefactoringUtil.getEnclosingMethod(ref);
final PsiMethod caller = PsiTreeUtil.getParentOfType(ref, PsiMethod.class);
if (toChangeArguments) {
final PsiExpressionList list = RefactoringUtil.getArgumentListByMethodReference(ref);
LOG.assertTrue(list != null);
@@ -654,7 +654,7 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr
if (methodCallUsageInfo.isToChangeArguments()){
final PsiElement element = methodCallUsageInfo.getElement();
if (element == null) continue;
final PsiMethod caller = RefactoringUtil.getEnclosingMethod(element);
final PsiMethod caller = PsiTreeUtil.getParentOfType(element, PsiMethod.class);
final boolean needDefaultValue = needDefaultValue(changeInfo, caller);
if (needDefaultValue && (caller == null || !MethodSignatureUtil.isSuperMethod(methodCallUsageInfo.getReferencedMethod(), caller))) {
final ParameterInfo[] parameters = changeInfo.getNewParameters();
@@ -0,0 +1,11 @@
class ChangeSignatureTest {
private static void level1() {
Runnable runnable = () -> level2();
Runnable runnable1 = () -> { level2();};
level2();
}
private static void le<caret>vel2() {
}
}
@@ -0,0 +1,11 @@
class ChangeSignatureTest {
private static void level1(Class clazz) {
Runnable runnable = () -> level2(clazz);
Runnable runnable1 = () -> { level2(clazz);};
level2(clazz);
}
private static void level2(Class clazz) {
}
}
@@ -48,6 +48,10 @@ public class ChangeSignaturePropagationTest extends LightRefactoringTestCase {
parameterPropagationTest();
}
public void testParamWithLambda() {
parameterPropagationTest();
}
public void testParamTypeSubst() {
final PsiMethod method = getPrimaryMethod();
final HashSet<PsiMethod> methods = new HashSet<>();
@@ -129,7 +129,7 @@ public class GrChangeSignatureUsageProcessor implements ChangeSignatureUsageProc
if (methodCallUsageInfo.isToChangeArguments()){
final PsiElement element = methodCallUsageInfo.getElement();
if (element == null) continue;
final PsiMethod caller = RefactoringUtil.getEnclosingMethod(element);
final PsiMethod caller = PsiTreeUtil.getParentOfType(element, PsiMethod.class);
final boolean needDefaultValue = !((JavaChangeInfo)changeInfo).getMethodsToPropagateParameters().contains(caller);
final PsiMethod referencedMethod = methodCallUsageInfo.getReferencedMethod();
if (needDefaultValue &&