langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java
changeset 31299 81ce5febcae8
parent 31212 edf65e25e066
child 31560 3a71b9271010
--- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java	Wed Jun 24 15:15:56 2015 -0700
+++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Check.java	Sun Jun 28 12:58:24 2015 +0530
@@ -37,6 +37,7 @@
 import com.sun.tools.javac.resources.CompilerProperties.Fragments;
 import com.sun.tools.javac.tree.*;
 import com.sun.tools.javac.util.*;
+import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
 import com.sun.tools.javac.util.List;
 
@@ -3612,6 +3613,18 @@
         }
     }
 
+    // Check that packages imported are in scope (JLS 7.4.3, 6.3, 6.5.3.1, 6.5.3.2)
+    public void checkImportedPackagesObservable(final JCCompilationUnit toplevel) {
+        for (JCImport imp : toplevel.getImports()) {
+            if (!imp.staticImport && TreeInfo.name(imp.qualid) == names.asterisk) {
+                TypeSymbol tsym = ((JCFieldAccess)imp.qualid).selected.type.tsym;
+                if (tsym.kind == PCK && tsym.members().isEmpty() && !tsym.exists()) {
+                    log.error(DiagnosticFlag.RESOLVE_ERROR, imp.pos, "doesnt.exist", tsym);
+                }
+            }
+        }
+    }
+
     private boolean checkTypeContainsImportableElement(TypeSymbol tsym, TypeSymbol origin, PackageSymbol packge, Name name, Set<Symbol> processed) {
         if (tsym == null || !processed.add(tsym))
             return false;