remove redundant casts when extract changed parameter type accordingly (IDEA-79743)
[idea/community.git] / java / java-impl / src / com / intellij / refactoring / extractMethod / ExtractMethodProcessor.java
index a9c46f8bb322e622f8568b57a63be9ee2d638da4..f1a0966c1dc6d0b8f840dafc7a4a681524579352 100644 (file)
@@ -758,6 +758,23 @@ public class ExtractMethodProcessor implements MatchProvider {
 
     adjustFinalParameters(newMethod);
 
+    for (int i = 0, length = myVariableDatum.length; i < length; i++) {
+      ParameterTablePanel.VariableData data = myVariableDatum[i];
+      final PsiVariable variable = data.variable;
+      final PsiParameter psiParameter = newMethod.getParameterList().getParameters()[i];
+      if (!TypeConversionUtil.isAssignable(variable.getType(), psiParameter.getType())) {
+        for (PsiReference reference : ReferencesSearch.search(psiParameter, new LocalSearchScope(body))){
+          final PsiElement element = reference.getElement();
+          if (element != null) {
+            final PsiElement parent = element.getParent();
+            if (parent instanceof PsiTypeCastExpression) {
+              RedundantCastUtil.removeCast((PsiTypeCastExpression)parent);
+            }
+          }
+        }
+      }
+    }
+
     myExtractedMethod = (PsiMethod)myTargetClass.addAfter(newMethod, myAnchor);
     if (isNeedToChangeCallContext() && myNeedChangeContext) {
       ChangeContextUtil.decodeContextInfo(myExtractedMethod, myTargetClass, RefactoringUtil.createThisExpression(myManager, null));