public String toString() { return super.toString() +"[(" + getType().getName() + ") " + expression + "]"; }
public String getText() { return "(" + getType() + ") " + expression.getText(); }
@Override public void visitCastExpression(CastExpression expression) { super.visitCastExpression(expression); addToCache(expression.getType()); } @Override
protected String getMethodName(Expression message) { String methodName = null; if (message instanceof CastExpression) { CastExpression msg = (CastExpression) message; if (msg.getType() == ClassHelper.STRING_TYPE) { final Expression methodExpr = msg.getExpression(); if (methodExpr instanceof ConstantExpression) methodName = methodExpr.getText(); } } if (methodName == null && message instanceof ConstantExpression) { ConstantExpression constantExpression = (ConstantExpression) message; methodName = constantExpression.getText(); } return methodName; }
@Override public void visitCastExpression(CastExpression expr) { CastExpression result = new CastExpression( expr.getType(), replaceExpr(expr.getExpression()), expr.isIgnoringAutoboxing() ); result.setCoerce(expr.isCoerce()); result.setType(expr.getType()); result.setSourcePosition(expr); replaceVisitedExpressionWith(result); }
@Override public void visitCastExpression(final CastExpression expression) { super.visitCastExpression(expression); if (!expression.isCoerce()) { ClassNode targetType = expression.getType(); Expression source = expression.getExpression(); ClassNode expressionType = getType(source); if (!checkCast(targetType, source) && !isDelegateOrOwnerInClosure(source)) { addStaticTypeError("Inconvertible types: cannot cast " + expressionType.toString(false) + " to " + targetType.toString(false), expression); } } storeType(expression, expression.getType()); }
public void visitCastExpression(CastExpression expression) { visitNode(expression); visitType(expression.getType()); super.visitCastExpression(expression); }
@Override public void visitCastExpression(CastExpression expr) { CastExpression conversion = new CastExpression( expr.getType(), convert(expr.getExpression()), expr.isIgnoringAutoboxing()); conversion.setSourcePosition(expr); conversion.setCoerce(expr.isCoerce()); result = record(conversion); }
public Expression transformExpression(ExpressionTransformer transformer) { CastExpression ret = new CastExpression(getType(), transformer.transform(expression)); ret.setSourcePosition(this); ret.setCoerce(this.isCoerce()); ret.setStrict(this.isStrict()); ret.copyNodeMetaData(this); return ret; }
private void addArg(Expression arg) { if (arg instanceof NotExpression) { NotExpression not = (NotExpression)arg; addArg(not.getExpression()); call(InteractionBuilder.NEGATE_LAST_ARG); return; } if (arg instanceof CastExpression) { CastExpression cast = (CastExpression)arg; addArg(cast.getExpression()); call(InteractionBuilder.TYPE_LAST_ARG, new ClassExpression(cast.getType())); return; } if (arg instanceof ClosureExpression) { call(InteractionBuilder.ADD_CODE_ARG, arg); return; } call(InteractionBuilder.ADD_EQUAL_ARG, arg); }
Expression expression = cast.getExpression(); ClassNode exprInferredType = transformer.getTypeChooser().resolveType(expression, transformer.getClassNode()); ClassNode castType = cast.getType(); if (castType.isArray() && expression instanceof ListExpression) { ArrayExpression arrayExpression = new ArrayExpression(castType.getComponentType(), ((ListExpression) expression).getExpressions()); return trn; } else if (ClassHelper.char_TYPE.equals(cast.getType())) { Expression expression = cast.getExpression(); if (expression instanceof ConstantExpression) {
public void visitCastExpression(CastExpression castExpression) { ClassNode type = castExpression.getType(); Expression subExpression = castExpression.getExpression(); subExpression.visit(this); if (ClassHelper.OBJECT_TYPE.equals(type)) return; if (castExpression.isCoerce()) { controller.getOperandStack().doAsType(type); } else { if (isNullConstant(subExpression) && !ClassHelper.isPrimitiveType(type)) { controller.getOperandStack().replace(type); } else { ClassNode subExprType = controller.getTypeChooser().resolveType(subExpression, controller.getClassNode()); if (castExpression.isStrict() || (!ClassHelper.isPrimitiveType(type) && WideningCategories.implementsInterfaceOrSubclassOf(subExprType, type))) { BytecodeHelper.doCast(controller.getMethodVisitor(), type); controller.getOperandStack().replace(type); } else { controller.getOperandStack().doGroovyCast(type); } } } }
@Override public void visitCastExpression(CastExpression expr) { CastExpression result = new CastExpression( expr.getType(), replaceExpr(expr.getExpression()), expr.isIgnoringAutoboxing() ); result.setCoerce(expr.isCoerce()); result.setType(expr.getType()); result.setSourcePosition(expr); replaceVisitedExpressionWith(result); }
public Expression transformExpression(ExpressionTransformer transformer) { CastExpression ret = new CastExpression(getType(), transformer.transform(expression)); ret.setSourcePosition(this); ret.setCoerce(this.isCoerce()); return ret; }
public Expression transformExpression(ExpressionTransformer transformer) { CastExpression ret = new CastExpression(getType(), transformer.transform(expression)); ret.setSourcePosition(this); ret.setCoerce(this.isCoerce()); return ret; }
public Expression transformExpression(ExpressionTransformer transformer) { CastExpression ret = new CastExpression(getType(), transformer.transform(expression)); ret.setSourcePosition(this); ret.setCoerce(this.isCoerce()); return ret; }
@Override public void run() { loc(exp); visit(exp.getExpression()); literal(exp.getType()); literal(exp.isCoerce()); // TODO what about ignoreAutoboxing & strict? } });
public void visitCastExpression(CastExpression castExpression) { ClassNode type = castExpression.getType(); castExpression.getExpression().visit(this); if (castExpression.isCoerce()) { controller.getOperandStack().doAsType(type); } else { controller.getOperandStack().doGroovyCast(type); } }
public void visitCastExpression(CastExpression expression) { ClassNode type = expression.getType(); visitAndAutoboxBoolean(expression.getExpression()); final ClassNode rht = rightHandType; rightHandType = expression.getExpression().getType(); doConvertAndCast(type, expression.getExpression(), expression.isIgnoringAutoboxing(), false, expression.isCoerce()); rightHandType = rht; }
@Override public void run() { loc(exp); visit(exp.getExpression()); literal(exp.getType()); literal(exp.isIgnoringAutoboxing()); literal(exp.isStrict()); } });