[Gradle][MPP] KotlinCompilationAssociator: Fix KotlinJvmCompilationAssociator (main and test confusion)
^KT-54783 Verification Pending
This commit is contained in:
committed by
Space Team
parent
9632c6d796
commit
6cadad5a6b
+25
-25
@@ -15,11 +15,11 @@ import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
|
|||||||
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
import org.jetbrains.kotlin.gradle.utils.filesProvider
|
||||||
|
|
||||||
internal fun interface KotlinCompilationAssociator {
|
internal fun interface KotlinCompilationAssociator {
|
||||||
fun associate(target: KotlinTarget, first: InternalKotlinCompilation<*>, second: InternalKotlinCompilation<*>)
|
fun associate(target: KotlinTarget, auxiliary: InternalKotlinCompilation<*>, main: InternalKotlinCompilation<*>)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object DefaultKotlinCompilationAssociator : KotlinCompilationAssociator {
|
internal object DefaultKotlinCompilationAssociator : KotlinCompilationAssociator {
|
||||||
override fun associate(target: KotlinTarget, first: InternalKotlinCompilation<*>, second: InternalKotlinCompilation<*>) {
|
override fun associate(target: KotlinTarget, auxiliary: InternalKotlinCompilation<*>, main: InternalKotlinCompilation<*>) {
|
||||||
val project = target.project
|
val project = target.project
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -32,43 +32,43 @@ internal object DefaultKotlinCompilationAssociator : KotlinCompilationAssociator
|
|||||||
compilation itself (moreover, direct dependencies are not equivalent to transitive ones because of
|
compilation itself (moreover, direct dependencies are not equivalent to transitive ones because of
|
||||||
resolution order - e.g. in case of FQNs clash, so it's even harmful)
|
resolution order - e.g. in case of FQNs clash, so it's even harmful)
|
||||||
*/
|
*/
|
||||||
project.dependencies.add(first.compileOnlyConfigurationName, project.files({ second.output.classesDirs }))
|
project.dependencies.add(auxiliary.compileOnlyConfigurationName, project.files({ main.output.classesDirs }))
|
||||||
project.dependencies.add(first.runtimeOnlyConfigurationName, project.files({ second.output.allOutputs }))
|
project.dependencies.add(auxiliary.runtimeOnlyConfigurationName, project.files({ main.output.allOutputs }))
|
||||||
|
|
||||||
first.compileDependencyConfigurationName.addAllDependenciesFromOtherConfigurations(
|
auxiliary.compileDependencyConfigurationName.addAllDependenciesFromOtherConfigurations(
|
||||||
project,
|
project,
|
||||||
second.apiConfigurationName,
|
main.apiConfigurationName,
|
||||||
second.implementationConfigurationName,
|
main.implementationConfigurationName,
|
||||||
second.compileOnlyConfigurationName
|
main.compileOnlyConfigurationName
|
||||||
)
|
)
|
||||||
|
|
||||||
first.runtimeDependencyConfigurationName?.addAllDependenciesFromOtherConfigurations(
|
auxiliary.runtimeDependencyConfigurationName?.addAllDependenciesFromOtherConfigurations(
|
||||||
project,
|
project,
|
||||||
second.apiConfigurationName,
|
main.apiConfigurationName,
|
||||||
second.implementationConfigurationName,
|
main.implementationConfigurationName,
|
||||||
second.runtimeOnlyConfigurationName
|
main.runtimeOnlyConfigurationName
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object KotlinNativeCompilationAssociator : KotlinCompilationAssociator {
|
internal object KotlinNativeCompilationAssociator : KotlinCompilationAssociator {
|
||||||
override fun associate(target: KotlinTarget, first: InternalKotlinCompilation<*>, second: InternalKotlinCompilation<*>) {
|
override fun associate(target: KotlinTarget, auxiliary: InternalKotlinCompilation<*>, main: InternalKotlinCompilation<*>) {
|
||||||
|
|
||||||
first.compileDependencyFiles +=
|
auxiliary.compileDependencyFiles +=
|
||||||
second.output.classesDirs + target.project.filesProvider { second.compileDependencyFiles }
|
main.output.classesDirs + target.project.filesProvider { main.compileDependencyFiles }
|
||||||
|
|
||||||
target.project.configurations.named(first.implementationConfigurationName).configure { configuration ->
|
target.project.configurations.named(auxiliary.implementationConfigurationName).configure { configuration ->
|
||||||
configuration.extendsFrom(target.project.configurations.findByName(second.implementationConfigurationName))
|
configuration.extendsFrom(target.project.configurations.findByName(main.implementationConfigurationName))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal object KotlinJvmCompilationAssociator : KotlinCompilationAssociator {
|
internal object KotlinJvmCompilationAssociator : KotlinCompilationAssociator {
|
||||||
override fun associate(target: KotlinTarget, first: InternalKotlinCompilation<*>, second: InternalKotlinCompilation<*>) {
|
override fun associate(target: KotlinTarget, auxiliary: InternalKotlinCompilation<*>, main: InternalKotlinCompilation<*>) {
|
||||||
/* Main to Test association handled already by java plugin */
|
/* Main to Test association handled already by java plugin */
|
||||||
if (target is KotlinJvmTarget && target.withJavaEnabled && first.isMain() && second.isTest()) {
|
if (target is KotlinJvmTarget && target.withJavaEnabled && auxiliary.isTest() && main.isMain()) {
|
||||||
return
|
return
|
||||||
} else DefaultKotlinCompilationAssociator.associate(target, first, second)
|
} else DefaultKotlinCompilationAssociator.associate(target, auxiliary, main)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -82,12 +82,12 @@ internal object KotlinJvmCompilationAssociator : KotlinCompilationAssociator {
|
|||||||
* This helps, because the Android test classpath configurations extend from the Kotlin test compilations' directly.
|
* This helps, because the Android test classpath configurations extend from the Kotlin test compilations' directly.
|
||||||
*/
|
*/
|
||||||
internal object KotlinAndroidCompilationAssociator : KotlinCompilationAssociator {
|
internal object KotlinAndroidCompilationAssociator : KotlinCompilationAssociator {
|
||||||
override fun associate(target: KotlinTarget, first: InternalKotlinCompilation<*>, second: InternalKotlinCompilation<*>) {
|
override fun associate(target: KotlinTarget, auxiliary: InternalKotlinCompilation<*>, main: InternalKotlinCompilation<*>) {
|
||||||
first.compileDependencyConfigurationName.addAllDependenciesFromOtherConfigurations(
|
auxiliary.compileDependencyConfigurationName.addAllDependenciesFromOtherConfigurations(
|
||||||
target.project,
|
target.project,
|
||||||
second.apiConfigurationName,
|
main.apiConfigurationName,
|
||||||
second.implementationConfigurationName,
|
main.implementationConfigurationName,
|
||||||
second.compileOnlyConfigurationName
|
main.compileOnlyConfigurationName
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user