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 String printNode(int indent) {
32 return left.printNode(indent)+"."+fieldname;
35 return Kind.FieldAccessNode;
37 public TypeDescriptor getType() {
38 return getField().getType();
41 public Long evaluate() {
42 // if the field is a constant value then OK
44 if(field.isStatic() && field.isFinal()) {
45 eval = field.getExpressionNode().evaluate();
46 } else if (field.isEnum()) {
47 eval = Long.valueOf((long)field.enumValue());