From 3cc3bf2a6b38c0aee62c762c02f6187c3647f7b0 Mon Sep 17 00:00:00 2001 From: Anton Lakotka Date: Thu, 24 Feb 2022 10:12:42 +0100 Subject: [PATCH] [Gradle] JsCompilationDependenciesHolder should not implement HasKotlinDependencies through delegation `HasKotlinDependencies::dependencies` methods is meant to read ``*ConfigurationName` properties in implementations. Therefore, implementation through delegate isn't possible since delegate *can't* read overrided properties, instead it sees its own. ^KT-51457 Verification Pending --- .../gradle/plugin/mpp/CompilationDetails.kt | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt index f17de2e2d57..d7d89cb4041 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/CompilationDetails.kt @@ -567,9 +567,8 @@ internal open class JsCompilationDetails( protected open class JsCompilationDependenciesHolder( val target: KotlinTarget, - val compilationPurpose: String, - val parent: HasKotlinDependencies - ) : HasKotlinDependencies by parent { + val compilationPurpose: String + ) : HasKotlinDependencies { override val apiConfigurationName: String get() = disambiguateNameInPlatform(API) @@ -596,10 +595,16 @@ internal open class JsCompilationDetails( simpleName ) } + + override fun dependencies(configure: KotlinDependencyHandler.() -> Unit): Unit = + DefaultKotlinDependencyHandler(this, target.project).run(configure) + + override fun dependencies(configureClosure: Closure) = + dependencies f@{ project.configure(this@f, configureClosure) } } override val kotlinDependenciesHolder: HasKotlinDependencies - get() = JsCompilationDependenciesHolder(target, compilationPurpose, super.kotlinDependenciesHolder) + get() = JsCompilationDependenciesHolder(target, compilationPurpose) override val defaultSourceSetName: String get() { @@ -634,14 +639,14 @@ internal class JsIrCompilationDetails(target: KotlinTarget, compilationPurpose: ) } - private class JsIrCompilationDependencyHolder(target: KotlinTarget, compilationPurpose: String, parent: HasKotlinDependencies) : - JsCompilationDependenciesHolder(target, compilationPurpose, parent) { + private class JsIrCompilationDependencyHolder(target: KotlinTarget, compilationPurpose: String) : + JsCompilationDependenciesHolder(target, compilationPurpose) { override val disambiguationClassifierInPlatform: String? get() = (target as KotlinJsIrTarget).disambiguationClassifierInPlatform } override val kotlinDependenciesHolder: HasKotlinDependencies - get() = JsIrCompilationDependencyHolder(target, compilationPurpose, super.kotlinDependenciesHolder) + get() = JsIrCompilationDependencyHolder(target, compilationPurpose) } internal class KotlinDependencyConfigurationsHolder( @@ -666,4 +671,4 @@ internal class KotlinDependencyConfigurationsHolder( override fun dependencies(configureClosure: Closure) = dependencies f@{ project.configure(this@f, configureClosure) } -} +} \ No newline at end of file