in legacy/java/piranha/src/main/java/com/uber/piranha/XPFlagCleaner.java [1360:1394]
public Description matchConditionalExpression(
ConditionalExpressionTree tree, VisitorState state) {
if (shouldSkip(state)) return Description.NO_MATCH;
if (overLaps(tree, state)) {
return Description.NO_MATCH;
}
ExpressionTree et = tree.getCondition();
Value x = evalExpr(et, state);
String replacementString = EMPTY;
boolean update = false;
ExpressionTree removedBranch = null;
if (x.equals(Value.TRUE)) {
update = true;
replacementString = state.getSourceForNode(tree.getTrueExpression());
removedBranch = tree.getFalseExpression();
} else if (x.equals(Value.FALSE)) {
update = true;
replacementString = state.getSourceForNode(tree.getFalseExpression());
removedBranch = tree.getTrueExpression();
}
if (update) {
Preconditions.checkNotNull(removedBranch, "update => removedBranch != null here.");
Description.Builder builder = buildDescription(tree);
SuggestedFix.Builder fixBuilder = SuggestedFix.builder();
fixBuilder.replace(tree, stripBraces(replacementString));
decrementAllSymbolUsages(et, state, fixBuilder);
decrementAllSymbolUsages(removedBranch, state, fixBuilder);
builder.addFix(fixBuilder.build());
endPos = state.getEndPosition(tree);
return builder.build();
}
return Description.NO_MATCH;
}