home *** CD-ROM | disk | FTP | other *** search
- package sun.tools.tree;
-
- import java.io.PrintStream;
- import java.util.Hashtable;
- import sun.tools.java.ClassDeclaration;
- import sun.tools.java.Constants;
- import sun.tools.java.Environment;
- import sun.tools.java.Type;
-
- public class SuperExpression extends ThisExpression {
- Expression outerArg;
-
- public SuperExpression(int var1) {
- super(83, var1);
- }
-
- public SuperExpression(int var1, Expression var2) {
- this(var1);
- this.outerArg = var2;
- }
-
- public SuperExpression(int var1, Context var2) {
- super(var1, var2);
- super.op = 83;
- }
-
- public Expression getOuterArg() {
- return this.outerArg;
- }
-
- public Vset checkValue(Environment var1, Context var2, Vset var3, Hashtable var4) {
- var3 = this.checkCommon(var1, var2, var3, var4);
- if (super.type != Type.tError) {
- var1.error(super.where, "undef.var.super", Constants.idSuper);
- }
-
- return var3;
- }
-
- public Vset checkAmbigName(Environment var1, Context var2, Vset var3, Hashtable var4, UnaryExpression var5) {
- return this.checkCommon(var1, var2, var3, var4);
- }
-
- private Vset checkCommon(Environment var1, Context var2, Vset var3, Hashtable var4) {
- ClassDeclaration var5 = var2.field.getClassDefinition().getSuperClass();
- if (var5 == null) {
- var1.error(super.where, "undef.var", Constants.idSuper);
- super.type = Type.tError;
- return var3;
- } else {
- var3 = super.checkValue(var1, var2, var3, var4);
- super.type = var5.getType();
- return var3;
- }
- }
-
- public Expression copyInline(Context var1) {
- SuperExpression var2 = (SuperExpression)super.copyInline(var1);
- if (this.outerArg != null) {
- var2.outerArg = this.outerArg.copyInline(var1);
- }
-
- return var2;
- }
-
- public void print(PrintStream var1) {
- if (this.outerArg != null) {
- var1.print("(outer=");
- this.outerArg.print(var1);
- var1.print(" ");
- }
-
- super.print(var1);
- if (this.outerArg != null) {
- var1.print(")");
- }
-
- }
-
- public Expression inlinevalue(Environment var1, Context var2) {
- if (super.field == null) {
- return this;
- } else if (super.field != null) {
- Expression var3 = (Expression)super.field.getValue(var1);
- return (Expression)(var3 != null ? var3 : this);
- } else {
- return this;
- }
- }
- }
-