[Gradle] Don't pass -Xfragment-sources for non-mpp compilations

It is unnecessary and confusing.

^KT-65768 Verification Pending
This commit is contained in:
Anton Lakotka
2024-02-13 09:49:45 +01:00
committed by Space Team
parent fabf75f4e2
commit 0a86f03457
3 changed files with 28 additions and 13 deletions
@@ -138,7 +138,7 @@ abstract class Kotlin2JsCompile @Inject constructor(
args.outputDir = destinationDirectory.get().asFile.normalize().absolutePath args.outputDir = destinationDirectory.get().asFile.normalize().absolutePath
args.moduleName = compilerOptions.moduleName.get() args.moduleName = compilerOptions.moduleName.get()
if (compilerOptions.usesK2.get()) { if (compilerOptions.usesK2.get() && multiPlatformEnabled.get()) {
args.fragments = multiplatformStructure.fragmentsCompilerArgs args.fragments = multiplatformStructure.fragmentsCompilerArgs
args.fragmentRefines = multiplatformStructure.fragmentRefinesCompilerArgs args.fragmentRefines = multiplatformStructure.fragmentRefinesCompilerArgs
} }
@@ -176,10 +176,12 @@ abstract class Kotlin2JsCompile @Inject constructor(
args.sourceMapBaseDirs = sourceMapBaseDir.get().asFile.absolutePath args.sourceMapBaseDirs = sourceMapBaseDir.get().asFile.absolutePath
} }
if (compilerOptions.usesK2.get()) { if (multiPlatformEnabled.get()) {
args.fragmentSources = multiplatformStructure.fragmentSourcesCompilerArgs(sourceFileFilter) if (compilerOptions.usesK2.get()) {
} else { args.fragmentSources = multiplatformStructure.fragmentSourcesCompilerArgs(sourceFileFilter)
args.commonSources = commonSourceSet.asFileTree.toPathsArray() } else {
args.commonSources = commonSourceSet.asFileTree.toPathsArray()
}
} }
args.freeArgs += sources.asFileTree.files.map { it.absolutePath } args.freeArgs += sources.asFileTree.files.map { it.absolutePath }
@@ -263,10 +263,12 @@ abstract class KotlinCompile @Inject constructor(
} }
sources { args -> sources { args ->
if (compilerOptions.usesK2.get()) { if (multiPlatformEnabled.get()) {
args.fragmentSources = multiplatformStructure.fragmentSourcesCompilerArgs(sourceFileFilter) if (compilerOptions.usesK2.get()) {
} else { args.fragmentSources = multiplatformStructure.fragmentSourcesCompilerArgs(sourceFileFilter)
args.commonSources = commonSourceSet.asFileTree.toPathsArray() } else {
args.commonSources = commonSourceSet.asFileTree.toPathsArray()
}
} }
val sourcesFiles = sources.asFileTree.files.toList() val sourcesFiles = sources.asFileTree.files.toList()
@@ -21,12 +21,10 @@ import org.jetbrains.kotlin.gradle.plugin.KotlinJsCompilerType.IR
import org.jetbrains.kotlin.gradle.tasks.* import org.jetbrains.kotlin.gradle.tasks.*
import org.jetbrains.kotlin.gradle.tasks.K2MultiplatformStructure.Fragment import org.jetbrains.kotlin.gradle.tasks.K2MultiplatformStructure.Fragment
import org.jetbrains.kotlin.gradle.tasks.K2MultiplatformStructure.RefinesEdge import org.jetbrains.kotlin.gradle.tasks.K2MultiplatformStructure.RefinesEdge
import org.jetbrains.kotlin.gradle.util.applyMultiplatformPlugin import org.jetbrains.kotlin.gradle.util.*
import org.jetbrains.kotlin.gradle.util.buildProject
import org.jetbrains.kotlin.gradle.util.enableDefaultStdlibDependency
import org.jetbrains.kotlin.gradle.util.main
import kotlin.test.Test import kotlin.test.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
import kotlin.test.assertNull
import kotlin.test.fail import kotlin.test.fail
class K2MultiplatformStructureTest { class K2MultiplatformStructureTest {
@@ -87,6 +85,19 @@ class K2MultiplatformStructureTest {
`test compilations multiplatformStructure configuration`(kotlin.js(IR).compilations.main) `test compilations multiplatformStructure configuration`(kotlin.js(IR).compilations.main)
} }
@Test
fun `KT-65768 - no fragment sources in pure jvm project`() {
val project = buildProject {
applyKotlinJvmPlugin()
}
project.evaluate()
project.tasks.withType<KotlinCompile>().forEach { task ->
val arguments = task.buildCompilerArguments()
assertNull(arguments.fragmentSources, "Task $task has -Xframent-sources but it shouldn't.")
}
}
private fun `test compilations multiplatformStructure configuration`(compilation: KotlinCompilation<*>) { private fun `test compilations multiplatformStructure configuration`(compilation: KotlinCompilation<*>) {
val defaultSourceSet = compilation.defaultSourceSet val defaultSourceSet = compilation.defaultSourceSet
/* Create an additional intermediate source set for testing */ /* Create an additional intermediate source set for testing */