From e7aebcc4517cb63f098224e9eb21b67c2f89a764 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Thu, 27 Oct 2016 15:52:41 +0300 Subject: [PATCH] Kotlin Facet: Get rid of copy constructors for compiler arguments/settings and use reflection-based copying instead Original commit: d0de9dd43ca2482fdaf042f665a8873e486aec10 --- .../kotlin/config/CompilerSettings.kt | 10 ----- .../compilerRunner/KotlinCompilerRunner.kt | 38 +------------------ 2 files changed, 2 insertions(+), 46 deletions(-) diff --git a/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt b/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt index b985feadcdd..1fedf41bc12 100644 --- a/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt +++ b/jps/jps-common/src/org/jetbrains/kotlin/config/CompilerSettings.kt @@ -23,16 +23,6 @@ class CompilerSettings { var copyJsLibraryFiles: Boolean = true var outputDirectoryForJsLibraryFiles: String = DEFAULT_OUTPUT_DIRECTORY - constructor() - - constructor(settings: CompilerSettings) { - additionalArguments = settings.additionalArguments - scriptTemplates = settings.scriptTemplates - scriptTemplatesClasspath = settings.scriptTemplatesClasspath - copyJsLibraryFiles = settings.copyJsLibraryFiles - outputDirectoryForJsLibraryFiles = settings.outputDirectoryForJsLibraryFiles - } - companion object { private val DEFAULT_ADDITIONAL_ARGUMENTS = "-version" private val DEFAULT_OUTPUT_DIRECTORY = "lib" diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.kt index d6fb529aa70..011550c9845 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/compilerRunner/KotlinCompilerRunner.kt @@ -16,33 +16,29 @@ package org.jetbrains.kotlin.compilerRunner -import com.intellij.util.xmlb.XmlSerializerUtil import org.jetbrains.jps.api.GlobalOptions import org.jetbrains.kotlin.cli.common.ExitCode import org.jetbrains.kotlin.cli.common.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY import org.jetbrains.kotlin.cli.common.arguments.CommonCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments +import org.jetbrains.kotlin.cli.common.arguments.mergeBeans import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.ERROR import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.INFO import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.MessageCollectorUtil +import org.jetbrains.kotlin.config.CompilerSettings import org.jetbrains.kotlin.daemon.client.CompilationServices import org.jetbrains.kotlin.daemon.client.DaemonReportMessage import org.jetbrains.kotlin.daemon.client.DaemonReportingTargets import org.jetbrains.kotlin.daemon.client.KotlinCompilerClient -import org.jetbrains.kotlin.config.CompilerSettings import org.jetbrains.kotlin.daemon.common.* import org.jetbrains.kotlin.jps.build.KotlinBuilder import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents import org.jetbrains.kotlin.progress.CompilationCanceledStatus -import org.jetbrains.kotlin.utils.rethrow import java.io.* -import java.lang.reflect.Field -import java.lang.reflect.Modifier -import java.rmi.ConnectException import java.util.* import java.util.concurrent.TimeUnit @@ -250,36 +246,6 @@ object KotlinCompilerRunner { } } - private fun mergeBeans(from: CommonCompilerArguments, to: T): T { - // TODO: rewrite when updated version of com.intellij.util.xmlb is available on TeamCity - val copy = XmlSerializerUtil.createCopy(to) - - val fromFields = collectFieldsToCopy(from.javaClass) - for (fromField in fromFields) { - val toField = copy.javaClass.getField(fromField.name) - toField.set(copy, fromField.get(from)) - } - - return copy - } - - private fun collectFieldsToCopy(clazz: Class<*>): List { - val fromFields = ArrayList() - - var currentClass: Class<*>? = clazz - while (currentClass != null) { - for (field in currentClass.declaredFields) { - val modifiers = field.modifiers - if (!Modifier.isStatic(modifiers) && Modifier.isPublic(modifiers)) { - fromFields.add(field) - } - } - currentClass = currentClass.superclass - } - - return fromFields - } - private fun setupK2JvmArguments(moduleFile: File, settings: K2JVMCompilerArguments) { with(settings) { module = moduleFile.absolutePath