home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / tools / tree / SuperExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  2.7 KB  |  91 lines

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import java.util.Hashtable;
  5. import sun.tools.java.ClassDeclaration;
  6. import sun.tools.java.Constants;
  7. import sun.tools.java.Environment;
  8. import sun.tools.java.Type;
  9.  
  10. public class SuperExpression extends ThisExpression {
  11.    Expression outerArg;
  12.  
  13.    public SuperExpression(int var1) {
  14.       super(83, var1);
  15.    }
  16.  
  17.    public SuperExpression(int var1, Expression var2) {
  18.       this(var1);
  19.       this.outerArg = var2;
  20.    }
  21.  
  22.    public SuperExpression(int var1, Context var2) {
  23.       super(var1, var2);
  24.       super.op = 83;
  25.    }
  26.  
  27.    public Expression getOuterArg() {
  28.       return this.outerArg;
  29.    }
  30.  
  31.    public Vset checkValue(Environment var1, Context var2, Vset var3, Hashtable var4) {
  32.       var3 = this.checkCommon(var1, var2, var3, var4);
  33.       if (super.type != Type.tError) {
  34.          var1.error(super.where, "undef.var.super", Constants.idSuper);
  35.       }
  36.  
  37.       return var3;
  38.    }
  39.  
  40.    public Vset checkAmbigName(Environment var1, Context var2, Vset var3, Hashtable var4, UnaryExpression var5) {
  41.       return this.checkCommon(var1, var2, var3, var4);
  42.    }
  43.  
  44.    private Vset checkCommon(Environment var1, Context var2, Vset var3, Hashtable var4) {
  45.       ClassDeclaration var5 = var2.field.getClassDefinition().getSuperClass();
  46.       if (var5 == null) {
  47.          var1.error(super.where, "undef.var", Constants.idSuper);
  48.          super.type = Type.tError;
  49.          return var3;
  50.       } else {
  51.          var3 = super.checkValue(var1, var2, var3, var4);
  52.          super.type = var5.getType();
  53.          return var3;
  54.       }
  55.    }
  56.  
  57.    public Expression copyInline(Context var1) {
  58.       SuperExpression var2 = (SuperExpression)super.copyInline(var1);
  59.       if (this.outerArg != null) {
  60.          var2.outerArg = this.outerArg.copyInline(var1);
  61.       }
  62.  
  63.       return var2;
  64.    }
  65.  
  66.    public void print(PrintStream var1) {
  67.       if (this.outerArg != null) {
  68.          var1.print("(outer=");
  69.          this.outerArg.print(var1);
  70.          var1.print(" ");
  71.       }
  72.  
  73.       super.print(var1);
  74.       if (this.outerArg != null) {
  75.          var1.print(")");
  76.       }
  77.  
  78.    }
  79.  
  80.    public Expression inlinevalue(Environment var1, Context var2) {
  81.       if (super.field == null) {
  82.          return this;
  83.       } else if (super.field != null) {
  84.          Expression var3 = (Expression)super.field.getValue(var1);
  85.          return (Expression)(var3 != null ? var3 : this);
  86.       } else {
  87.          return this;
  88.       }
  89.    }
  90. }
  91.