2 import IR.FieldDescriptor;
3 import IR.TypeDescriptor;
5 public class FieldAccessNode extends ExpressionNode {
11 public FieldAccessNode(ExpressionNode l, String field) {
17 public void setField(FieldDescriptor fd) {
21 public String getFieldName() {
25 public void setFieldName(String fieldname) {
26 this.fieldname = fieldname;
29 public FieldDescriptor getField() {
33 public ExpressionNode getExpression() {
37 public void setExpression( ExpressionNode en ) {
40 public String printNode(int indent) {
41 return left.printNode(indent)+"."+fieldname;
44 return Kind.FieldAccessNode;
46 public TypeDescriptor getType() {
47 return getField().getType();
50 public void setIsSuper() {
54 public boolean isSuper() {
58 public Long evaluate() {
59 // if the field is a constant value then OK
61 if(field.isStatic() && field.isFinal()) {
62 eval = field.getExpressionNode().evaluate();
63 } else if (field.isEnum()) {
64 eval = Long.valueOf((long)field.enumValue());