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 / CastExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  3.2 KB  |  82 lines

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import java.util.Hashtable;
  5. import sun.tools.java.ClassDefinition;
  6. import sun.tools.java.ClassNotFound;
  7. import sun.tools.java.Constants;
  8. import sun.tools.java.Environment;
  9. import sun.tools.java.Type;
  10.  
  11. public class CastExpression extends BinaryExpression {
  12.    public CastExpression(int var1, Expression var2, Expression var3) {
  13.       super(34, var1, var2.type, var2, var3);
  14.    }
  15.  
  16.    public Vset checkValue(Environment var1, Context var2, Vset var3, Hashtable var4) {
  17.       super.type = super.left.toType(var1, var2);
  18.       var3 = super.right.checkValue(var1, var2, var3, var4);
  19.       if (!super.type.isType(13) && !super.right.type.isType(13)) {
  20.          if (super.type.equals(super.right.type)) {
  21.             return var3;
  22.          } else {
  23.             try {
  24.                if (var1.explicitCast(super.right.type, super.type)) {
  25.                   super.right = new ConvertExpression(super.where, super.type, super.right);
  26.                   return var3;
  27.                }
  28.             } catch (ClassNotFound var6) {
  29.                var1.error(super.where, "class.not.found", var6.name, Constants.opNames[super.op]);
  30.             }
  31.  
  32.             var1.error(super.where, "invalid.cast", super.right.type, super.type);
  33.             return var3;
  34.          }
  35.       } else {
  36.          return var3;
  37.       }
  38.    }
  39.  
  40.    public boolean isConstant() {
  41.       return super.type.inMask(1792) && !super.type.equals(Type.tString) ? false : super.right.isConstant();
  42.    }
  43.  
  44.    public Expression inline(Environment var1, Context var2) {
  45.       return super.right.inline(var1, var2);
  46.    }
  47.  
  48.    public Expression inlineValue(Environment var1, Context var2) {
  49.       return super.right.inlineValue(var1, var2);
  50.    }
  51.  
  52.    public int costInline(int var1, Environment var2, Context var3) {
  53.       if (var3 == null) {
  54.          return 1 + super.right.costInline(var1, var2, var3);
  55.       } else {
  56.          ClassDefinition var4 = var3.field.getClassDefinition();
  57.  
  58.          try {
  59.             if (super.left.type.isType(9) || var4.canAccess(var2, var2.getClassDeclaration(super.left.type))) {
  60.                return 1 + super.right.costInline(var1, var2, var3);
  61.             }
  62.          } catch (ClassNotFound var5) {
  63.          }
  64.  
  65.          return var1;
  66.       }
  67.    }
  68.  
  69.    public void print(PrintStream var1) {
  70.       var1.print("(" + Constants.opNames[super.op] + " ");
  71.       if (super.type.isType(13)) {
  72.          super.left.print(var1);
  73.       } else {
  74.          var1.print(super.type);
  75.       }
  76.  
  77.       var1.print(" ");
  78.       super.right.print(var1);
  79.       var1.print(")");
  80.    }
  81. }
  82.