| Code with Finding: |
class UnfoldCompoundAssignments {
/**
* Unfolds a compound assignment node {@code lhs op= rhs} to {@code lhs = lhs
* op rhs}.
*
* @param node a compound assignment node
*/
private void unfoldCompoundAssignment(Node node) {
Node lhs = node.getFirstChild();
Preconditions.checkArgument(!NodeUtil.mayHaveSideEffects(lhs),
"Cannot unfold compound assignment if LHS can have side effects");
Node newRhs = node.cloneTree();
newRhs.setType(NodeUtil.getOpFromAssignmentOp(node));
node.replaceChildAfter(lhs, newRhs);
node.setType(Token.ASSIGN);
compiler.reportCodeChange();
}
}
|