diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt index 6c76dbb9fe8..6fc04af00f7 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kotlin2JsGradlePluginIT.kt @@ -66,12 +66,12 @@ class Kotlin2JsGradlePluginIT : BaseGradleIT() { } @Test - fun testNoOutputFileFails() { + fun testDefaultOutputFile() { val project = Project("kotlin2JsNoOutputFileProject", "2.10") + project.build("build") { - assertFailed() - assertReportExists() - assertContains("compileKotlin2Js.kotlinOptions.outputFile should be specified.") + assertSuccessful() + assertFileExists("build/classes/main/kotlin2JsNoOutputFileProject_main.js") } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 332879ee310..f93616072f8 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -55,7 +55,8 @@ internal abstract class KotlinSourceSetProcessor>( protected val sourceRootDir: String = "src/$sourceSetName/kotlin" protected val kotlinSourceSet: KotlinSourceSet = createKotlinSourceSet() protected val kotlinTask: T = createKotlinCompileTask() - protected abstract val defaultKotlinDestinationDir: File + protected open val defaultKotlinDestinationDir: File + get() = sourceSet.output.classesDir fun run() { addKotlinDirSetToSources() @@ -183,9 +184,6 @@ internal class Kotlin2JsSourceSetProcessor( taskDescription = "Compiles the kotlin sources in $sourceSet to JavaScript.", compileTaskNameSuffix = "kotlin2Js" ) { - override val defaultKotlinDestinationDir: File - get() = File(project.buildDir, "kotlin2js/$sourceSetName") - private val clean = project.tasks.findByName("clean") private val build = project.tasks.findByName("build") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index fe6ec90d183..ae578a2fa17 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -20,6 +20,7 @@ import org.codehaus.groovy.runtime.MethodClosure import org.gradle.api.GradleException import org.gradle.api.Task import org.gradle.api.logging.Logger +import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceTask import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.compile.AbstractCompile @@ -299,6 +300,9 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile(), var compilerJarFile: File? = null + private val defaultOutputFile: File + get() = File(destinationDir, "$moduleName.js") + @Suppress("unused") val outputFile: String? get() = kotlinOptions.outputFile @@ -340,7 +344,7 @@ open class Kotlin2JsCompile() : AbstractKotlinCompile(), args.freeArgs = args.freeArgs + sourceRoots.kotlinSourceFiles.map { it.absolutePath } if (args.outputFile == null) { - throw GradleException("$name.kotlinOptions.outputFile should be specified.") + args.outputFile = defaultOutputFile.canonicalPath } logger.kotlinDebug("compiling with args ${ArgumentUtils.convertArgumentsToStringList(args)}") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt index 2f3d7f28591..1bf5f658205 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/TasksProvider.kt @@ -33,6 +33,7 @@ internal open class KotlinTasksProvider { fun createKotlinJSTask(project: Project, name: String, sourceSetName: String): Kotlin2JsCompile = project.tasks.create(name, Kotlin2JsCompile::class.java).apply { + this.sourceSetName = sourceSetName friendTaskName = taskToFriendTaskMapper[this] }