home *** CD-ROM | disk | FTP | other *** search
- package espresso;
-
- import java.util.Vector;
-
- class Jump extends AST {
- Vector finalizers = new Vector();
-
- JumpTarget findTarget(Env var1, Name var2) {
- JumpTarget var3 = null;
- Env var4 = var1;
- if (var2 != null) {
- while(true) {
- if (var4 == null || var4.parent.tag == 15 || var4.parent.tag == 67 || var4.parent.tag == 14 && ((Labelled)var4.parent).label.equals(var2)) {
- if (var4 != null && var4.parent.tag == 14) {
- var3 = (JumpTarget)var4.parent;
- break;
- }
-
- Report.error(super.pos, String.valueOf("undefined label: ").concat(String.valueOf(var2)));
- break;
- }
-
- if (var4.parent.tag == 18) {
- this.finalizers.addElement(var4.parent);
- }
-
- var4 = var4.next;
- }
- } else {
- for(; var4 != null && var4.parent.tag != 15 && var4.parent.tag != 67 && var4.parent.tag != 11 && var4.parent.tag != 10 && var4.parent.tag != 8 && (super.tag != 23 || var4.parent.tag != 21); var4 = var4.next) {
- if (var4.parent.tag == 18) {
- this.finalizers.addElement(var4.parent);
- }
- }
-
- if (var4 != null && var4.parent.tag != 15 && var4.parent.tag != 67) {
- var3 = (JumpTarget)var4.parent;
- } else if (super.tag == 23) {
- Report.error(super.pos, "break outside of loop or switch");
- } else {
- Report.error(super.pos, "continue outside of loop");
- }
- }
-
- return var3;
- }
-
- void finalisation() {
- for(int var1 = 0; var1 < this.finalizers.size(); ++var1) {
- ((Try)this.finalizers.elementAt(var1)).finalisation();
- }
-
- }
-
- void markCaptured(Bits var1) {
- for(int var2 = 0; var2 < this.finalizers.size(); ++var2) {
- ((Try)this.finalizers.elementAt(var2)).captured.orSet(var1);
- }
-
- }
-
- Jump(int var1, int var2) {
- super(var1, var2);
- }
- }
-