CLI & JPS: use List instead Set for libraries and decencies.

This commit is contained in:
Zalim Bashorov
2013-10-22 12:51:00 +04:00
parent 22dde719de
commit 4d68262b7f
3 changed files with 11 additions and 10 deletions
@@ -33,7 +33,6 @@ import org.jetbrains.jet.cli.common.messages.MessageCollectorUtil;
import java.io.File; import java.io.File;
import java.io.PrintStream; import java.io.PrintStream;
import java.util.List; import java.util.List;
import java.util.Set;
public class KotlinCompilerRunner { public class KotlinCompilerRunner {
private static final String K2JVM_COMPILER = "org.jetbrains.jet.cli.jvm.K2JVMCompiler"; private static final String K2JVM_COMPILER = "org.jetbrains.jet.cli.jvm.K2JVMCompiler";
@@ -62,7 +61,7 @@ public class KotlinCompilerRunner {
CompilerEnvironment environment, CompilerEnvironment environment,
OutputItemsCollector collector, OutputItemsCollector collector,
List<File> sourceFiles, List<File> sourceFiles,
Set<String> libraryFiles, List<String> libraryFiles,
File outputFile File outputFile
) { ) {
K2JSCompilerArguments arguments = mergeBeans(commonArguments, k2jsArguments); K2JSCompilerArguments arguments = mergeBeans(commonArguments, k2jsArguments);
@@ -147,7 +146,7 @@ public class KotlinCompilerRunner {
private static void setupK2JsSettings( private static void setupK2JsSettings(
File outputFile, File outputFile,
List<File> sourceFiles, List<File> sourceFiles,
Set<String> libraryFiles, List<String> libraryFiles,
K2JSCompilerArguments settings K2JSCompilerArguments settings
) { ) {
setupCommonSettings(settings); setupCommonSettings(settings);
@@ -29,34 +29,36 @@ import org.jetbrains.jps.model.module.JpsModule;
import org.jetbrains.jps.model.module.JpsModuleSourceRoot; import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
import org.jetbrains.jps.util.JpsPathUtil; import org.jetbrains.jps.util.JpsPathUtil;
import java.util.HashSet; import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set; import java.util.Set;
class JpsJsModuleUtils { class JpsJsModuleUtils {
private JpsJsModuleUtils() {} private JpsJsModuleUtils() {}
@NotNull @NotNull
static Set<String> getLibraryFilesAndDependencies(@NotNull ModuleBuildTarget target) { static List<String> getLibraryFilesAndDependencies(@NotNull ModuleBuildTarget target) {
Set<String> result = new HashSet<String>(); List<String> result = new ArrayList<String>();
getLibraryFiles(target, result); getLibraryFiles(target, result);
getDependencyModulesAndSources(target, result); getDependencyModulesAndSources(target, result);
return result; return result;
} }
static void getLibraryFiles(@NotNull ModuleBuildTarget target, @NotNull Set<String> result) { static void getLibraryFiles(@NotNull ModuleBuildTarget target, @NotNull List<String> result) {
Set<JpsLibrary> libraries = JpsUtils.getAllDependencies(target).getLibraries(); Set<JpsLibrary> libraries = JpsUtils.getAllDependencies(target).getLibraries();
for (JpsLibrary library : libraries) { for (JpsLibrary library : libraries) {
for (JpsLibraryRoot root : library.getRoots(JpsOrderRootType.COMPILED)) { for (JpsLibraryRoot root : library.getRoots(JpsOrderRootType.COMPILED)) {
String path = JpsPathUtil.urlToOsPath(root.getUrl()); String path = JpsPathUtil.urlToOsPath(root.getUrl());
// TODO: Do we need to add to dependency all libraries? // TODO: Do we need to add to dependency all libraries?
if (LibraryUtils.isJsRuntimeLibrary(JpsPathUtil.urlToFile(path))) { if (LibraryUtils.isJsRuntimeLibrary(new File(path))) {
result.add(path); result.add(path);
} }
} }
} }
} }
static void getDependencyModulesAndSources(@NotNull final ModuleBuildTarget target, @NotNull final Set<String> result) { static void getDependencyModulesAndSources(@NotNull final ModuleBuildTarget target, @NotNull final List<String> result) {
JpsUtils.getAllDependencies(target).processModules(new Consumer<JpsModule>() { JpsUtils.getAllDependencies(target).processModules(new Consumer<JpsModule>() {
@Override @Override
public void consume(JpsModule module) { public void consume(JpsModule module) {
@@ -138,7 +138,7 @@ public class KotlinBuilder extends ModuleLevelBuilder {
} }
File outputFile = new File(outputDir, representativeTarget.getModule().getName() + ".js"); File outputFile = new File(outputDir, representativeTarget.getModule().getName() + ".js");
Set<String> libraryFiles = JpsJsModuleUtils.getLibraryFilesAndDependencies(representativeTarget); List<String> libraryFiles = JpsJsModuleUtils.getLibraryFilesAndDependencies(representativeTarget);
K2JSCompilerArguments k2JsSettings = JpsKotlinCompilerSettings.getK2JsSettings(project); K2JSCompilerArguments k2JsSettings = JpsKotlinCompilerSettings.getK2JsSettings(project);
runK2JsCompiler(commonSettings, k2JsSettings, messageCollector, environment, outputItemCollector, sourceFiles, libraryFiles, outputFile); runK2JsCompiler(commonSettings, k2JsSettings, messageCollector, environment, outputItemCollector, sourceFiles, libraryFiles, outputFile);