Another bug fix for inner class code: when trying to find a field in the surrounding...
[IRC.git] / Robust / src / IR / Tree / NameNode.java
index b087e3c653171626d52a1f1aed52f3d83b0723a5..bad7b7b682c00d9a33b546c28c833ece546b6e10 100644 (file)
@@ -13,22 +13,32 @@ public class NameNode extends ExpressionNode {
   FieldDescriptor fd;
   ExpressionNode en;
   ClassDescriptor cd;
+  boolean issuper;
 
   public NameNode(NameDescriptor nd) {
     this.name=nd;
     this.vd=null;
     this.fd=null;
     this.cd = null;
+    this.issuper= false;
+  }
+  
+  public boolean isSuper() {
+      return this.issuper;
+  }
+  
+  public void setIsSuper() {
+      this.issuper = true;
   }
 
   public ExpressionNode getExpression() {
     return en;
   }
-  
+
   public ClassDescriptor getClassDesc() {
     return this.cd;
   }
-  
+
   public void setClassDesc(ClassDescriptor cd) {
     this.cd = cd;
   }
@@ -71,16 +81,17 @@ public class NameNode extends ExpressionNode {
       return new TypeDescriptor(TypeDescriptor.TAG);
     else if(vd != null) {
       return ((VarDescriptor)vd).getType();
-    } if(cd != null) {
+    }
+    if(cd != null) {
       TypeDescriptor tp = new TypeDescriptor(cd);
       tp.setClassNameRef();
       return tp;
     } else {
       return null;
     }
-      
+
   }
-  
+
   public TypeDescriptor getClassType() {
     if(cd != null) {
       TypeDescriptor tp = new TypeDescriptor(cd);
@@ -101,7 +112,7 @@ public class NameNode extends ExpressionNode {
   public int kind() {
     return Kind.NameNode;
   }
-  
+
   public Long evaluate() {
     eval = null;
     if(fd != null ) {
@@ -109,7 +120,7 @@ public class NameNode extends ExpressionNode {
         eval = fd.getExpressionNode().evaluate();
       } else if(fd.isEnum()) {
         eval = Long.valueOf((long)fd.enumValue());
-      } 
+      }
     } else if(en!= null) {
       eval = en.evaluate();
     }