From d8fd282b39a8357476f834fd655ae33ee53de45c Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Tue, 2 Aug 2022 19:20:23 +0200 Subject: [PATCH] [Gradle] Use explicit factory methods instead of constructor override In KotlinNativeToolRunner Settings classes ^KT-43293 --- .../compilerRunner/nativeToolRunners.kt | 37 +++++++++++-------- .../native/NativeCompilerDownloader.kt | 2 +- .../internal/PlatformLibrariesGenerator.kt | 2 +- .../targets/native/tasks/KotlinNativeTasks.kt | 12 +++--- .../artifact/KotlinNativeLinkArtifactTask.kt | 2 +- 5 files changed, 30 insertions(+), 25 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/nativeToolRunners.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/nativeToolRunners.kt index 25dade31e23..ea6b2e8d971 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/nativeToolRunners.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/nativeToolRunners.kt @@ -67,14 +67,15 @@ internal abstract class KotlinNativeToolRunner( val jvmArgs: List, val classpath: FileCollection ) { - - constructor(project: Project) : this( - konanVersion = project.konanVersion, - konanHome = project.konanHome, - konanPropertiesFile = project.file("${project.konanHome}/konan/konan.properties"), - jvmArgs = project.jvmArgs, - classpath = project.files(project.kotlinNativeCompilerJar, "${project.konanHome}/konan/lib/trove4j.jar") - ) + companion object { + fun fromProject(project: Project) = Settings( + konanVersion = project.konanVersion, + konanHome = project.konanHome, + konanPropertiesFile = project.file("${project.konanHome}/konan/konan.properties"), + jvmArgs = project.jvmArgs, + classpath = project.files(project.kotlinNativeCompilerJar, "${project.konanHome}/konan/lib/trove4j.jar") + ) + } } final override val displayName get() = toolName @@ -191,10 +192,12 @@ internal class KotlinNativeCompilerRunner( val parent: KotlinNativeToolRunner.Settings, val disableKonanDaemon: Boolean, ) { - constructor(project: Project) : this( - parent = KotlinNativeToolRunner.Settings(project), - disableKonanDaemon = project.disableKonanDaemon, - ) + companion object { + fun fromProject(project: Project) = Settings( + parent = KotlinNativeToolRunner.Settings.fromProject(project), + disableKonanDaemon = project.disableKonanDaemon, + ) + } } private val useArgFile get() = settings.disableKonanDaemon @@ -225,10 +228,12 @@ internal class KotlinNativeLibraryGenerationRunner( ) : AbstractKotlinNativeCInteropRunner("generatePlatformLibraries", settings, executionContext) { - constructor(project: Project): this( - settings = Settings(project), - executionContext = GradleExecutionContext.fromProject(project) - ) + companion object { + fun fromProject(project: Project) = KotlinNativeLibraryGenerationRunner( + settings = Settings.fromProject(project), + executionContext = GradleExecutionContext.fromProject(project) + ) + } // The library generator works for a long time so enabling C2 can improve performance. override val disableC2: Boolean = false diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt index f3a0f4a3df7..ab57bcfef1e 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/NativeCompilerDownloader.kt @@ -169,7 +169,7 @@ class NativeCompilerDownloader( fun downloadIfNeeded() { - val classpath = KotlinNativeToolRunner.Settings(project).classpath + val classpath = KotlinNativeToolRunner.Settings.fromProject(project).classpath if (classpath.isEmpty() || classpath.any { !it.exists() }) { downloadAndExtract() } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt index 958af118959..2f8861cbdfa 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/internal/PlatformLibrariesGenerator.kt @@ -131,7 +131,7 @@ internal class PlatformLibrariesGenerator(val project: Project, val konanTarget: args.addArg("-mode", it) } - KotlinNativeLibraryGenerationRunner(this).run(args) + KotlinNativeLibraryGenerationRunner.fromProject(this).run(args) } fun generatePlatformLibsIfNeeded(): Unit = with(project) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt index d7449b67692..8c843845527 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/KotlinNativeTasks.kt @@ -389,7 +389,7 @@ constructor( kotlinOptions.freeCompilerArgs + ((languageSettings as? DefaultLanguageSettingsBuilder)?.freeCompilerArgs ?: emptyList()) } - private val runnerSettings = KotlinNativeCompilerRunner.Settings(project) + private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project) private val isAllowCommonizer: Boolean by lazy { project.isAllowCommonizer() } override fun kotlinOptions(fn: KotlinCommonOptions.() -> Unit) { @@ -482,7 +482,7 @@ constructor( final override val compilation: KotlinNativeCompilation get() = binary.compilation - private val runnerSettings = KotlinNativeCompilerRunner.Settings(project) + private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project) init { dependsOn(project.provider { compilation.compileKotlinTaskProvider }) @@ -591,7 +591,7 @@ constructor( private val externalDependenciesArgs by lazy { ExternalDependenciesBuilder(project, compilation).buildCompilerArgs() } private val cacheBuilderSettings by lazy { - CacheBuilder.Settings(project, binary, konanTarget, localKotlinOptions, externalDependenciesArgs) + CacheBuilder.Settings.createWithProject(project, binary, konanTarget, localKotlinOptions, externalDependenciesArgs) } override fun createCompilerArgs(): StubK2NativeCompilerArguments = StubK2NativeCompilerArguments() @@ -890,7 +890,7 @@ internal class CacheBuilder( ) companion object { - operator fun invoke( + fun createWithProject( project: Project, binary: NativeBinary, konanTarget: KonanTarget, @@ -899,7 +899,7 @@ internal class CacheBuilder( ): Settings { val konanCacheKind = project.getKonanCacheKind(konanTarget) return Settings( - runnerSettings = KotlinNativeCompilerRunner.Settings(project), + runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project), konanCacheKind = konanCacheKind, libraries = binary.compilation.compileDependencyFiles.filterOutPublishableInteropLibs(project), gradleUserHomeDir = project.gradle.gradleUserHomeDir, @@ -1181,7 +1181,7 @@ open class CInteropProcess val outputFile: File get() = outputFileProvider.get() - private val runnerSettings = KotlinNativeToolRunner.Settings(project) + private val runnerSettings = KotlinNativeToolRunner.Settings.fromProject(project) // Inputs and outputs. diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt index 78fc6980014..d245bdc1519 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/artifact/KotlinNativeLinkArtifactTask.kt @@ -151,7 +151,7 @@ open class KotlinNativeLinkArtifactTask @Inject constructor( return destinationDir.resolve(outFileName) } - private val runnerSettings = KotlinNativeCompilerRunner.Settings(project) + private val runnerSettings = KotlinNativeCompilerRunner.Settings.fromProject(project) @TaskAction fun link() {