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

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import java.util.Hashtable;
  5. import sun.tools.asm.Assembler;
  6. import sun.tools.java.Environment;
  7. import sun.tools.java.Identifier;
  8. import sun.tools.java.Type;
  9.  
  10. public class ContinueStatement extends Statement {
  11.    Identifier lbl;
  12.  
  13.    public ContinueStatement(int var1, Identifier var2) {
  14.       super(99, var1);
  15.       this.lbl = var2;
  16.    }
  17.  
  18.    Vset check(Environment var1, Context var2, Vset var3, Hashtable var4) {
  19.       ((Statement)this).reach(var1, var3);
  20.       CheckContext var5 = (CheckContext)(new Context(var2, this)).getContinueContext(this.lbl);
  21.       if (var5 != null) {
  22.          switch (var5.node.op) {
  23.             case 92:
  24.             case 93:
  25.             case 94:
  26.                if (var5.frameNumber != var2.frameNumber) {
  27.                   var1.error(super.where, "branch.to.uplevel", this.lbl);
  28.                }
  29.  
  30.                var5.vsContinue = var5.vsContinue.join(var3);
  31.                break;
  32.             default:
  33.                var1.error(super.where, "invalid.continue");
  34.          }
  35.       } else if (this.lbl != null) {
  36.          var1.error(super.where, "label.not.found", this.lbl);
  37.       } else {
  38.          var1.error(super.where, "invalid.continue");
  39.       }
  40.  
  41.       return Statement.DEAD_END;
  42.    }
  43.  
  44.    public int costInline(int var1, Environment var2, Context var3) {
  45.       return 1;
  46.    }
  47.  
  48.    public void code(Environment var1, Context var2, Assembler var3) {
  49.       CodeContext var4 = (CodeContext)var2.getContinueContext(this.lbl);
  50.       ((Statement)this).codeFinally(var1, var2, var3, var4, (Type)null);
  51.       var3.add(super.where, 167, var4.contLabel);
  52.    }
  53.  
  54.    public void print(PrintStream var1, int var2) {
  55.       super.print(var1, var2);
  56.       var1.print("continue");
  57.       if (this.lbl != null) {
  58.          var1.print(" " + this.lbl);
  59.       }
  60.  
  61.       var1.print(";");
  62.    }
  63. }
  64.