src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacScope.java
changeset 49197 cc2673fa8c20
parent 47216 71c04702a3d5
child 50287 64c880300d9b
--- a/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacScope.java	Fri Mar 09 11:36:12 2018 +0800
+++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/api/JavacScope.java	Fri Mar 09 09:42:10 2018 +0100
@@ -30,11 +30,14 @@
 import javax.lang.model.element.ExecutableElement;
 import javax.lang.model.element.TypeElement;
 
+import com.sun.tools.javac.code.Kinds.Kind;
+import com.sun.tools.javac.code.Symbol;
 import com.sun.tools.javac.comp.AttrContext;
 import com.sun.tools.javac.comp.Env;
 import com.sun.tools.javac.util.DefinedBy;
 import com.sun.tools.javac.util.DefinedBy.Api;
 import com.sun.tools.javac.util.Assert;
+import com.sun.tools.javac.util.Filter;
 
 /**
  * Provides an implementation of Scope.
@@ -48,6 +51,11 @@
  */
 public class JavacScope implements com.sun.source.tree.Scope {
 
+    private static final Filter<Symbol> VALIDATOR = sym -> {
+        sym.apiComplete();
+        return sym.kind != Kind.ERR;
+    };
+
     static JavacScope create(Env<AttrContext> env) {
         if (env.outer == null || env.outer == env) {
             //the "top-level" scope needs to return both imported and defined elements
@@ -55,7 +63,7 @@
             return new JavacScope(env) {
                 @Override @DefinedBy(Api.COMPILER_TREE)
                 public Iterable<? extends Element> getLocalElements() {
-                    return env.toplevel.namedImportScope.getSymbols();
+                    return env.toplevel.namedImportScope.getSymbols(VALIDATOR);
                 }
             };
         } else {
@@ -85,7 +93,7 @@
                 }
                 @DefinedBy(Api.COMPILER_TREE)
                 public Iterable<? extends Element> getLocalElements() {
-                    return env.toplevel.starImportScope.getSymbols();
+                    return env.toplevel.starImportScope.getSymbols(VALIDATOR);
                 }
             };
         }