From ec9a61b8bd974d4286b8f0add37475dd8196cd81 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 19 May 2014 21:44:39 +0400 Subject: [PATCH] extract method: redundant cast treatments (IDEA-125259) --- .../extractMethod/ExtractMethodProcessor.java | 18 ++++++++++-------- .../Cast4ParamGeneration_after.java | 2 +- .../CastWhenDuplicateReplacement_after.java | 2 +- .../extractMethod/InvalidReference_after.java | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java index 701d6bf49970..a9fe12d19126 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethod/ExtractMethodProcessor.java @@ -800,15 +800,17 @@ public class ExtractMethodProcessor implements MatchProvider { int i = 0; for (VariableData data : myVariableDatum) { if (!data.passAsParameter) continue; - 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); + final PsiType paramType = 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) { + final PsiTypeCastExpression typeCastExpression = (PsiTypeCastExpression)parent; + final PsiTypeElement castType = typeCastExpression.getCastType(); + if (castType != null && Comparing.equal(castType.getType(), paramType)) { + RedundantCastUtil.removeCast(typeCastExpression); } } } diff --git a/java/java-tests/testData/refactoring/extractMethod/Cast4ParamGeneration_after.java b/java/java-tests/testData/refactoring/extractMethod/Cast4ParamGeneration_after.java index 4f8e97977995..3c55402357eb 100644 --- a/java/java-tests/testData/refactoring/extractMethod/Cast4ParamGeneration_after.java +++ b/java/java-tests/testData/refactoring/extractMethod/Cast4ParamGeneration_after.java @@ -6,7 +6,7 @@ public class Test { } private void newMethod(A o) { - ((A)o).bar(); + o.bar(); } } diff --git a/java/java-tests/testData/refactoring/extractMethod/CastWhenDuplicateReplacement_after.java b/java/java-tests/testData/refactoring/extractMethod/CastWhenDuplicateReplacement_after.java index e0a14ee47dde..106ec29fb405 100644 --- a/java/java-tests/testData/refactoring/extractMethod/CastWhenDuplicateReplacement_after.java +++ b/java/java-tests/testData/refactoring/extractMethod/CastWhenDuplicateReplacement_after.java @@ -6,6 +6,6 @@ class Test { } private String newMethod(String x) { - return ((String)x).substring(1); + return x.substring(1); } } \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethod/InvalidReference_after.java b/java/java-tests/testData/refactoring/extractMethod/InvalidReference_after.java index ad34b03d549f..99c0c39f210c 100644 --- a/java/java-tests/testData/refactoring/extractMethod/InvalidReference_after.java +++ b/java/java-tests/testData/refactoring/extractMethod/InvalidReference_after.java @@ -6,6 +6,6 @@ class Test { } private PsiPackage newMethod(IOException targetElement) { - return JavaDirectoryService.getInstance().getPackage((IOException)targetElement); + return JavaDirectoryService.getInstance().getPackage(targetElement); } } \ No newline at end of file