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

  1. package sun.tools.tree;
  2.  
  3. import java.util.Hashtable;
  4. import sun.tools.asm.Assembler;
  5. import sun.tools.java.CompilerError;
  6. import sun.tools.java.Environment;
  7. import sun.tools.java.Type;
  8.  
  9. public class ArrayExpression extends NaryExpression {
  10.    public ArrayExpression(int var1, Expression[] var2) {
  11.       super(57, var1, Type.tError, (Expression)null, var2);
  12.    }
  13.  
  14.    public Vset checkValue(Environment var1, Context var2, Vset var3, Hashtable var4) {
  15.       var1.error(super.where, "invalid.array.expr");
  16.       return var3;
  17.    }
  18.  
  19.    public Vset checkInitializer(Environment var1, Context var2, Vset var3, Type var4, Hashtable var5) {
  20.       if (!var4.isType(9)) {
  21.          if (!var4.isType(13)) {
  22.             var1.error(super.where, "invalid.array.init", var4);
  23.          }
  24.  
  25.          return var3;
  26.       } else {
  27.          super.type = var4;
  28.          var4 = var4.getElementType();
  29.  
  30.          for(int var6 = 0; var6 < super.args.length; ++var6) {
  31.             var3 = super.args[var6].checkInitializer(var1, var2, var3, var4, var5);
  32.             super.args[var6] = ((Node)this).convert(var1, var2, var4, super.args[var6]);
  33.          }
  34.  
  35.          return var3;
  36.       }
  37.    }
  38.  
  39.    public Expression inline(Environment var1, Context var2) {
  40.       Object var3 = null;
  41.  
  42.       for(int var4 = 0; var4 < super.args.length; ++var4) {
  43.          super.args[var4] = super.args[var4].inline(var1, var2);
  44.          if (super.args[var4] != null) {
  45.             var3 = var3 == null ? super.args[var4] : new CommaExpression(super.where, (Expression)var3, super.args[var4]);
  46.          }
  47.       }
  48.  
  49.       return (Expression)var3;
  50.    }
  51.  
  52.    public Expression inlineValue(Environment var1, Context var2) {
  53.       for(int var3 = 0; var3 < super.args.length; ++var3) {
  54.          super.args[var3] = super.args[var3].inlineValue(var1, var2);
  55.       }
  56.  
  57.       return this;
  58.    }
  59.  
  60.    public void codeValue(Environment var1, Context var2, Assembler var3) {
  61.       var3.add(super.where, 18, new Integer(super.args.length));
  62.       switch (super.type.getElementType().getTypeCode()) {
  63.          case 0:
  64.             var3.add(super.where, 188, new Integer(4));
  65.             break;
  66.          case 1:
  67.             var3.add(super.where, 188, new Integer(8));
  68.             break;
  69.          case 2:
  70.             var3.add(super.where, 188, new Integer(5));
  71.             break;
  72.          case 3:
  73.             var3.add(super.where, 188, new Integer(9));
  74.             break;
  75.          case 4:
  76.             var3.add(super.where, 188, new Integer(10));
  77.             break;
  78.          case 5:
  79.             var3.add(super.where, 188, new Integer(11));
  80.             break;
  81.          case 6:
  82.             var3.add(super.where, 188, new Integer(6));
  83.             break;
  84.          case 7:
  85.             var3.add(super.where, 188, new Integer(7));
  86.             break;
  87.          case 8:
  88.          default:
  89.             throw new CompilerError("codeValue");
  90.          case 9:
  91.             var3.add(super.where, 189, super.type.getElementType());
  92.             break;
  93.          case 10:
  94.             var3.add(super.where, 189, var1.getClassDeclaration(super.type.getElementType()));
  95.       }
  96.  
  97.       for(int var4 = 0; var4 < super.args.length; ++var4) {
  98.          var3.add(super.where, 89);
  99.          var3.add(super.where, 18, new Integer(var4));
  100.          super.args[var4].codeValue(var1, var2, var3);
  101.          switch (super.type.getElementType().getTypeCode()) {
  102.             case 0:
  103.             case 1:
  104.                var3.add(super.where, 84);
  105.                break;
  106.             case 2:
  107.                var3.add(super.where, 85);
  108.                break;
  109.             case 3:
  110.                var3.add(super.where, 86);
  111.                break;
  112.             default:
  113.                var3.add(super.where, 79 + super.type.getElementType().getTypeCodeOffset());
  114.          }
  115.       }
  116.  
  117.    }
  118. }
  119.