mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: Minor refactoring of quick fix for DuplicatesInspection (IDEA-144957)
This commit is contained in:
+2
-2
@@ -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() {
|
||||
|
||||
+17
-21
@@ -32,28 +32,26 @@ import java.util.Set;
|
||||
/**
|
||||
* @author Pavel.Dolgov
|
||||
*/
|
||||
public class AdditionalParameter {
|
||||
public class ExtractedParameter {
|
||||
@NotNull public final List<PsiReferenceExpression> myPatternUsages = new ArrayList<>();
|
||||
@NotNull public final PsiVariable myPatternVariable;
|
||||
@NotNull public final List<PsiReferenceExpression> 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<AdditionalParameter> additionalParameters) {
|
||||
public static boolean match(PsiElement pattern, PsiElement candidate, @NotNull List<ExtractedParameter> 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<PsiVariable> patternVariables = null;
|
||||
List<Match> result = new ArrayList<>();
|
||||
for (Match match : matches) {
|
||||
List<AdditionalParameter> parameters = match.getAdditionalParameters();
|
||||
List<ExtractedParameter> parameters = match.getExtractedParameters();
|
||||
if (patternVariables == null) {
|
||||
patternVariables = getPatternVariables(parameters);
|
||||
if (containsModifiedField(pattern, patternVariables)) {
|
||||
@@ -127,7 +123,7 @@ public class AdditionalParameter {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static Set<PsiVariable> getPatternVariables(@Nullable List<AdditionalParameter> parameters) {
|
||||
static Set<PsiVariable> getPatternVariables(@Nullable List<ExtractedParameter> parameters) {
|
||||
if (parameters != null) {
|
||||
return ContainerUtil.map2Set(parameters, parameter -> parameter.myPatternVariable);
|
||||
}
|
||||
@@ -55,7 +55,7 @@ public final class Match {
|
||||
private Ref<PsiExpression> myInstanceExpression;
|
||||
final Map<PsiVariable, PsiType> myChangedParams = new HashMap<>();
|
||||
private final boolean myIgnoreParameterTypes;
|
||||
private final List<AdditionalParameter> myAdditionalParameters = new ArrayList<>();
|
||||
private final List<ExtractedParameter> 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<AdditionalParameter> getAdditionalParameters() {
|
||||
return myAdditionalParameters;
|
||||
public List<ExtractedParameter> getExtractedParameters() {
|
||||
return myExtractedParameters;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user