@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); }
protected Expression asExpression(AST node) { AST leftNode = node.getFirstChild(); Expression leftExpression = expression(leftNode); AST rightNode = leftNode.getNextSibling(); ClassNode type = makeTypeWithArguments(rightNode); return CastExpression.asExpression(type, leftExpression); }
public void pushDynamicName(Expression name) { if (name instanceof ConstantExpression) { ConstantExpression ce = (ConstantExpression) name; Object value = ce.getValue(); if (value instanceof String) { pushConstant(ce); return; } } new CastExpression(ClassHelper.STRING_TYPE, name).visit(controller.getAcg()); }
public static CastExpression asExpression(ClassNode type, Expression expression) { CastExpression answer = new CastExpression(type, expression); answer.setCoerce(true); return answer; }
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; }
public Expression transformExpression(ExpressionTransformer transformer) { CastExpression ret = new CastExpression(getType(), transformer.transform(expression)); ret.setSourcePosition(this); ret.setCoerce(this.isCoerce()); return ret; }
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; }
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(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 Expression transformCastExpression(final CastExpression cast) { if (cast.isCoerce()) { 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()); CastExpression trn = new CastExpression(castType, transformer.transform(expression)); trn.setSourcePosition(cast); trn.copyNodeMetaData(cast); return trn; } else if (ClassHelper.char_TYPE.equals(cast.getType())) { Expression expression = cast.getExpression(); if (expression instanceof ConstantExpression) { ConstantExpression ce = (ConstantExpression) expression;
public String toString() { return super.toString() +"[(" + getType().getName() + ") " + expression + "]"; }
public void visitCastExpression(CastExpression expression) { expression.getExpression().visit(this); }
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); } } } }
public static CastExpression castX(ClassNode type, Expression expression) { return new CastExpression(type, expression); }
@Override public void run() { loc(exp); visit(exp.getExpression()); literal(exp.getType()); literal(exp.isIgnoringAutoboxing()); literal(exp.isStrict()); } });
return makeCheckedCall("checkedCast", classExp(exp.getType()), transform(ce.getExpression()), boolExp(ce.isIgnoringAutoboxing()), boolExp(ce.isCoerce()), boolExp(ce.isStrict()) );
final CastExpression ce = new CastExpression(left.getType(), me); ce.setCoerce(true); ce.setSourcePosition(be); return ce; CastExpression ce = new CastExpression(left.getType(), right); ce.setCoerce(true); ce.setSourcePosition(be); return ce; me.addMapEntryExpression((MapEntryExpression) transform(be.getRightExpression())); me.setSourcePosition(be.getRightExpression()); final CastExpression ce = new CastExpression(left.getType(), me); ce.setSourcePosition(be); return ce;
final CastExpression ce = new CastExpression(left.getType(), me); ce.setSourcePosition(be); return ce; Expression ce = new CastExpression(left.getType(), right); ce.setSourcePosition(be); return ce; me.addMapEntryExpression((MapEntryExpression) transform(be.getRightExpression())); me.setSourcePosition(be.getRightExpression()); final CastExpression ce = new CastExpression(left.getType(), me); ce.setSourcePosition(be); return ce;
CastExpression castExpression = new CastExpression(GenericsUtils.nonGeneric(cNode), other); castExpression.setStrict(true); body.addStatement(declS(otherTyped, castExpression));
@Override public void visitCastExpression(final CastExpression exp) { if (exp.isCoerce()) { makeNode("sandboxCast", new Runnable() { @Override public void run() { loc(exp); visit(exp.getExpression()); literal(exp.getType()); literal(exp.isIgnoringAutoboxing()); literal(exp.isStrict()); } }); } else { super.visitCastExpression(exp); } }