diff options
Diffstat (limited to 'java/com/google/turbine/main/Main.java')
-rw-r--r-- | java/com/google/turbine/main/Main.java | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/java/com/google/turbine/main/Main.java b/java/com/google/turbine/main/Main.java index 34984a8..c246a7a 100644 --- a/java/com/google/turbine/main/Main.java +++ b/java/com/google/turbine/main/Main.java @@ -18,6 +18,7 @@ package com.google.turbine.main; import static com.google.common.base.StandardSystemProperty.JAVA_SPECIFICATION_VERSION; import static java.nio.charset.StandardCharsets.UTF_8; +import static java.util.Objects.requireNonNull; import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; @@ -195,13 +196,23 @@ public final class Main { // TODO(cushon): parallelize Lowered lowered = Lower.lowerAll( - options.languageVersion(), bound.units(), bound.modules(), bound.classPathEnv()); + Lower.LowerOptions.builder() + .languageVersion(options.languageVersion()) + .emitPrivateFields(options.javacOpts().contains("-XDturbine.emitPrivateFields")) + .build(), + bound.units(), + bound.modules(), + bound.classPathEnv()); if (options.outputDeps().isPresent()) { DepsProto.Dependencies deps = Dependencies.collectDeps(options.targetLabel(), bootclasspath, bound, lowered); Path path = Paths.get(options.outputDeps().get()); - Files.createDirectories(path.getParent()); + /* + * TODO: cpovirk - Consider checking outputDeps for validity earlier so that anyone who + * `--output_deps=/` or similar will get a proper error instead of NPE. + */ + Files.createDirectories(requireNonNull(path.getParent())); try (OutputStream os = new BufferedOutputStream(Files.newOutputStream(path))) { deps.writeTo(os); } @@ -267,7 +278,7 @@ public final class Main { /* processorPath= */ options.processorPath(), /* builtinProcessors= */ options.builtinProcessors())), bootclasspath, - /* moduleVersion=*/ Optional.empty()); + /* moduleVersion= */ Optional.empty()); } private static void usage(TurbineOptions options) { @@ -314,17 +325,24 @@ public final class Main { /** Parse all source files and source jars. */ // TODO(cushon): parallelize private static ImmutableList<CompUnit> parseAll(TurbineOptions options) throws IOException { + return parseAll(options.sources(), options.sourceJars()); + } + + static ImmutableList<CompUnit> parseAll(Iterable<String> sources, Iterable<String> sourceJars) + throws IOException { ImmutableList.Builder<CompUnit> units = ImmutableList.builder(); - for (String source : options.sources()) { + for (String source : sources) { Path path = Paths.get(source); units.add(Parser.parse(new SourceFile(source, MoreFiles.asCharSource(path, UTF_8).read()))); } - for (String sourceJar : options.sourceJars()) { - for (Zip.Entry ze : new Zip.ZipIterable(Paths.get(sourceJar))) { - if (ze.name().endsWith(".java")) { - String name = ze.name(); - String source = new String(ze.data(), UTF_8); - units.add(Parser.parse(new SourceFile(name, source))); + for (String sourceJar : sourceJars) { + try (Zip.ZipIterable iterable = new Zip.ZipIterable(Paths.get(sourceJar))) { + for (Zip.Entry ze : iterable) { + if (ze.name().endsWith(".java")) { + String name = ze.name(); + String source = new String(ze.data(), UTF_8); + units.add(Parser.parse(new SourceFile(name, source))); + } } } } @@ -342,7 +360,8 @@ public final class Main { if (Files.isDirectory(path)) { for (SourceFile source : generatedSources.values()) { Path to = path.resolve(source.path()); - Files.createDirectories(to.getParent()); + // TODO: cpovirk - Consider checking gensrcOutput, similar to outputDeps. + Files.createDirectories(requireNonNull(to.getParent())); Files.writeString(to, source.source()); } return; @@ -367,7 +386,8 @@ public final class Main { if (Files.isDirectory(path)) { for (Map.Entry<String, byte[]> resource : generatedResources.entrySet()) { Path to = path.resolve(resource.getKey()); - Files.createDirectories(to.getParent()); + // TODO: cpovirk - Consider checking resourceOutput, similar to outputDeps. + Files.createDirectories(requireNonNull(to.getParent())); Files.write(to, resource.getValue()); } return; |