1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 package org.codehaus.groovy.ast.expr;
47
48 import org.codehaus.groovy.ast.ClassNode;
49 import org.codehaus.groovy.ast.GroovyCodeVisitor;
50
51 /***
52 * Represents a type cast expression
53 *
54 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
55 * @version $Revision: 1.9 $
56 */
57 public class CastExpression extends Expression {
58
59 private Expression expression;
60 private boolean ignoreAutoboxing=false;
61 private boolean coerce = false;
62
63 public static CastExpression asExpression(ClassNode type, Expression expression) {
64 CastExpression answer = new CastExpression(type, expression);
65 answer.setCoerce(true);
66 return answer;
67 }
68
69 public CastExpression(ClassNode type, Expression expression) {
70 this(type,expression,false);
71 }
72
73 public CastExpression(ClassNode type, Expression expression, boolean ignoreAutoboxing) {
74 super.setType(type);
75 this.expression = expression;
76 this.ignoreAutoboxing = ignoreAutoboxing;
77 }
78
79 public boolean isIgnoringAutoboxing(){
80 return ignoreAutoboxing;
81 }
82
83 public boolean isCoerce() {
84 return coerce;
85 }
86
87 public void setCoerce(boolean coerce) {
88 this.coerce = coerce;
89 }
90
91 public String toString() {
92 return super.toString() +"[(" + getType().getName() + ") " + expression + "]";
93 }
94
95 public void visit(GroovyCodeVisitor visitor) {
96 visitor.visitCastExpression(this);
97 }
98
99 public Expression transformExpression(ExpressionTransformer transformer) {
100 Expression ret = new CastExpression(getType(), transformer.transform(expression));
101 ret.setSourcePosition(this);
102 return ret;
103 }
104
105 public String getText() {
106 return "(" + getType() + ") " + expression.getText();
107 }
108
109 public Expression getExpression() {
110 return expression;
111 }
112
113 public void setType(ClassNode t) {
114 super.setType(t);
115 }
116
117 }