42 import com.sun.tools.javac.util.*; |
42 import com.sun.tools.javac.util.*; |
43 import com.sun.tools.javac.util.DefinedBy.Api; |
43 import com.sun.tools.javac.util.DefinedBy.Api; |
44 |
44 |
45 import com.sun.tools.javac.code.Symbol.*; |
45 import com.sun.tools.javac.code.Symbol.*; |
46 import com.sun.tools.javac.code.Type.*; |
46 import com.sun.tools.javac.code.Type.*; |
|
47 import com.sun.tools.javac.resources.CompilerProperties.Errors; |
47 import com.sun.tools.javac.tree.JCTree.*; |
48 import com.sun.tools.javac.tree.JCTree.*; |
48 |
49 |
49 import static com.sun.tools.javac.code.Flags.*; |
50 import static com.sun.tools.javac.code.Flags.*; |
50 import static com.sun.tools.javac.code.Flags.ANNOTATION; |
51 import static com.sun.tools.javac.code.Flags.ANNOTATION; |
51 import static com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE; |
52 import static com.sun.tools.javac.code.Scope.LookupKind.NON_RECURSIVE; |
52 import static com.sun.tools.javac.code.Kinds.Kind.*; |
53 import static com.sun.tools.javac.code.Kinds.Kind.*; |
53 import static com.sun.tools.javac.code.TypeTag.CLASS; |
54 import static com.sun.tools.javac.code.TypeTag.CLASS; |
54 import static com.sun.tools.javac.code.TypeTag.ERROR; |
55 import static com.sun.tools.javac.code.TypeTag.ERROR; |
|
56 import com.sun.tools.javac.resources.CompilerProperties.Fragments; |
55 import static com.sun.tools.javac.tree.JCTree.Tag.*; |
57 import static com.sun.tools.javac.tree.JCTree.Tag.*; |
56 |
58 |
57 import com.sun.tools.javac.util.Dependencies.CompletionCause; |
59 import com.sun.tools.javac.util.Dependencies.CompletionCause; |
58 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag; |
60 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag; |
59 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; |
61 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; |
337 chk.importAccessible(sym, packge); |
339 chk.importAccessible(sym, packge); |
338 |
340 |
339 // Import-on-demand java.lang. |
341 // Import-on-demand java.lang. |
340 PackageSymbol javaLang = syms.enterPackage(syms.java_base, names.java_lang); |
342 PackageSymbol javaLang = syms.enterPackage(syms.java_base, names.java_lang); |
341 if (javaLang.members().isEmpty() && !javaLang.exists()) |
343 if (javaLang.members().isEmpty() && !javaLang.exists()) |
342 throw new FatalError(diags.fragment("fatal.err.no.java.lang")); |
344 throw new FatalError(diags.fragment(Fragments.FatalErrNoJavaLang)); |
343 importAll(make.at(tree.pos()).Import(make.QualIdent(javaLang), false), javaLang, env); |
345 importAll(make.at(tree.pos()).Import(make.QualIdent(javaLang), false), javaLang, env); |
344 |
346 |
345 JCModuleDecl decl = tree.getModuleDecl(); |
347 JCModuleDecl decl = tree.getModuleDecl(); |
346 |
348 |
347 // Process the package def and all import clauses. |
349 // Process the package def and all import clauses. |
376 p.owner.complete(); // enter all class members of p |
378 p.owner.complete(); // enter all class members of p |
377 //need to lookup the owning module/package: |
379 //need to lookup the owning module/package: |
378 PackageSymbol pack = syms.lookupPackage(env.toplevel.modle, p.owner.getQualifiedName()); |
380 PackageSymbol pack = syms.lookupPackage(env.toplevel.modle, p.owner.getQualifiedName()); |
379 if (syms.getClass(pack.modle, p.getQualifiedName()) != null) { |
381 if (syms.getClass(pack.modle, p.getQualifiedName()) != null) { |
380 log.error(tree.pos, |
382 log.error(tree.pos, |
381 "pkg.clashes.with.class.of.same.name", |
383 Errors.PkgClashesWithClassOfSameName(p)); |
382 p); |
|
383 } |
384 } |
384 p = p.owner; |
385 p = p.owner; |
385 } |
386 } |
386 } |
387 } |
387 // process package annotations |
388 // process package annotations |
469 private void importNamedStatic(final JCImport imp, |
470 private void importNamedStatic(final JCImport imp, |
470 final TypeSymbol tsym, |
471 final TypeSymbol tsym, |
471 final Name name, |
472 final Name name, |
472 final Env<AttrContext> env) { |
473 final Env<AttrContext> env) { |
473 if (tsym.kind != TYP) { |
474 if (tsym.kind != TYP) { |
474 log.error(DiagnosticFlag.RECOVERABLE, imp.pos(), "static.imp.only.classes.and.interfaces"); |
475 log.error(DiagnosticFlag.RECOVERABLE, imp.pos(), Errors.StaticImpOnlyClassesAndInterfaces); |
475 return; |
476 return; |
476 } |
477 } |
477 |
478 |
478 final NamedImportScope toScope = env.toplevel.namedImportScope; |
479 final NamedImportScope toScope = env.toplevel.namedImportScope; |
479 final Scope originMembers = tsym.members(); |
480 final Scope originMembers = tsym.members(); |
829 // but admit classes in the unnamed package which have the same |
830 // but admit classes in the unnamed package which have the same |
830 // name as a top-level package. |
831 // name as a top-level package. |
831 if (checkClash && |
832 if (checkClash && |
832 sym.owner.kind == PCK && sym.owner != env.toplevel.modle.unnamedPackage && |
833 sym.owner.kind == PCK && sym.owner != env.toplevel.modle.unnamedPackage && |
833 syms.packageExists(env.toplevel.modle, sym.fullname)) { |
834 syms.packageExists(env.toplevel.modle, sym.fullname)) { |
834 log.error(tree.pos, "clash.with.pkg.of.same.name", Kinds.kindName(sym), sym); |
835 log.error(tree.pos, Errors.ClashWithPkgOfSameName(Kinds.kindName(sym),sym)); |
835 } |
836 } |
836 if (sym.owner.kind == PCK && (sym.flags_field & PUBLIC) == 0 && |
837 if (sym.owner.kind == PCK && (sym.flags_field & PUBLIC) == 0 && |
837 !env.toplevel.sourcefile.isNameCompatible(sym.name.toString(),JavaFileObject.Kind.SOURCE)) { |
838 !env.toplevel.sourcefile.isNameCompatible(sym.name.toString(),JavaFileObject.Kind.SOURCE)) { |
838 sym.flags_field |= AUXILIARY; |
839 sym.flags_field |= AUXILIARY; |
839 } |
840 } |