# HG changeset patch # User jlahoda # Date 1509970243 -3600 # Node ID cf8310446245e8e9350ef6efc87a8688e5125c3a # Parent be620a59137967c55008c9683a2d9fa2b1c4f3a2 8139607: -release option forces StandardJavaFileManager Summary: Merging a --release specific file manager with the user-provided one, rather than altering the user-provided one. Reviewed-by: jjg, mcimadamore diff -r be620a591379 -r cf8310446245 src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Mon Oct 30 21:23:10 2017 +0100 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/code/ClassFinder.java Mon Nov 06 13:10:43 2017 +0100 @@ -63,6 +63,7 @@ import static com.sun.tools.javac.code.Flags.*; import static com.sun.tools.javac.code.Kinds.Kind.*; +import com.sun.tools.javac.main.DelegatingJavaFileManager; import com.sun.tools.javac.util.Dependencies.CompletionCause; @@ -104,11 +105,6 @@ */ protected boolean userPathsFirst; - /** - * Switch: should read OTHER classfiles (.sig files) from PLATFORM_CLASS_PATH. - */ - private boolean allowSigFiles; - /** The log to use for verbose output */ final Log log; @@ -198,7 +194,6 @@ cacheCompletionFailure = options.isUnset("dev"); preferSource = "source".equals(options.get("-Xprefer")); userPathsFirst = options.isSet(Option.XXUSERPATHSFIRST); - allowSigFiles = context.get(PlatformDescription.class) != null; completionFailureName = options.isSet("failcomplete") @@ -208,6 +203,9 @@ // Temporary, until more info is available from the module system. boolean useCtProps; JavaFileManager fm = context.get(JavaFileManager.class); + if (fm instanceof DelegatingJavaFileManager) { + fm = ((DelegatingJavaFileManager) fm).getBaseFileManager(); + } if (fm instanceof JavacFileManager) { JavacFileManager jfm = (JavacFileManager) fm; useCtProps = jfm.isDefaultBootClassPath() && jfm.isSymbolFileEnabled(); @@ -350,8 +348,7 @@ if (verbose) { log.printVerbose("loading", currentClassFile.getName()); } - if (classfile.getKind() == JavaFileObject.Kind.CLASS || - classfile.getKind() == JavaFileObject.Kind.OTHER) { + if (classfile.getKind() == JavaFileObject.Kind.CLASS) { reader.readClassFile(c); c.flags_field |= getSupplementaryFlags(c); } else { @@ -454,7 +451,7 @@ q.flags_field |= EXISTS; JavaFileObject.Kind kind = file.getKind(); int seen; - if (kind == JavaFileObject.Kind.CLASS || kind == JavaFileObject.Kind.OTHER) + if (kind == JavaFileObject.Kind.CLASS) seen = CLASS_SEEN; else seen = SOURCE_SEEN; @@ -695,9 +692,7 @@ list(PLATFORM_CLASS_PATH, p, p.fullname.toString(), - allowSigFiles ? EnumSet.of(JavaFileObject.Kind.CLASS, - JavaFileObject.Kind.OTHER) - : EnumSet.of(JavaFileObject.Kind.CLASS))); + EnumSet.of(JavaFileObject.Kind.CLASS))); } // where @SuppressWarnings("fallthrough") @@ -709,11 +704,8 @@ for (JavaFileObject fo : files) { switch (fo.getKind()) { case OTHER: - if (!isSigFile(location, fo)) { - extraFileActions(p, fo); - break; - } - //intentional fall-through: + extraFileActions(p, fo); + break; case CLASS: case SOURCE: { // TODO pass binaryName to includeClassFile @@ -731,12 +723,6 @@ } } - boolean isSigFile(Location location, JavaFileObject fo) { - return location == PLATFORM_CLASS_PATH && - allowSigFiles && - fo.getName().endsWith(".sig"); - } - Iterable list(Location location, PackageSymbol p, String packageName, @@ -755,8 +741,7 @@ JavaFileObject fo = original.next(); if (fo.getKind() != Kind.CLASS && - fo.getKind() != Kind.SOURCE && - !isSigFile(currentLoc, fo)) { + fo.getKind() != Kind.SOURCE) { p.flags_field |= Flags.HAS_RESOURCE; } diff -r be620a591379 -r cf8310446245 src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Mon Oct 30 21:23:10 2017 +0100 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Mon Nov 06 13:10:43 2017 +0100 @@ -751,6 +751,11 @@ return locations.hasLocation(location); } + protected boolean hasExplicitLocation(Location location) { + nullCheck(location); + return locations.hasExplicitLocation(location); + } + @Override @DefinedBy(Api.COMPILER) public JavaFileObject getJavaFileForInput(Location location, String className, diff -r be620a591379 -r cf8310446245 src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java --- a/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Mon Oct 30 21:23:10 2017 +0100 +++ b/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Mon Nov 06 13:10:43 2017 +0100 @@ -452,6 +452,8 @@ return (getPaths() != null); } + abstract boolean isExplicit(); + /** * @see StandardJavaFileManager#getLocation */ @@ -510,6 +512,8 @@ final Location location; final Set