Avoid having -d and -module set at the same time

#KT-14619 fixed
This commit is contained in:
Alexey Tsvetkov
2017-01-31 14:57:42 +03:00
parent 9b5129a0f3
commit c57dac159b
5 changed files with 14 additions and 6 deletions
@@ -63,6 +63,7 @@ import java.util.concurrent.atomic.AtomicInteger
import java.util.concurrent.locks.ReentrantReadWriteLock import java.util.concurrent.locks.ReentrantReadWriteLock
import java.util.logging.Level import java.util.logging.Level
import java.util.logging.Logger import java.util.logging.Logger
import kotlin.collections.HashSet
import kotlin.comparisons.compareByDescending import kotlin.comparisons.compareByDescending
import kotlin.concurrent.read import kotlin.concurrent.read
import kotlin.concurrent.schedule import kotlin.concurrent.schedule
@@ -423,10 +424,13 @@ class CompileServiceImpl(
} }
parsedModule 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) { val changedFiles = if (incrementalCompilationOptions.areFileChangesKnown) {
ChangedFiles.Known(incrementalCompilationOptions.modifiedFiles!!, incrementalCompilationOptions.deletedFiles!!) ChangedFiles.Known(incrementalCompilationOptions.modifiedFiles!!, incrementalCompilationOptions.deletedFiles!!)
} }
@@ -425,6 +425,7 @@ class IncrementalJvmCompilerRunner(
javaSourceRoots = javaSourceRoots, javaSourceRoots = javaSourceRoots,
classpath = classpath, classpath = classpath,
friendDirs = listOf()) friendDirs = listOf())
args.destination = null
args.module = moduleFile.absolutePath args.module = moduleFile.absolutePath
val outputItemCollector = OutputItemsCollectorImpl() val outputItemCollector = OutputItemsCollectorImpl()
@Suppress("NAME_SHADOWING") @Suppress("NAME_SHADOWING")
@@ -4,6 +4,8 @@ import org.jetbrains.kotlin.gradle.util.getFileByName
import org.jetbrains.kotlin.gradle.util.modify import org.jetbrains.kotlin.gradle.util.modify
import org.junit.Test 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() { class ExecutionStrategyJsIT : ExecutionStrategyIT() {
override fun setupProject(project: Project) { override fun setupProject(project: Project) {
project.setupWorkingDir() project.setupWorkingDir()
@@ -48,6 +50,7 @@ open class ExecutionStrategyIT : BaseGradleIT() {
assertSuccessful() assertSuccessful()
assertContains(finishMessage) assertContains(finishMessage)
checkOutput() checkOutput()
assertNotContains(DIR_AND_MODULE_ERROR_MESSAGE)
} }
val fKt = project.projectDir.getFileByName("f.kt") val fKt = project.projectDir.getFileByName("f.kt")
@@ -191,6 +191,7 @@ class KotlinGradleIT: BaseGradleIT() {
assertReportExists("projB") assertReportExists("projB")
assertContains(":projB:compileKotlin") assertContains(":projB:compileKotlin")
assertNotContains("projB:compileKotlin UP-TO-DATE") assertNotContains("projB:compileKotlin UP-TO-DATE")
assertNotContains(DIR_AND_MODULE_ERROR_MESSAGE)
} }
} }
@@ -58,17 +58,16 @@ internal class GradleCompilerRunner(private val project: Project) : KotlinCompil
args: K2JVMCompilerArguments, args: K2JVMCompilerArguments,
environment: GradleCompilerEnvironment environment: GradleCompilerEnvironment
): ExitCode { ): ExitCode {
val outputDir = args.destinationAsFile
val moduleFile = makeModuleFile( val moduleFile = makeModuleFile(
args.moduleName, args.moduleName,
isTest = false, isTest = false,
outputDir = outputDir, outputDir = args.destinationAsFile,
sourcesToCompile = sourcesToCompile, sourcesToCompile = sourcesToCompile,
javaSourceRoots = javaSourceRoots, javaSourceRoots = javaSourceRoots,
classpath = args.classpathAsList, classpath = args.classpathAsList,
friendDirs = args.friendPaths?.map(::File) ?: emptyList()) friendDirs = args.friendPaths?.map(::File) ?: emptyList())
args.module = moduleFile.absolutePath args.module = moduleFile.absolutePath
args.destination = null
try { try {
return runCompiler(K2JVM_COMPILER, args, environment) return runCompiler(K2JVM_COMPILER, args, environment)