home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / tools / tree / NewArrayExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  3.0 KB  |  118 lines

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