Minor, inline some CompileEnvironmentUtil utilities

This commit is contained in:
Alexander Udalov
2015-01-27 18:45:21 +03:00
parent 7e988b04b4
commit 2c8cad6628
2 changed files with 25 additions and 44 deletions
@@ -38,12 +38,10 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.backend.common.output.OutputFile; import org.jetbrains.kotlin.backend.common.output.OutputFile;
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys; import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys;
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity;
import org.jetbrains.kotlin.cli.common.messages.MessageCollector; import org.jetbrains.kotlin.cli.common.messages.MessageCollector;
import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil; import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil;
import org.jetbrains.kotlin.cli.common.modules.ModuleScriptData; import org.jetbrains.kotlin.cli.common.modules.ModuleScriptData;
import org.jetbrains.kotlin.cli.common.modules.ModuleXmlParser; import org.jetbrains.kotlin.cli.common.modules.ModuleXmlParser;
import org.jetbrains.kotlin.cli.common.output.outputUtils.OutputUtilsPackage;
import org.jetbrains.kotlin.cli.jvm.JVMConfigurationKeys; import org.jetbrains.kotlin.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.kotlin.codegen.ClassFileFactory; import org.jetbrains.kotlin.codegen.ClassFileFactory;
import org.jetbrains.kotlin.codegen.GeneratedClassLoader; import org.jetbrains.kotlin.codegen.GeneratedClassLoader;
@@ -74,12 +72,6 @@ import static org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.E
public class CompileEnvironmentUtil { public class CompileEnvironmentUtil {
@Nullable
private static File getRuntimeJarPath() {
File runtimePath = PathUtil.getKotlinPathsForCompiler().getRuntimePath();
return runtimePath.exists() ? runtimePath : null;
}
@NotNull @NotNull
public static ModuleScriptData loadModuleDescriptions(KotlinPaths paths, String moduleDefinitionFile, MessageCollector messageCollector) { public static ModuleScriptData loadModuleDescriptions(KotlinPaths paths, String moduleDefinitionFile, MessageCollector messageCollector) {
File file = new File(moduleDefinitionFile); File file = new File(moduleDefinitionFile);
@@ -219,27 +211,26 @@ public class CompileEnvironmentUtil {
} }
private static void writeRuntimeToJar(JarOutputStream stream) throws IOException { private static void writeRuntimeToJar(JarOutputStream stream) throws IOException {
File runtimeJarPath = getRuntimeJarPath(); File runtimePath = PathUtil.getKotlinPathsForCompiler().getRuntimePath();
if (runtimeJarPath != null) { if (!runtimePath.exists()) {
JarInputStream jis = new JarInputStream(new FileInputStream(runtimeJarPath)); throw new CompileEnvironmentException("Couldn't find runtime library");
try { }
while (true) {
JarEntry e = jis.getNextJarEntry(); JarInputStream jis = new JarInputStream(new FileInputStream(runtimePath));
if (e == null) { try {
break; while (true) {
} JarEntry e = jis.getNextJarEntry();
if (FileUtilRt.extensionEquals(e.getName(), "class")) { if (e == null) {
stream.putNextEntry(e); break;
FileUtil.copy(jis, stream); }
} if (FileUtilRt.extensionEquals(e.getName(), "class")) {
stream.putNextEntry(e);
FileUtil.copy(jis, stream);
} }
} }
finally {
jis.close();
}
} }
else { finally {
throw new CompileEnvironmentException("Couldn't find runtime library"); jis.close();
} }
} }
@@ -253,22 +244,6 @@ public class CompileEnvironmentUtil {
} }
} }
static void writeOutputToDirOrJar(
@Nullable File jar,
@Nullable File outputDir,
boolean includeRuntime,
@Nullable FqName mainClass,
@NotNull ClassFileFactory outputFiles,
@NotNull MessageCollector messageCollector
) {
if (jar != null) {
writeToJar(jar, includeRuntime, mainClass, outputFiles);
}
else {
OutputUtilsPackage.writeAll(outputFiles, outputDir == null ? new File(".") : outputDir, messageCollector);
}
}
@NotNull @NotNull
public static List<JetFile> getJetFiles( public static List<JetFile> getJetFiles(
@NotNull final Project project, @NotNull final Project project,
@@ -37,6 +37,7 @@ import org.jetbrains.kotlin.cli.common.CompilerPlugin;
import org.jetbrains.kotlin.cli.common.CompilerPluginContext; import org.jetbrains.kotlin.cli.common.CompilerPluginContext;
import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport; import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport;
import org.jetbrains.kotlin.cli.common.messages.MessageCollector; import org.jetbrains.kotlin.cli.common.messages.MessageCollector;
import org.jetbrains.kotlin.cli.common.output.outputUtils.OutputUtilsPackage;
import org.jetbrains.kotlin.cli.jvm.JVMConfigurationKeys; import org.jetbrains.kotlin.cli.jvm.JVMConfigurationKeys;
import org.jetbrains.kotlin.codegen.*; import org.jetbrains.kotlin.codegen.*;
import org.jetbrains.kotlin.codegen.state.GenerationState; import org.jetbrains.kotlin.codegen.state.GenerationState;
@@ -100,8 +101,13 @@ public class KotlinToJVMBytecodeCompiler {
boolean jarRuntime, boolean jarRuntime,
@Nullable FqName mainClass @Nullable FqName mainClass
) { ) {
MessageCollector messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE); if (jarPath != null) {
CompileEnvironmentUtil.writeOutputToDirOrJar(jarPath, outputDir, jarRuntime, mainClass, outputFiles, messageCollector); CompileEnvironmentUtil.writeToJar(jarPath, jarRuntime, mainClass, outputFiles);
}
else {
MessageCollector messageCollector = configuration.get(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, MessageCollector.NONE);
OutputUtilsPackage.writeAll(outputFiles, outputDir == null ? new File(".") : outputDir, messageCollector);
}
} }
public static boolean compileModules( public static boolean compileModules(