2 import IR.FieldDescriptor;
3 import IR.TypeDescriptor;
5 public class FieldAccessNode extends ExpressionNode {
10 public FieldAccessNode(ExpressionNode l, String field) {
15 public void setField(FieldDescriptor fd) {
19 public String getFieldName() {
23 public FieldDescriptor getField() {
27 public ExpressionNode getExpression() {
31 public void setExpression( ExpressionNode en ) {
34 public String printNode(int indent) {
35 return left.printNode(indent)+"."+fieldname;
38 return Kind.FieldAccessNode;
40 public TypeDescriptor getType() {
41 return getField().getType();
44 public Long evaluate() {
45 // if the field is a constant value then OK
47 if(field.isStatic() && field.isFinal()) {
48 eval = field.getExpressionNode().evaluate();
49 } else if (field.isEnum()) {
50 eval = Long.valueOf((long)field.enumValue());