WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit 2961d1f

Browse files
markhbradyError Prone Team
authored andcommitted
[IfChainToSwitch] refactor flow of suggested fixes; no functional change
PiperOrigin-RevId: 846305637
1 parent 51c9462 commit 2961d1f

File tree

1 file changed

+11
-17
lines changed

1 file changed

+11
-17
lines changed

core/src/main/java/com/google/errorprone/bugpatterns/IfChainToSwitch.java

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -165,16 +165,14 @@ private Description analyzeIfTree(IfTree ifTree, VisitorState state) {
165165
}
166166
}
167167

168-
List<SuggestedFix> suggestedFixes = new ArrayList<>();
169-
if (ifChainAnalysisState.validity().equals(Validity.VALID)
168+
if (!ifChainAnalysisState.validity().equals(Validity.VALID)
170169
// Exclude short if-chains, since they may be more readable as-is
171-
&& ifChainAnalysisState.depth() >= 3) {
172-
173-
suggestedFixes =
174-
deepAnalysisOfIfChain(
175-
cases, ifChainAnalysisState, ifTree, state, ifTreeSourceRange, suggestedFixes);
170+
|| ifChainAnalysisState.depth() < 3) {
171+
return NO_MATCH;
176172
}
177173

174+
List<SuggestedFix> suggestedFixes =
175+
deepAnalysisOfIfChain(cases, ifChainAnalysisState, ifTree, state, ifTreeSourceRange);
178176
return suggestedFixes.isEmpty()
179177
? NO_MATCH
180178
: buildDescription(ifTree).addAllFixes(suggestedFixes).build();
@@ -1290,8 +1288,7 @@ private static List<SuggestedFix> deepAnalysisOfIfChain(
12901288
IfChainAnalysisState finalIfChainAnalysisState,
12911289
IfTree ifTree,
12921290
VisitorState state,
1293-
Range<Integer> ifTreeSourceRange,
1294-
List<SuggestedFix> suggestedFixes) {
1291+
Range<Integer> ifTreeSourceRange) {
12951292

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

1362-
return maybeBuildAndAddSuggestedFix(
1359+
List<SuggestedFix> suggestedFixes = new ArrayList<>();
1360+
maybeBuildAndAddSuggestedFix(
13631361
fixedCasesOptional,
13641362
pullupDisabled ? suggestedFixBuilderWithoutPullup : suggestedFixBuilderWithPullupEnabled,
13651363
finalIfChainAnalysisState,
13661364
ifTree,
13671365
state,
13681366
ifTreeSourceRange,
13691367
suggestedFixes);
1368+
return suggestedFixes;
13701369
}
13711370

13721371
/**
13731372
* If a finding is available, build a {@code SuggestedFix} for it and add to the suggested fixes.
13741373
*/
1375-
private static List<SuggestedFix> maybeBuildAndAddSuggestedFix(
1374+
private static void maybeBuildAndAddSuggestedFix(
13761375
Optional<List<CaseIr>> fixedCasesOptional,
13771376
SuggestedFix.Builder suggestedFixBuilder,
13781377
IfChainAnalysisState ifChainAnalysisState,
@@ -1398,13 +1397,8 @@ private static List<SuggestedFix> maybeBuildAndAddSuggestedFix(
13981397
ifTreeSourceRange,
13991398
allComments));
14001399

1401-
// Defensive copy
1402-
List<SuggestedFix> suggestedFixesCopy = new ArrayList<>(suggestedFixes);
1403-
suggestedFixesCopy.add(suggestedFixBuilder.build());
1404-
suggestedFixes = suggestedFixesCopy;
1400+
suggestedFixes.add(suggestedFixBuilder.build());
14051401
}
1406-
1407-
return suggestedFixes;
14081402
}
14091403

14101404
/**

0 commit comments

Comments
 (0)