Your browser does not support JavaScript and this site utilizes JavaScript to build content and provide links to additional information. You should either enable JavaScript in your browser settings or use a browser that supports JavaScript in order to take full advantage of this site.
1 46 package org.codehaus.groovy.ast.expr; 47 48 import java.util.ArrayList ; 49 import java.util.Iterator ; 50 import java.util.List ; 51 52 import org.codehaus.groovy.ast.GroovyCodeVisitor; 53 import org.codehaus.groovy.classgen.AsmClassGenerator2; 54 55 61 public class ListExpression extends Expression { 62 private List expressions; 63 64 public ListExpression() { 65 this(new ArrayList ()); 66 } 67 68 public ListExpression(List expressions) { 69 this.expressions = expressions; 70 } 72 73 public void addExpression(Expression expression) { 74 expressions.add(expression); 75 } 76 77 public List getExpressions() { 78 return expressions; 79 } 80 81 public void visit(GroovyCodeVisitor visitor) { 82 visitor.visitListExpression(this); 83 } 84 85 public Expression transformExpression(ExpressionTransformer transformer) { 86 return new ListExpression(transformExpressions(getExpressions(), transformer)); 87 } 88 89 protected void resolveType(AsmClassGenerator2 resolver) { 90 for (int i = 0; i < expressions.size(); i++) { 91 Expression expression = (Expression) expressions.get(i); 92 expression.resolve(resolver); 93 } 94 super.setTypeClass(List .class); 95 } 96 97 public Expression getExpression(int i) { 98 return (Expression) expressions.get(i); 99 } 100 101 public String getText() { 102 StringBuffer buffer = new StringBuffer ("["); 103 boolean first = true; 104 for (Iterator iter = expressions.iterator(); iter.hasNext(); ) { 105 if (first) { 106 first = false; 107 } 108 else { 109 buffer.append(", "); 110 } 111 112 buffer.append(((Expression)iter.next()).getText()); 113 } 114 buffer.append("]"); 115 return buffer.toString(); 116 } 117 118 public String toString() { 119 return super.toString() + expressions; 120 } 121 122 126 public Class getComponentTypeClass() { 127 boolean first = true; 128 Class cls = null; 129 130 for (Iterator iter = expressions.iterator(); iter.hasNext(); ) { 131 Expression exp = (Expression) iter.next(); 132 if (cls == null) { 133 cls = exp.getTypeClass(); 134 } 135 else { 136 if (cls != exp.getTypeClass()) { 137 return null; 139 } 140 } 141 } 142 return cls; 143 } 144 145 146 } 147
| Popular Tags
|