@Override public String visitCompoundAssignment(CompoundAssignmentTree node, Void v) { StringBuilder out = new StringBuilder(); ExpressionTree variable = node.getVariable(); ExpressionTree expression = node.getExpression(); JCTree.Tag operator = ((JCTree.JCAssignOp) node).getTag(); out.append(variable.accept(this, v)); out.append(" ").append(operatorName(operator)).append(" "); out.append(expression.accept(this, v)); return out.toString(); }
@Override public String visitCompoundAssignment( CompoundAssignmentTree node, Object v ) { StringBuilder out = new StringBuilder(); appendComment( node, out ); ExpressionTree variable = node.getVariable(); ExpressionTree expression = node.getExpression(); JCTree.Tag operator = ((JCTree.JCAssignOp)node).getTag(); out.append( variable.accept( this, v ) ); out.append( " " ).append( operatorName( operator ) ).append( " " ); out.append( expression.accept( this, v ) ); return out.toString(); }
protected int diffAssignop(JCAssignOp oldT, JCAssignOp newT, int[] bounds) { int localPointer = bounds[0]; // lhs int[] lhsBounds = getBounds(oldT.lhs); copyTo(localPointer, lhsBounds[0]); localPointer = diffTree(oldT.lhs, newT.lhs, lhsBounds); if (oldT.getTag() != newT.getTag()) { // todo (#pf): operatorName() does not work copyTo(localPointer, oldT.pos); printer.print(getAssignementOperator(newT)); localPointer = oldT.pos + getAssignementOperator(oldT).length(); } // rhs int[] rhsBounds = getBounds(oldT.rhs); copyTo(localPointer, rhsBounds[0]); localPointer = diffTree(oldT.rhs, newT.rhs, rhsBounds); copyTo(localPointer, bounds[1]); return bounds[1]; }
public JCTree build(final JCTree lhs) { JCTree.Tag newTag = tree.getTag().noAssignOp(); // Erasure (TransTypes) can change the type of // tree.lhs. However, we can still get the // unerased type of tree.lhs as it is stored // in tree.type in Attr. Symbol newOperator = rs.resolveBinaryOperator(tree.pos(), newTag, attrEnv, tree.type, tree.rhs.type); JCExpression expr = (JCExpression)lhs; if (expr.type != tree.type) expr = make.TypeCast(tree.type, expr); JCBinary opResult = make.Binary(newTag, expr, tree.rhs); opResult.operator = newOperator; opResult.type = newOperator.type.getReturnType(); JCExpression newRhs = boxingReq ? make.TypeCast(types.unboxedType(tree.type), opResult) : opResult; return make.Assign((JCExpression)lhs, newRhs).setType(tree.type); } });
public JCTree build(final JCTree lhs) { int newTag = tree.getTag() - JCTree.ASGOffset; // Erasure (TransTypes) can change the type of // tree.lhs. However, we can still get the // unerased type of tree.lhs as it is stored // in tree.type in Attr. Symbol newOperator = rs.resolveBinaryOperator(tree.pos(), newTag, attrEnv, tree.type, tree.rhs.type); JCExpression expr = (JCExpression)lhs; if (expr.type != tree.type) expr = make.TypeCast(tree.type, expr); JCBinary opResult = make.Binary(newTag, expr, tree.rhs); opResult.operator = newOperator; opResult.type = newOperator.type.getReturnType(); JCTypeCast newRhs = make.TypeCast(types.unboxedType(tree.type), opResult); return make.Assign((JCExpression)lhs, newRhs).setType(tree.type); } });
public Kind getKind() { return TreeInfo.tagToKind(getTag()); } public JCExpression getVariable() { return lhs; }
public Kind getKind() { return TreeInfo.tagToKind(getTag()); } public JCExpression getVariable() { return lhs; }
public Kind getKind() { return TreeInfo.tagToKind(getTag()); } public JCExpression getVariable() { return lhs; }
public void visitAssignop(JCAssignOp tree) { try { open(prec, TreeInfo.assignopPrec); printExpr(tree.lhs, TreeInfo.assignopPrec + 1); print(" " + operatorName(tree.getTag().noAssignOp()) + "= "); printExpr(tree.rhs, TreeInfo.assignopPrec); close(prec, TreeInfo.assignopPrec); } catch (IOException e) { throw new UncheckedIOException(e); } }
/** Make an attributed assignop expression. * @param optag The operators tree tag. * @param lhs The operator's left argument. * @param rhs The operator's right argument. */ JCAssignOp makeAssignop(JCTree.Tag optag, JCTree lhs, JCTree rhs) { JCAssignOp tree = make.Assignop(optag, lhs, rhs); tree.operator = rs.resolveBinaryOperator( make_pos, tree.getTag().noAssignOp(), attrEnv, lhs.type, rhs.type); tree.type = lhs.type; return tree; }
public JCTree visitCompoundAssignment(CompoundAssignmentTree node, P p) { JCAssignOp t = (JCAssignOp) node; JCTree lhs = copy(t.lhs, p); JCTree rhs = copy(t.rhs, p); return M.at(t.pos).Assignop(t.getTag(), lhs, rhs); }
public JCTree visitCompoundAssignment(CompoundAssignmentTree node, P p) { JCAssignOp t = (JCAssignOp) node; JCTree lhs = copy(t.lhs, p); JCTree rhs = copy(t.rhs, p); return M.at(t.pos).Assignop(t.getTag(), lhs, rhs); }
public JCTree visitCompoundAssignment(CompoundAssignmentTree node, P p) { JCAssignOp t = (JCAssignOp) node; JCTree lhs = copy(t.lhs, p); JCTree rhs = copy(t.rhs, p); return M.at(t.pos).Assignop(t.getTag(), lhs, rhs); }
@Override public Choice<State<JCAssignOp>> visitCompoundAssignment( final CompoundAssignmentTree node, State<?> state) { return chooseSubtrees( state, s -> unifyExpression(node.getVariable(), s), s -> unifyExpression(node.getExpression(), s), (var, expr) -> maker().Assignop(((JCAssignOp) node).getTag(), var, expr)) .condition(assignOp -> !(assignOp.result().getVariable() instanceof PlaceholderParamIdent)); }
/** Make an attributed assignop expression. * @param optag The operators tree tag. * @param lhs The operator's left argument. * @param rhs The operator's right argument. */ JCAssignOp makeAssignop(JCTree.Tag optag, JCTree lhs, JCTree rhs) { JCAssignOp tree = make.Assignop(optag, lhs, rhs); tree.operator = rs.resolveBinaryOperator( make_pos, tree.getTag().noAssignOp(), attrEnv, lhs.type, rhs.type); tree.type = lhs.type; return tree; }
/** Make an attributed assignop expression. * @param optag The operators tree tag. * @param lhs The operator's left argument. * @param rhs The operator's right argument. */ JCAssignOp makeAssignop(int optag, JCTree lhs, JCTree rhs) { JCAssignOp tree = make.Assignop(optag, lhs, rhs); tree.operator = rs.resolveBinaryOperator( make_pos, tree.getTag() - JCTree.ASGOffset, attrEnv, lhs.type, rhs.type); tree.type = lhs.type; return tree; }
public void visitAssignop(JCAssignOp tree) { try { open(prec, TreeInfo.assignopPrec); printExpr(tree.lhs, TreeInfo.assignopPrec + 1); print(" " + operatorName(tree.getTag() - JCTree.ASGOffset) + "= "); printExpr(tree.rhs, TreeInfo.assignopPrec); close(prec, TreeInfo.assignopPrec); } catch (IOException e) { throw new UncheckedIOException(e); } }
public void visitAssignop(JCAssignOp tree) { open(prec, TreeInfo.assignopPrec); width+=3; width(operators.operatorName(tree.getTag())); width(tree.lhs, TreeInfo.assignopPrec + 1); width(tree.rhs, TreeInfo.assignopPrec); } public void visitAssign(JCAssign tree) {
public void visitAssignop(JCAssignOp tree) { try { open(prec, TreeInfo.assignopPrec); printExpr(tree.lhs, TreeInfo.assignopPrec + 1); print(" " + operatorName(tree.getTag().noAssignOp()) + "= "); printExpr(tree.rhs, TreeInfo.assignopPrec); close(prec, TreeInfo.assignopPrec); } catch (IOException e) { throw new UncheckedIOException(e); } }
@Override public Choice<State<JCAssignOp>> visitCompoundAssignment( final CompoundAssignmentTree node, State<?> state) { return chooseSubtrees( state, s -> unifyExpression(node.getVariable(), s), s -> unifyExpression(node.getExpression(), s), (var, expr) -> maker().Assignop(((JCAssignOp) node).getTag(), var, expr)) .condition(assignOp -> !(assignOp.result().getVariable() instanceof PlaceholderParamIdent)); }