diff --git a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java index 0ff0c3b2c349..f98d4739be75 100644 --- a/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/changeSignature/JavaChangeSignatureUsageProcessor.java @@ -18,6 +18,7 @@ package com.intellij.refactoring.changeSignature; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.ExceptionUtil; import com.intellij.codeInsight.daemon.impl.analysis.JavaHighlightUtil; +import com.intellij.codeInsight.daemon.impl.quickfix.RemoveUnusedVariableUtil; import com.intellij.codeInspection.dataFlow.ControlFlowAnalyzer; import com.intellij.lang.StdLanguages; import com.intellij.lang.java.JavaLanguage; @@ -1034,6 +1035,22 @@ public class JavaChangeSignatureUsageProcessor implements ChangeSignatureUsagePr else if (element instanceof PsiMethodReferenceExpression && MethodReferenceUsageInfo.needToExpand(myChangeInfo)) { conflictDescriptions.putValue(element, RefactoringBundle.message("expand.method.reference.warning")); } + else if (element instanceof PsiJavaCodeReferenceElement) { + final PsiElement parent = element.getParent(); + if (parent instanceof PsiCallExpression) { + final PsiExpressionList argumentList = ((PsiCallExpression)parent).getArgumentList(); + if (argumentList != null) { + final PsiExpression[] args = argumentList.getExpressions(); + for (int i = 0; i < toRemove.length; i++) { + if (toRemove[i] && i < args.length) { + if (RemoveUnusedVariableUtil.checkSideEffects(args[i], null, new ArrayList<>())) { + conflictDescriptions.putValue(args[i], "Parameter '" + myChangeInfo.getOldParameterNames()[i] + "' has usage that is not safe to delete"); + } + } + } + } + } + } } return conflictDescriptions; diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java index d846f6ba27df..c3e690487d91 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ChangeSignatureTest.java @@ -248,7 +248,13 @@ public class ChangeSignatureTest extends ChangeSignatureBaseTest { } public void testRemoveVarargParameter() { - doTest(null, null, null, new ParameterInfoImpl[]{new ParameterInfoImpl(0)}, new ThrownExceptionInfo[0], false); + try { + BaseRefactoringProcessor.ConflictsInTestsException.setTestIgnore(true); + doTest(null, null, null, new ParameterInfoImpl[]{new ParameterInfoImpl(0)}, new ThrownExceptionInfo[0], false); + } + finally { + BaseRefactoringProcessor.ConflictsInTestsException.setTestIgnore(false); + } } public void testEnumConstructor() {