Trap t = null;
if (target instanceof JSScope && key.equals("cascade")) {
- Trap.TrapScope ts = null;
+ Trap.TrapScope ts = null;
JSScope p = (JSScope)target; // search the scope-path for the trap
- if (target instanceof Trap.TrapScope) {
+ if (target instanceof Trap.TrapScope) {
ts = (Trap.TrapScope)target;
- }
- else {
- while (ts == null && p.getParentScope() != null) {
- p = p.getParentScope();
- if (p instanceof Trap.TrapScope) {
- ts = (Trap.TrapScope)p;
- }
- }
- }
- t = ts.t.next;
- ts.cascadeHappened = true;
- while (t != null && t.f.numFormalArgs == 0) t = t.next;
- if (t == null) { target = ts.t.trapee; key = ts.t.name; }
-
- } else if (target instanceof JS) {
+ } else {
+ while (ts == null && p.getParentScope() != null) {
+ p = p.getParentScope();
+ if (p instanceof Trap.TrapScope) ts = (Trap.TrapScope)p;
+ }
+ }
+ if(ts != null) {
+ t = ts.t.next;
+ ts.cascadeHappened = true;
+ while (t != null && t.f.numFormalArgs == 0) t = t.next;
+ if (t == null) { target = ts.t.trapee; key = ts.t.name; }
+ }
+ }
+ if(t == null) {
if (target instanceof JSScope) {
JSScope p = (JSScope)target; // search the scope-path for the trap
t = p.getTrap(key);