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 void setFieldName(String fieldname) {
24 this.fieldname = fieldname;
27 public FieldDescriptor getField() {
31 public ExpressionNode getExpression() {
35 public void setExpression( ExpressionNode en ) {
38 public String printNode(int indent) {
39 return left.printNode(indent)+"."+fieldname;
42 return Kind.FieldAccessNode;
44 public TypeDescriptor getType() {
45 return getField().getType();
48 public Long evaluate() {
49 // if the field is a constant value then OK
51 if(field.isStatic() && field.isFinal()) {
52 eval = field.getExpressionNode().evaluate();
53 } else if (field.isEnum()) {
54 eval = Long.valueOf((long)field.enumValue());