Index: UnitCompiler.java =================================================================== RCS file: /cvs/janino/janino/src/org/codehaus/janino/UnitCompiler.java,v retrieving revision 1.34 diff -u -r1.34 UnitCompiler.java --- UnitCompiler.java 26 Jun 2006 21:49:50 -0000 1.34 +++ UnitCompiler.java 18 Jul 2006 00:44:21 -0000 @@ -39,6 +39,7 @@ import org.codehaus.janino.util.*; import org.codehaus.janino.util.enumerator.*; +import org.codehaus.janino.util.iterator.ScopeIterator; /** * This class actually implements the JavaTM compiler. It is @@ -834,10 +835,9 @@ Java.BreakableStatement brokenStatement = null; if (bs.optionalLabel == null) { for ( - Java.Scope s = bs.getEnclosingScope(); - s instanceof Java.Statement || s instanceof Java.CatchClause; - s = s.getEnclosingScope() + ScopeIterator si = new ScopeIterator(bs); si.hasNext(); ) { + Java.Scope s = (Java.Scope) si.next(); if (s instanceof Java.BreakableStatement) { brokenStatement = (Java.BreakableStatement) s; break; @@ -849,10 +849,9 @@ } } else { for ( - Java.Scope s = bs.getEnclosingScope(); - s instanceof Java.Statement || s instanceof Java.CatchClause; - s = s.getEnclosingScope() + ScopeIterator si = new ScopeIterator(bs); si.hasNext(); ) { + Java.Scope s = (Java.Scope) si.next(); if (s instanceof Java.LabeledStatement) { Java.LabeledStatement ls = (Java.LabeledStatement) s; if (ls.label.equals(bs.optionalLabel)) { @@ -881,10 +880,9 @@ Java.ContinuableStatement continuedStatement = null; if (cs.optionalLabel == null) { for ( - Java.Scope s = cs.getEnclosingScope(); - s instanceof Java.Statement; - s = s.getEnclosingScope() + ScopeIterator si = new ScopeIterator(cs); si.hasNext(); ) { + Java.Scope s = (Java.Scope) si.next(); if (s instanceof Java.ContinuableStatement) { continuedStatement = (Java.ContinuableStatement) s; break; @@ -896,10 +894,9 @@ } } else { for ( - Java.Scope s = cs.getEnclosingScope(); - s instanceof Java.Statement; - s = s.getEnclosingScope() + ScopeIterator si = new ScopeIterator(cs); si.hasNext(); ) { + Java.Scope s = (Java.Scope) si.next(); if (s instanceof Java.LabeledStatement) { Java.LabeledStatement ls = (Java.LabeledStatement) s; if (ls.label.equals(cs.optionalLabel)) {