From 06549c64133774084ffa4e1cbdfa73b3b082d7b9 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Fri, 11 Oct 2013 15:48:36 +0400 Subject: [PATCH] JPS: switch to using *CompilerArgument classes(from IDEA Project Settings) in build. Original commit: 5e0ef68d6445fee8c258f2bfead1062c5b176c18 --- .../jet/jps/JpsKotlinCompilerSettings.java | 39 ++++--------------- .../jet/jps/build/KotlinBuilder.java | 30 ++++++++------ 2 files changed, 26 insertions(+), 43 deletions(-) diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/JpsKotlinCompilerSettings.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/JpsKotlinCompilerSettings.java index b46de016e22..2ca6b28331f 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/JpsKotlinCompilerSettings.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/JpsKotlinCompilerSettings.java @@ -16,8 +16,6 @@ package org.jetbrains.jet.jps; -import com.intellij.util.xmlb.Accessor; -import com.intellij.util.xmlb.XmlSerializerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.cli.common.arguments.CommonCompilerArguments; import org.jetbrains.jet.cli.common.arguments.K2JSCompilerArguments; @@ -73,49 +71,28 @@ public class JpsKotlinCompilerSettings extends JpsElementBase T merge(@NotNull CommonCompilerArguments from, @NotNull T to) { - Class fromClass = CommonCompilerArguments.class; - - assert fromClass.isAssignableFrom(to.getClass()) : to.getClass() + " is not assignable to " + fromClass; - - T mergedCopy = XmlSerializerUtil.createCopy(to); - - for (Accessor accessor : XmlSerializerUtil.getAccessors(fromClass)) { - accessor.write(mergedCopy, accessor.read(from)); - } - - return mergedCopy; + getOrCreateSettings(project).k2JsCompilerSettings = k2JsCompilerSettings; } } diff --git a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java index 24f12b14800..5c47f983ee1 100644 --- a/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java +++ b/jps/jps-plugin/src/org/jetbrains/jet/jps/build/KotlinBuilder.java @@ -21,10 +21,14 @@ import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.cli.common.KotlinVersion; +import org.jetbrains.jet.cli.common.arguments.CommonCompilerArguments; +import org.jetbrains.jet.cli.common.arguments.K2JSCompilerArguments; +import org.jetbrains.jet.cli.common.arguments.K2JVMCompilerArguments; import org.jetbrains.jet.cli.common.messages.CompilerMessageLocation; import org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity; import org.jetbrains.jet.cli.common.messages.MessageCollector; import org.jetbrains.jet.compiler.runner.*; +import org.jetbrains.jet.jps.JpsKotlinCompilerSettings; import org.jetbrains.jet.utils.PathUtil; import org.jetbrains.jps.ModuleChunk; import org.jetbrains.jps.builders.DirtyFilesHolder; @@ -33,6 +37,7 @@ import org.jetbrains.jps.incremental.*; import org.jetbrains.jps.incremental.java.JavaBuilder; import org.jetbrains.jps.incremental.messages.BuildMessage; import org.jetbrains.jps.incremental.messages.CompilerMessage; +import org.jetbrains.jps.model.JpsProject; import org.jetbrains.jps.model.module.JpsModule; import java.io.File; @@ -42,11 +47,15 @@ import java.lang.reflect.Modifier; import java.util.Collection; import java.util.Collections; import java.util.List; +import java.util.Set; import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.EXCEPTION; import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.INFO; import static org.jetbrains.jet.cli.common.messages.CompilerMessageSeverity.WARNING; +import static org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runK2JsCompiler; +import static org.jetbrains.jet.compiler.runner.KotlinCompilerRunner.runK2JvmCompiler; + public class KotlinBuilder extends ModuleLevelBuilder { private static final String KOTLIN_BUILDER_NAME = "Kotlin Builder"; @@ -104,6 +113,9 @@ public class KotlinBuilder extends ModuleLevelBuilder { OutputItemsCollectorImpl outputItemCollector = new OutputItemsCollectorImpl(outputDir); + JpsProject project = representativeTarget.getModule().getProject(); + CommonCompilerArguments commonSettings = JpsKotlinCompilerSettings.getCommonSettings(project); + if (JpsUtils.isJsKotlinModule(representativeTarget)) { if (chunk.getModules().size() > 1) { // We do not support circular dependencies, but if they are present, we do our best should not break the build, @@ -124,14 +136,10 @@ public class KotlinBuilder extends ModuleLevelBuilder { } File outputFile = new File(outputDir, representativeTarget.getModule().getName() + ".js"); + Set libraryFiles = JpsJsModuleUtils.getLibraryFilesAndDependencies(representativeTarget); + K2JSCompilerArguments k2JsSettings = JpsKotlinCompilerSettings.getK2JsSettings(project); - KotlinCompilerRunner.runK2JsCompiler( - messageCollector, - environment, - outputItemCollector, - sourceFiles, - JpsJsModuleUtils.getLibraryFilesAndDependencies(representativeTarget), - outputFile); + runK2JsCompiler(commonSettings, k2JsSettings, messageCollector, environment, outputItemCollector, sourceFiles, libraryFiles, outputFile); } else { if (chunk.getModules().size() > 1) { @@ -148,11 +156,9 @@ public class KotlinBuilder extends ModuleLevelBuilder { return ExitCode.NOTHING_DONE; } - KotlinCompilerRunner.runK2JvmCompiler( - messageCollector, - environment, - moduleFile, - outputItemCollector); + K2JVMCompilerArguments k2JvmSettings = JpsKotlinCompilerSettings.getK2JvmSettings(project); + + runK2JvmCompiler(commonSettings, k2JvmSettings, messageCollector, environment, moduleFile, outputItemCollector); } for (SimpleOutputItem outputItem : outputItemCollector.getOutputs()) {