public JCExpression defaultNegation(Tree expr) { return maker.Unary(JCTree.Tag.NOT, (JCExpression) expr); }
@Override public Choice<State<JCUnary>> visitUnary(UnaryTree node, State<?> state) { final Tag tag = ((JCUnary) node).getTag(); return chooseSubtrees( state, s -> unifyExpression(node.getExpression(), s), expr -> maker().Unary(tag, expr)) .condition( s -> !MUTATING_UNARY_TAGS.contains(tag) || !(s.result().getExpression() instanceof PlaceholderParamIdent)); }
return inliner.maker().Unary(UNARY_OP_CODES.get(getKind()), getExpression().inline(inliner));
public JCExpression defaultNegation(Tree expr) { return maker.Unary(JCTree.Tag.NOT, (JCExpression) expr); }
public UnaryTree Unary(Kind operator, ExpressionTree arg) { final Tag op; switch (operator) { case POSTFIX_INCREMENT: op = JCTree.Tag.POSTINC; break; case POSTFIX_DECREMENT: op = JCTree.Tag.POSTDEC; break; case PREFIX_INCREMENT: op = JCTree.Tag.PREINC; break; case PREFIX_DECREMENT: op = JCTree.Tag.PREDEC; break; case UNARY_PLUS: op = JCTree.Tag.POS; break; case UNARY_MINUS: op = JCTree.Tag.NEG; break; case BITWISE_COMPLEMENT: op = JCTree.Tag.COMPL; break; case LOGICAL_COMPLEMENT: op = JCTree.Tag.NOT; break; default: throw new IllegalArgumentException("Illegal unary operator: " + operator); } return make.at(NOPOS).Unary(op, (JCExpression)arg); }
/** Make an attributed null check tree. */ public JCExpression makeNullCheck(JCExpression arg) { // optimization: X.this is never null; skip null check Name name = TreeInfo.name(arg); if (name == names._this || name == names._super) return arg; int optag = JCTree.NULLCHK; JCUnary tree = make.at(arg.pos).Unary(optag, arg); tree.operator = syms.nullcheck; tree.type = arg.type; return tree; }
/** Make an attributed null check tree. */ public JCExpression makeNullCheck(JCExpression arg) { // optimization: X.this is never null; skip null check Name name = TreeInfo.name(arg); if (name == names._this || name == names._super) return arg; int optag = JCTree.NULLCHK; JCUnary tree = make.at(arg.pos).Unary(optag, arg); tree.operator = syms.nullcheck; tree.type = arg.type; return tree; }
/** Make an attributed null check tree. */ public JCExpression makeNullCheck(JCExpression arg) { // optimization: X.this is never null; skip null check Name name = TreeInfo.name(arg); if (name == names._this || name == names._super) return arg; JCTree.Tag optag = NULLCHK; JCUnary tree = make.at(arg.pos).Unary(optag, arg); tree.operator = syms.nullcheck; tree.type = arg.type; return tree; }
/** Make an attributed null check tree. */ public JCExpression makeNullCheck(JCExpression arg) { // optimization: X.this is never null; skip null check Name name = TreeInfo.name(arg); if (name == names._this || name == names._super) return arg; JCTree.Tag optag = NULLCHK; JCUnary tree = make.at(arg.pos).Unary(optag, arg); tree.operator = syms.nullcheck; tree.type = arg.type; return tree; }
/** Make an attributed unary expression. * @param optag The operators tree tag. * @param arg The operator's argument. */ JCUnary makeUnary(JCTree.Tag optag, JCExpression arg) { JCUnary tree = make.Unary(optag, arg); tree.operator = rs.resolveUnaryOperator( make_pos, optag, attrEnv, arg.type); tree.type = tree.operator.type.getReturnType(); return tree; }
/** Make an attributed unary expression. * @param optag The operators tree tag. * @param arg The operator's argument. */ JCUnary makeUnary(int optag, JCExpression arg) { JCUnary tree = make.Unary(optag, arg); tree.operator = rs.resolveUnaryOperator( make_pos, optag, attrEnv, arg.type); tree.type = tree.operator.type.getReturnType(); return tree; }
public JCTree visitUnary(UnaryTree node, P p) { JCUnary t = (JCUnary) node; JCExpression arg = copy(t.arg, p); return M.at(t.pos).Unary(t.tag, arg); }
/** Make an attributed unary expression. * @param optag The operators tree tag. * @param arg The operator's argument. */ JCUnary makeUnary(JCTree.Tag optag, JCExpression arg) { JCUnary tree = make.Unary(optag, arg); tree.operator = rs.resolveUnaryOperator( make_pos, optag, attrEnv, arg.type); tree.type = tree.operator.type.getReturnType(); return tree; }
/** Make an attributed unary expression. * @param optag The operators tree tag. * @param arg The operator's argument. */ JCUnary makeUnary(int optag, JCExpression arg) { JCUnary tree = make.Unary(optag, arg); tree.operator = rs.resolveUnaryOperator( make_pos, optag, attrEnv, arg.type); tree.type = tree.operator.type.getReturnType(); return tree; }
public JCTree visitUnary(UnaryTree node, P p) { JCUnary t = (JCUnary) node; JCExpression arg = copy(t.arg, p); return M.at(t.pos).Unary(t.getTag(), arg); }
public JCTree visitUnary(UnaryTree node, P p) { JCUnary t = (JCUnary) node; JCExpression arg = copy(t.arg, p); return M.at(t.pos).Unary(t.getTag(), arg); }
public JCTree visitUnary(UnaryTree node, P p) { JCUnary t = (JCUnary) node; JCExpression arg = copy(t.arg, p); return M.at(t.pos).Unary(t.getTag(), arg); }
@Override public Choice<State<JCUnary>> visitUnary(UnaryTree node, State<?> state) { final Tag tag = ((JCUnary) node).getTag(); return chooseSubtrees( state, s -> unifyExpression(node.getExpression(), s), expr -> maker().Unary(tag, expr)) .condition( s -> !MUTATING_UNARY_TAGS.contains(tag) || !(s.result().getExpression() instanceof PlaceholderParamIdent)); }
@Override public boolean visitUnaryExpression(UnaryExpression node) { Expression operand = node.astOperand(); UnaryOperator operator = node.astOperator(); if (operator == UnaryOperator.UNARY_MINUS && operand instanceof IntegralLiteral) { JCLiteral result = (JCLiteral) toTree(operand); result.value = negative(result.value); return set(node, setPos(operand, result)); } int start = node.getPosition().getStart(); int end = node.getPosition().getEnd(); /* * The pos of "++x" is the entire thing, but the pos of "x++" is only the symbol. * I guess the javac guys think consistency is overrated :( */ if (hasSourceStructures()) { switch (operator) { case POSTFIX_DECREMENT: case POSTFIX_INCREMENT: start = posOfStructure(node, node.astOperator().getSymbol(), true); end = posOfStructure(node, node.astOperator().getSymbol(), false); } } return set(node, setPos(start, end, treeMaker.Unary(UNARY_OPERATORS.get(operator), toExpression(operand)))); }
@Override public boolean visitUnaryExpression(UnaryExpression node) { Expression operand = node.astOperand(); UnaryOperator operator = node.astOperator(); if (operator == UnaryOperator.UNARY_MINUS && operand instanceof IntegralLiteral) { JCLiteral result = (JCLiteral) toTree(operand); result.value = negative(result.value); return set(node, setPos(operand, result)); } int start = node.getPosition().getStart(); int end = node.getPosition().getEnd(); /* * The pos of "++x" is the entire thing, but the pos of "x++" is only the symbol. * I guess the javac guys think consistency is overrated :( */ if (hasSourceStructures()) { switch (operator) { case POSTFIX_DECREMENT: case POSTFIX_INCREMENT: start = posOfStructure(node, node.astOperator().getSymbol(), true); end = posOfStructure(node, node.astOperator().getSymbol(), false); } } return set(node, setPos(start, end, treeMaker.Unary(UNARY_OPERATORS.get(operator), toExpression(operand)))); }