< prev index next >

src/jdk.compiler/share/classes/com/sun/tools/javac/code/Scope.java

Print this page
rev 3028 : JDK-8058150

*** 954,987 **** } @Override public Iterable<Symbol> getSymbols(final Filter<Symbol> sf, final LookupKind lookupKind) { ! return new Iterable<Symbol>() { ! public Iterator<Symbol> iterator() { ! return new CompoundScopeIterator(subScopes) { ! Iterator<Symbol> nextIterator(Scope s) { ! return s.getSymbols(sf, lookupKind).iterator(); ! } ! }; ! } ! }; } @Override public Iterable<Symbol> getSymbolsByName(final Name name, final Filter<Symbol> sf, final LookupKind lookupKind) { ! return new Iterable<Symbol>() { ! public Iterator<Symbol> iterator() { ! return new CompoundScopeIterator(subScopes) { ! Iterator<Symbol> nextIterator(Scope s) { ! return s.getSymbolsByName(name, sf, lookupKind).iterator(); ! } ! }; ! } ! }; } @Override public Scope getOrigin(Symbol sym) { for (Scope delegate : subScopes) { --- 954,978 ---- } @Override public Iterable<Symbol> getSymbols(final Filter<Symbol> sf, final LookupKind lookupKind) { ! return () -> Iterators.createCompoundIterator(subScopes, ! scope -> scope.getSymbols(sf, ! lookupKind) ! .iterator()); } @Override public Iterable<Symbol> getSymbolsByName(final Name name, final Filter<Symbol> sf, final LookupKind lookupKind) { ! return () -> Iterators.createCompoundIterator(subScopes, ! scope -> scope.getSymbolsByName(name, ! sf, ! lookupKind) ! .iterator()); } @Override public Scope getOrigin(Symbol sym) { for (Scope delegate : subScopes) {
*** 1000,1046 **** } return false; } - abstract class CompoundScopeIterator implements Iterator<Symbol> { - - private Iterator<Symbol> currentIterator; - private List<Scope> scopesToScan; - - public CompoundScopeIterator(List<Scope> scopesToScan) { - this.scopesToScan = scopesToScan; - update(); - } - - abstract Iterator<Symbol> nextIterator(Scope s); - - public boolean hasNext() { - return currentIterator != null; - } - - public Symbol next() { - Symbol sym = currentIterator.next(); - if (!currentIterator.hasNext()) { - update(); - } - return sym; - } - - public void remove() { - throw new UnsupportedOperationException(); - } - - private void update() { - while (scopesToScan.nonEmpty()) { - currentIterator = nextIterator(scopesToScan.head); - scopesToScan = scopesToScan.tail; - if (currentIterator.hasNext()) return; - } - currentIterator = null; - } - } } /** An error scope, for which the owner should be an error symbol. */ public static class ErrorScope extends ScopeImpl { ErrorScope(ScopeImpl next, Symbol errSymbol, Entry[] table) { --- 991,1000 ----
< prev index next >