From f3dcb0fd01ff1014526a436db6e7cf13acdfb9d8 Mon Sep 17 00:00:00 2001 From: Pavel Dolgov Date: Mon, 21 Aug 2017 13:10:11 +0300 Subject: [PATCH] Java: Minor refactoring of quick fix for DuplicatesInspection (IDEA-144957) --- .../extractMethod/InputVariables.java | 4 +- ...Parameter.java => ExtractedParameter.java} | 38 +++++++++---------- .../refactoring/util/duplicates/Match.java | 8 ++-- 3 files changed, 23 insertions(+), 27 deletions(-) rename java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/{AdditionalParameter.java => ExtractedParameter.java} (82%) diff --git a/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/InputVariables.java b/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/InputVariables.java index 5a937a9ac39a..018f7f9f0e1d 100644 --- a/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/InputVariables.java +++ b/java/java-analysis-impl/src/com/intellij/refactoring/extractMethod/InputVariables.java @@ -343,9 +343,9 @@ public class InputVariables { } } - public void foldAdditionalParameter(@NotNull PsiVariable additionalParameter, @NotNull PsiExpression value) { + public void foldExtractedParameter(@NotNull PsiVariable extractedParameter, @NotNull PsiExpression value) { myFoldingAvailable = true; - myFolding.putCallArgument(additionalParameter, value); + myFolding.putCallArgument(extractedParameter, value); } public boolean isFoldingSelectedByDefault() { diff --git a/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/AdditionalParameter.java b/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/ExtractedParameter.java similarity index 82% rename from java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/AdditionalParameter.java rename to java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/ExtractedParameter.java index 21788d5602c4..ece56e4c2f81 100644 --- a/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/AdditionalParameter.java +++ b/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/ExtractedParameter.java @@ -32,28 +32,26 @@ import java.util.Set; /** * @author Pavel.Dolgov */ -public class AdditionalParameter { +public class ExtractedParameter { @NotNull public final List myPatternUsages = new ArrayList<>(); @NotNull public final PsiVariable myPatternVariable; - @NotNull public final List myCandidateUsages = new ArrayList<>(); + @NotNull public final PsiReferenceExpression myCandidateUsage; @NotNull public final PsiVariable myCandidateVariable; @NotNull public final PsiType myType; - AdditionalParameter(@NotNull PsiVariable patternVariable, - @NotNull PsiVariable candidateVariable, - @NotNull PsiType type) { + ExtractedParameter(@NotNull PsiVariable patternVariable, + @NotNull PsiReferenceExpression patternUsage, + @NotNull PsiVariable candidateVariable, + @NotNull PsiReferenceExpression candidateUsage, + @NotNull PsiType type) { myPatternVariable = patternVariable; + myPatternUsages.add(patternUsage); myCandidateVariable = candidateVariable; + myCandidateUsage = candidateUsage; myType = type; } - void addUsage(@NotNull PsiReferenceExpression patternUsage, - @NotNull PsiReferenceExpression candidateUsage) { - myPatternUsages.add(patternUsage); - myCandidateUsages.add(candidateUsage); - } - - public static boolean match(PsiElement pattern, PsiElement candidate, @NotNull List additionalParameters) { + public static boolean match(PsiElement pattern, PsiElement candidate, @NotNull List parameters) { if (pattern instanceof PsiReferenceExpression && candidate instanceof PsiReferenceExpression) { PsiReferenceExpression patternUsage = (PsiReferenceExpression)pattern; PsiReferenceExpression candidateUsage = (PsiReferenceExpression)candidate; @@ -64,11 +62,11 @@ public class AdditionalParameter { PsiVariable candidateVariable = (PsiVariable)resolvedCandidate; if (isStaticOrLocal(patternVariable) && isStaticOrLocal(candidateVariable)) { - for (AdditionalParameter additionalParameter : additionalParameters) { - boolean samePattern = resolvedPattern.equals(additionalParameter.myPatternVariable); - boolean sameCandidate = resolvedCandidate.equals(additionalParameter.myCandidateVariable); + for (ExtractedParameter parameter : parameters) { + boolean samePattern = resolvedPattern.equals(parameter.myPatternVariable); + boolean sameCandidate = resolvedCandidate.equals(parameter.myCandidateVariable); if (samePattern && sameCandidate) { - additionalParameter.addUsage(patternUsage, candidateUsage); + parameter.myPatternUsages.add(patternUsage); return true; } if (samePattern || sameCandidate) { @@ -77,9 +75,7 @@ public class AdditionalParameter { } PsiType type = getParameterType(patternVariable, candidateVariable); if (type != null) { - AdditionalParameter additionalParameter = new AdditionalParameter(patternVariable, candidateVariable, type); - additionalParameters.add(additionalParameter); - additionalParameter.addUsage(patternUsage, candidateUsage); + parameters.add(new ExtractedParameter(patternVariable, patternUsage, candidateVariable, candidateUsage, type)); return true; } } @@ -93,7 +89,7 @@ public class AdditionalParameter { Set patternVariables = null; List result = new ArrayList<>(); for (Match match : matches) { - List parameters = match.getAdditionalParameters(); + List parameters = match.getExtractedParameters(); if (patternVariables == null) { patternVariables = getPatternVariables(parameters); if (containsModifiedField(pattern, patternVariables)) { @@ -127,7 +123,7 @@ public class AdditionalParameter { } @NotNull - static Set getPatternVariables(@Nullable List parameters) { + static Set getPatternVariables(@Nullable List parameters) { if (parameters != null) { return ContainerUtil.map2Set(parameters, parameter -> parameter.myPatternVariable); } diff --git a/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/Match.java b/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/Match.java index 1eafb0ddd2dd..803aadf2c8f5 100644 --- a/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/Match.java +++ b/java/java-analysis-impl/src/com/intellij/refactoring/util/duplicates/Match.java @@ -55,7 +55,7 @@ public final class Match { private Ref myInstanceExpression; final Map myChangedParams = new HashMap<>(); private final boolean myIgnoreParameterTypes; - private final List myAdditionalParameters = new ArrayList<>(); + private final List myExtractedParameters = new ArrayList<>(); Match(PsiElement start, PsiElement end, boolean ignoreParameterTypes) { LOG.assertTrue(start.getParent() == end.getParent()); @@ -425,10 +425,10 @@ public final class Match { } public boolean putAdditionalParameter(@NotNull PsiElement pattern, @NotNull PsiElement candidate) { - return AdditionalParameter.match(pattern, candidate, myAdditionalParameters); + return ExtractedParameter.match(pattern, candidate, myExtractedParameters); } - public List getAdditionalParameters() { - return myAdditionalParameters; + public List getExtractedParameters() { + return myExtractedParameters; } }