@Override public AstNode apply(final AstNode input) { return new BinaryOperatorExpression( operand, BinaryOperatorType.INEQUALITY, new PrimitiveExpression(Expression.MYSTERY_OFFSET, JavaPrimitiveCast.cast(comparandType.getSimpleType(), 0)) ); } }
@Override public AstNode apply(final AstNode input) { return new BinaryOperatorExpression( operand, BinaryOperatorType.INEQUALITY, new PrimitiveExpression(Expression.MYSTERY_OFFSET, JavaPrimitiveCast.cast(comparandType.getSimpleType(), 0)) ); } }
@Override public AstNode apply(final AstNode input) { return new BinaryOperatorExpression( operand, BinaryOperatorType.INEQUALITY, new PrimitiveExpression(Expression.MYSTERY_OFFSET, JavaPrimitiveCast.cast(comparandType.getSimpleType(), 0)) ); } }
@Override public Expression apply(final AstNode input) { return new BinaryOperatorExpression( node, BinaryOperatorType.INEQUALITY, new PrimitiveExpression( Expression.MYSTERY_OFFSET, JavaPrimitiveCast.cast( MetadataHelper.getUnderlyingPrimitiveTypeOrSelf(type) .getSimpleType(), 0 ) ) ); } }
@Override public Expression apply(final AstNode input) { return new BinaryOperatorExpression( node, BinaryOperatorType.INEQUALITY, new PrimitiveExpression( Expression.MYSTERY_OFFSET, JavaPrimitiveCast.cast( MetadataHelper.getUnderlyingPrimitiveTypeOrSelf(type) .getSimpleType(), 0 ) ) ); } }
@Override public Expression apply(final AstNode input) { return new BinaryOperatorExpression( node, BinaryOperatorType.INEQUALITY, new PrimitiveExpression( Expression.MYSTERY_OFFSET, JavaPrimitiveCast.cast( MetadataHelper.getUnderlyingPrimitiveTypeOrSelf(type) .getSimpleType(), 0 ) ) ); } }
Expression concatenation = new BinaryOperatorExpression(operands.get(0), BinaryOperatorType.ADD, operands.get(1)); concatenation = new BinaryOperatorExpression(concatenation, BinaryOperatorType.ADD, operands.get(i));
Expression concatenation = new BinaryOperatorExpression(operands.get(0), BinaryOperatorType.ADD, operands.get(1)); concatenation = new BinaryOperatorExpression(concatenation, BinaryOperatorType.ADD, operands.get(i));
Expression concatenation = new BinaryOperatorExpression(operands.get(0), BinaryOperatorType.ADD, operands.get(1)); concatenation = new BinaryOperatorExpression(concatenation, BinaryOperatorType.ADD, operands.get(i));
private static ConditionalExpression createPattern() { final Expression target = new TypeReferenceExpression(new AnyNode().toType()).makeOptional().toExpression(); final MemberReferenceExpression access = new MemberReferenceExpression(target, Pattern.ANY_STRING); @SuppressWarnings("UnnecessaryLocalVariable") final ConditionalExpression pattern = new ConditionalExpression( new BinaryOperatorExpression( access.withName("fieldAccess").toExpression(), BinaryOperatorType.EQUALITY, new NullReferenceExpression() ), new AssignmentExpression( new BackReference("fieldAccess").toExpression(), AssignmentOperatorType.ASSIGN, target.clone() .invoke(Pattern.ANY_STRING, new TypedLiteralNode("class", String.class).toExpression()) .withName("methodCall") .toExpression() ), new BackReference("fieldAccess").toExpression() ); return pattern; }
new BlockStatement( new IfElseStatement( Expression.MYSTERY_OFFSET, new BinaryOperatorExpression( new IdentifierExpressionBackReference("resource").toExpression(), BinaryOperatorType.INEQUALITY, new BlockStatement( new IfElseStatement( Expression.MYSTERY_OFFSET, new BinaryOperatorExpression( new IdentifierExpressionBackReference("savedException").toExpression(), BinaryOperatorType.INEQUALITY,
return new BinaryOperatorExpression(arg1, BinaryOperatorType.ADD, arg2); case Sub: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SUBTRACT, arg2); case Mul: return new BinaryOperatorExpression(arg1, BinaryOperatorType.MULTIPLY, arg2); case Div: return new BinaryOperatorExpression(arg1, BinaryOperatorType.DIVIDE, arg2); case Rem: return new BinaryOperatorExpression(arg1, BinaryOperatorType.MODULUS, arg2); case Neg: return new UnaryOperatorExpression(UnaryOperatorType.MINUS, arg1); case Shl: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SHIFT_LEFT, arg2); case Shr: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SHIFT_RIGHT, arg2); case UShr: return new BinaryOperatorExpression(arg1, BinaryOperatorType.UNSIGNED_SHIFT_RIGHT, arg2); case And: return new BinaryOperatorExpression(arg1, BinaryOperatorType.BITWISE_AND, arg2); case Or: return new BinaryOperatorExpression(arg1, BinaryOperatorType.BITWISE_OR, arg2); case Not: return new UnaryOperatorExpression(UnaryOperatorType.NOT, arg1); case Xor: return new BinaryOperatorExpression(arg1, BinaryOperatorType.EXCLUSIVE_OR, arg2); return new BinaryOperatorExpression(arg1, BinaryOperatorType.EQUALITY, arg2); case CmpNe: return new BinaryOperatorExpression(arg1, BinaryOperatorType.INEQUALITY, arg2);
return new BinaryOperatorExpression(arg1, BinaryOperatorType.ADD, arg2); case Sub: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SUBTRACT, arg2); case Mul: return new BinaryOperatorExpression(arg1, BinaryOperatorType.MULTIPLY, arg2); case Div: return new BinaryOperatorExpression(arg1, BinaryOperatorType.DIVIDE, arg2); case Rem: return new BinaryOperatorExpression(arg1, BinaryOperatorType.MODULUS, arg2); case Neg: return new UnaryOperatorExpression(UnaryOperatorType.MINUS, arg1); case Shl: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SHIFT_LEFT, arg2); case Shr: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SHIFT_RIGHT, arg2); case UShr: return new BinaryOperatorExpression(arg1, BinaryOperatorType.UNSIGNED_SHIFT_RIGHT, arg2); case And: return new BinaryOperatorExpression(arg1, BinaryOperatorType.BITWISE_AND, arg2); case Or: return new BinaryOperatorExpression(arg1, BinaryOperatorType.BITWISE_OR, arg2); case Not: return new UnaryOperatorExpression(UnaryOperatorType.NOT, arg1); case Xor: return new BinaryOperatorExpression(arg1, BinaryOperatorType.EXCLUSIVE_OR, arg2); return new BinaryOperatorExpression(arg1, BinaryOperatorType.EQUALITY, arg2); case CmpNe: return new BinaryOperatorExpression(arg1, BinaryOperatorType.INEQUALITY, arg2);
return new BinaryOperatorExpression(arg1, BinaryOperatorType.ADD, arg2); case Sub: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SUBTRACT, arg2); case Mul: return new BinaryOperatorExpression(arg1, BinaryOperatorType.MULTIPLY, arg2); case Div: return new BinaryOperatorExpression(arg1, BinaryOperatorType.DIVIDE, arg2); case Rem: return new BinaryOperatorExpression(arg1, BinaryOperatorType.MODULUS, arg2); case Neg: return new UnaryOperatorExpression(UnaryOperatorType.MINUS, arg1); case Shl: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SHIFT_LEFT, arg2); case Shr: return new BinaryOperatorExpression(arg1, BinaryOperatorType.SHIFT_RIGHT, arg2); case UShr: return new BinaryOperatorExpression(arg1, BinaryOperatorType.UNSIGNED_SHIFT_RIGHT, arg2); case And: return new BinaryOperatorExpression(arg1, BinaryOperatorType.BITWISE_AND, arg2); case Or: return new BinaryOperatorExpression(arg1, BinaryOperatorType.BITWISE_OR, arg2); case Not: return new UnaryOperatorExpression(UnaryOperatorType.NOT, arg1); case Xor: return new BinaryOperatorExpression(arg1, BinaryOperatorType.EXCLUSIVE_OR, arg2); return new BinaryOperatorExpression(arg1, BinaryOperatorType.EQUALITY, arg2); case CmpNe: return new BinaryOperatorExpression(arg1, BinaryOperatorType.INEQUALITY, arg2);
case "POSITIVE_INFINITY": { node.replaceWith( new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? (Object) 1d : 1f), BinaryOperatorType.DIVIDE, new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? (Object) (-1d) : -1f), BinaryOperatorType.DIVIDE, new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? (Object) 0d : 0f), BinaryOperatorType.DIVIDE,
case "POSITIVE_INFINITY": { node.replaceWith( new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? 1d : 1f), BinaryOperatorType.DIVIDE, new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? -1d : -1f), BinaryOperatorType.DIVIDE, new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? 0d : 0f), BinaryOperatorType.DIVIDE,
new BlockStatement( new IfElseStatement( Expression.MYSTERY_OFFSET, new BinaryOperatorExpression( new IdentifierExpressionBackReference("resource").toExpression(), BinaryOperatorType.INEQUALITY, new BlockStatement( new IfElseStatement( Expression.MYSTERY_OFFSET, new BinaryOperatorExpression( new IdentifierExpressionBackReference("savedException").toExpression(), BinaryOperatorType.INEQUALITY,
case "POSITIVE_INFINITY": { node.replaceWith( new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? 1d : 1f), BinaryOperatorType.DIVIDE, new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? -1d : -1f), BinaryOperatorType.DIVIDE, new BinaryOperatorExpression( new PrimitiveExpression(node.getOffset(), jvmType == JvmType.Double ? 0d : 0f), BinaryOperatorType.DIVIDE,
new BlockStatement( new IfElseStatement( Expression.MYSTERY_OFFSET, new BinaryOperatorExpression( new IdentifierExpressionBackReference("resource").toExpression(), BinaryOperatorType.INEQUALITY, new BlockStatement( new IfElseStatement( Expression.MYSTERY_OFFSET, new BinaryOperatorExpression( new IdentifierExpressionBackReference("savedException").toExpression(), BinaryOperatorType.INEQUALITY,