@Override public void visitUnary( JCTree.JCUnary tree ) { super.visitUnary( tree ); if( _tp.isGenerate() && !shouldProcessForGeneration() ) { // Don't process tree during GENERATE, unless the tree was generated e.g., a bridge method return; } if( isJailbreakReceiver( tree ) ) { Tree.Kind kind = tree.getKind(); if( kind == Tree.Kind.POSTFIX_INCREMENT || kind == Tree.Kind.POSTFIX_DECREMENT || kind == Tree.Kind.PREFIX_INCREMENT || kind == Tree.Kind.PREFIX_DECREMENT ) { // ++, -- operators not supported with jailbreak access to fields, only direct assignment _tp.report( tree, Diagnostic.Kind.ERROR, ExtIssueMsg.MSG_INCREMENT_OP_NOT_ALLOWED_REFLECTION.get() ); Types types = Types.instance( ((BasicJavacTask)_tp.getJavacTask()).getContext() ); tree.type = types.createErrorType( tree.type ); } result = tree; } else { result = tree; } }
@Override public void visitUnary( JCTree.JCUnary tree ) { super.visitUnary( tree ); if( _tp.isGenerate() && !shouldProcessForGeneration() ) { // Don't process tree during GENERATE, unless the tree was generated e.g., a bridge method return; } if( isJailbreakReceiver( tree ) ) { Tree.Kind kind = tree.getKind(); if( kind == Tree.Kind.POSTFIX_INCREMENT || kind == Tree.Kind.POSTFIX_DECREMENT || kind == Tree.Kind.PREFIX_INCREMENT || kind == Tree.Kind.PREFIX_DECREMENT ) { // ++, -- operators not supported with jailbreak access to fields, only direct assignment _tp.report( tree, Diagnostic.Kind.ERROR, ExtIssueMsg.MSG_INCREMENT_OP_NOT_ALLOWED_REFLECTION.get() ); Types types = Types.instance( ((BasicJavacTask)_tp.getJavacTask()).getContext() ); tree.type = types.createErrorType( tree.type ); } result = tree; } else { result = tree; } }
protected int diffUnary(JCUnary oldT, JCUnary newT, int[] bounds) { int[] argBounds = getBounds(oldT.arg); boolean newOpOnLeft = newT.getKind() != Kind.POSTFIX_DECREMENT && newT.getKind() != Kind.POSTFIX_INCREMENT; if (newOpOnLeft) { if (oldT.getTag() != newT.getTag()) { printer.print(operatorName(newT.getTag())); } else { copyTo(bounds[0], argBounds[0]); } } int localPointer = diffTree(oldT.arg, newT.arg, argBounds); localPointer = copyUpTo(localPointer, argBounds[1]); if (!newOpOnLeft) { if (oldT.getTag() != newT.getTag()) { printer.print(operatorName(newT.getTag())); } else { copyUpTo(localPointer, bounds[1]); } } return bounds[1]; }
@Override public Void visitUnary(UnaryTree tree, Void unused) { JCUnary unary = (JCUnary) tree; switch (unary.getKind()) { case PREFIX_DECREMENT: case PREFIX_INCREMENT: case POSTFIX_DECREMENT: case POSTFIX_INCREMENT: hasSideEffect = true; break; default: break; } return super.visitUnary(tree, unused); } }
@Override public Void visitUnary(UnaryTree tree, Void unused) { JCUnary unary = (JCUnary) tree; switch (unary.getKind()) { case PREFIX_DECREMENT: case PREFIX_INCREMENT: case POSTFIX_DECREMENT: case POSTFIX_INCREMENT: hasSideEffect = true; break; default: break; } return super.visitUnary(tree, unused); } }