Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -165,16 +165,14 @@ private Description analyzeIfTree(IfTree ifTree, VisitorState state) {
}
}

List<SuggestedFix> suggestedFixes = new ArrayList<>();
if (ifChainAnalysisState.validity().equals(Validity.VALID)
if (!ifChainAnalysisState.validity().equals(Validity.VALID)
// Exclude short if-chains, since they may be more readable as-is
&& ifChainAnalysisState.depth() >= 3) {

suggestedFixes =
deepAnalysisOfIfChain(
cases, ifChainAnalysisState, ifTree, state, ifTreeSourceRange, suggestedFixes);
|| ifChainAnalysisState.depth() < 3) {
return NO_MATCH;
}

List<SuggestedFix> suggestedFixes =
deepAnalysisOfIfChain(cases, ifChainAnalysisState, ifTree, state, ifTreeSourceRange);
return suggestedFixes.isEmpty()
? NO_MATCH
: buildDescription(ifTree).addAllFixes(suggestedFixes).build();
Expand Down Expand Up @@ -1290,8 +1288,7 @@ private static List<SuggestedFix> deepAnalysisOfIfChain(
IfChainAnalysisState finalIfChainAnalysisState,
IfTree ifTree,
VisitorState state,
Range<Integer> ifTreeSourceRange,
List<SuggestedFix> suggestedFixes) {
Range<Integer> ifTreeSourceRange) {

// Wrapping break/yield in a switch can potentially change its semantics. A deeper analysis of
// whether semantics are preserved is not attempted here
Expand Down Expand Up @@ -1359,20 +1356,22 @@ private static List<SuggestedFix> deepAnalysisOfIfChain(
ifTreeSourceRange));
}

return maybeBuildAndAddSuggestedFix(
List<SuggestedFix> suggestedFixes = new ArrayList<>();
maybeBuildAndAddSuggestedFix(
fixedCasesOptional,
pullupDisabled ? suggestedFixBuilderWithoutPullup : suggestedFixBuilderWithPullupEnabled,
finalIfChainAnalysisState,
ifTree,
state,
ifTreeSourceRange,
suggestedFixes);
return suggestedFixes;
}

/**
* If a finding is available, build a {@code SuggestedFix} for it and add to the suggested fixes.
*/
private static List<SuggestedFix> maybeBuildAndAddSuggestedFix(
private static void maybeBuildAndAddSuggestedFix(
Optional<List<CaseIr>> fixedCasesOptional,
SuggestedFix.Builder suggestedFixBuilder,
IfChainAnalysisState ifChainAnalysisState,
Expand All @@ -1398,13 +1397,8 @@ private static List<SuggestedFix> maybeBuildAndAddSuggestedFix(
ifTreeSourceRange,
allComments));

// Defensive copy
List<SuggestedFix> suggestedFixesCopy = new ArrayList<>(suggestedFixes);
suggestedFixesCopy.add(suggestedFixBuilder.build());
suggestedFixes = suggestedFixesCopy;
suggestedFixes.add(suggestedFixBuilder.build());
}

return suggestedFixes;
}

/**
Expand Down
Loading