From 2961d1f54f042c3f1b2568f7a16634c7f87bdee7 Mon Sep 17 00:00:00 2001 From: markbrady Date: Thu, 18 Dec 2025 09:38:01 -0800 Subject: [PATCH] [IfChainToSwitch] refactor flow of suggested fixes; no functional change PiperOrigin-RevId: 846305637 --- .../bugpatterns/IfChainToSwitch.java | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/core/src/main/java/com/google/errorprone/bugpatterns/IfChainToSwitch.java b/core/src/main/java/com/google/errorprone/bugpatterns/IfChainToSwitch.java index 3ba805bff28..be40384d69f 100644 --- a/core/src/main/java/com/google/errorprone/bugpatterns/IfChainToSwitch.java +++ b/core/src/main/java/com/google/errorprone/bugpatterns/IfChainToSwitch.java @@ -165,16 +165,14 @@ private Description analyzeIfTree(IfTree ifTree, VisitorState state) { } } - List 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 suggestedFixes = + deepAnalysisOfIfChain(cases, ifChainAnalysisState, ifTree, state, ifTreeSourceRange); return suggestedFixes.isEmpty() ? NO_MATCH : buildDescription(ifTree).addAllFixes(suggestedFixes).build(); @@ -1290,8 +1288,7 @@ private static List deepAnalysisOfIfChain( IfChainAnalysisState finalIfChainAnalysisState, IfTree ifTree, VisitorState state, - Range ifTreeSourceRange, - List suggestedFixes) { + Range ifTreeSourceRange) { // Wrapping break/yield in a switch can potentially change its semantics. A deeper analysis of // whether semantics are preserved is not attempted here @@ -1359,7 +1356,8 @@ private static List deepAnalysisOfIfChain( ifTreeSourceRange)); } - return maybeBuildAndAddSuggestedFix( + List suggestedFixes = new ArrayList<>(); + maybeBuildAndAddSuggestedFix( fixedCasesOptional, pullupDisabled ? suggestedFixBuilderWithoutPullup : suggestedFixBuilderWithPullupEnabled, finalIfChainAnalysisState, @@ -1367,12 +1365,13 @@ private static List deepAnalysisOfIfChain( 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 maybeBuildAndAddSuggestedFix( + private static void maybeBuildAndAddSuggestedFix( Optional> fixedCasesOptional, SuggestedFix.Builder suggestedFixBuilder, IfChainAnalysisState ifChainAnalysisState, @@ -1398,13 +1397,8 @@ private static List maybeBuildAndAddSuggestedFix( ifTreeSourceRange, allComments)); - // Defensive copy - List suggestedFixesCopy = new ArrayList<>(suggestedFixes); - suggestedFixesCopy.add(suggestedFixBuilder.build()); - suggestedFixes = suggestedFixesCopy; + suggestedFixes.add(suggestedFixBuilder.build()); } - - return suggestedFixes; } /**