diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt index b195caeb7bd..55af8980c0f 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt @@ -63,6 +63,7 @@ import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.locks.ReentrantReadWriteLock import java.util.logging.Level import java.util.logging.Logger +import kotlin.collections.HashSet import kotlin.comparisons.compareByDescending import kotlin.concurrent.read import kotlin.concurrent.schedule @@ -423,10 +424,13 @@ class CompileServiceImpl( } parsedModule } - val javaSourceRoots = parsedModule.modules.flatMapTo(HashSet()) { it.getJavaSourceRoots().map { File(it.path) } } - val allKotlinFiles = parsedModule.modules.flatMap { it.getSourceFiles().map(::File) } - k2jvmArgs.friendPaths = parsedModule.modules.flatMap(Module::getFriendPaths).toTypedArray() + assert(parsedModule.modules.size == 1) { "More than one module description in ${k2jvmArgs.module}" } + val module = parsedModule.modules.first() + val javaSourceRoots = module.getJavaSourceRoots().mapTo(HashSet()) { File(it.path) } + val allKotlinFiles = module.getSourceFiles().map(::File) + k2jvmArgs.friendPaths = module.getFriendPaths().toTypedArray() + k2jvmArgs.destination = module.getOutputDirectory() val changedFiles = if (incrementalCompilationOptions.areFileChangesKnown) { ChangedFiles.Known(incrementalCompilationOptions.modifiedFiles!!, incrementalCompilationOptions.deletedFiles!!) } diff --git a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt index 494b601ff0e..94ad585da1a 100644 --- a/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt +++ b/compiler/incremental-compilation-impl/src/org/jetbrains/kotlin/incremental/IncrementalJvmCompilerRunner.kt @@ -425,6 +425,7 @@ class IncrementalJvmCompilerRunner( javaSourceRoots = javaSourceRoots, classpath = classpath, friendDirs = listOf()) + args.destination = null args.module = moduleFile.absolutePath val outputItemCollector = OutputItemsCollectorImpl() @Suppress("NAME_SHADOWING") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ExecutionStrategyIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ExecutionStrategyIT.kt index ee948eb9568..52fc2e15cbf 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ExecutionStrategyIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/ExecutionStrategyIT.kt @@ -4,6 +4,8 @@ import org.jetbrains.kotlin.gradle.util.getFileByName import org.jetbrains.kotlin.gradle.util.modify import org.junit.Test +val DIR_AND_MODULE_ERROR_MESSAGE = "'-d' option with a directory destination is ignored because '-module' is specified" + class ExecutionStrategyJsIT : ExecutionStrategyIT() { override fun setupProject(project: Project) { project.setupWorkingDir() @@ -48,6 +50,7 @@ open class ExecutionStrategyIT : BaseGradleIT() { assertSuccessful() assertContains(finishMessage) checkOutput() + assertNotContains(DIR_AND_MODULE_ERROR_MESSAGE) } val fKt = project.projectDir.getFileByName("f.kt") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index 48741e22ef3..74d64972d7f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -191,6 +191,7 @@ class KotlinGradleIT: BaseGradleIT() { assertReportExists("projB") assertContains(":projB:compileKotlin") assertNotContains("projB:compileKotlin UP-TO-DATE") + assertNotContains(DIR_AND_MODULE_ERROR_MESSAGE) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt index ede383449df..42fc93f4288 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/compilerRunner/GradleKotlinCompilerRunner.kt @@ -58,17 +58,16 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil args: K2JVMCompilerArguments, environment: GradleCompilerEnvironment ): ExitCode { - val outputDir = args.destinationAsFile - val moduleFile = makeModuleFile( args.moduleName, isTest = false, - outputDir = outputDir, + outputDir = args.destinationAsFile, sourcesToCompile = sourcesToCompile, javaSourceRoots = javaSourceRoots, classpath = args.classpathAsList, friendDirs = args.friendPaths?.map(::File) ?: emptyList()) args.module = moduleFile.absolutePath + args.destination = null try { return runCompiler(K2JVM_COMPILER, args, environment)