diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/Kotlin2JsSourceSetProcessor.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/Kotlin2JsSourceSetProcessor.kt new file mode 100644 index 00000000000..4299259972e --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/Kotlin2JsSourceSetProcessor.kt @@ -0,0 +1,60 @@ +/* + * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.gradle.plugin + +import org.gradle.api.Project +import org.gradle.api.tasks.SourceSet +import org.gradle.api.tasks.TaskProvider +import org.jetbrains.kotlin.gradle.dsl.CompilerJsOptions +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinWithJavaCompilation +import org.jetbrains.kotlin.gradle.plugin.mpp.pm20.KotlinCompilationData +import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile +import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider +import org.jetbrains.kotlin.gradle.tasks.configuration.Kotlin2JsCompileConfig +import java.io.File + +internal class Kotlin2JsSourceSetProcessor( + tasksProvider: KotlinTasksProvider, + kotlinCompilation: KotlinCompilationData<*> +) : KotlinSourceSetProcessor( + tasksProvider, + taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.", + kotlinCompilation = kotlinCompilation +) { + override fun doRegisterTask(project: Project, taskName: String): TaskProvider { + val configAction = Kotlin2JsCompileConfig(kotlinCompilation) + applyStandardTaskConfiguration(configAction) + return tasksProvider.registerKotlinJSTask( + project, + taskName, + kotlinCompilation.compilerOptions.options as CompilerJsOptions, + configAction + ) + } + + override fun doTargetSpecificProcessing() { + project.tasks.named(kotlinCompilation.compileAllTaskName).configure { + it.dependsOn(kotlinTask) + } + + if (kotlinCompilation is KotlinWithJavaCompilation<*, *>) { + kotlinCompilation.javaSourceSet.clearJavaSrcDirs() + } + + + project.whenEvaluated { + val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project) + if (kotlinCompilation is KotlinCompilation<*>) { // FIXME support compiler plugins with PM20 + subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation) + } + } + } + +} + +private fun SourceSet.clearJavaSrcDirs() { + java.setSrcDirs(emptyList()) +} diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index d3ded84537a..9c08256918e 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -47,47 +47,7 @@ val KOTLIN_DSL_NAME = "kotlin" val KOTLIN_JS_DSL_NAME = "kotlin2js" val KOTLIN_OPTIONS_DSL_NAME = "kotlinOptions" -internal fun KotlinCompilationOutput.addClassesDir(classesDirProvider: () -> FileCollection) { - classesDirs.from(Callable { classesDirProvider() }) -} -internal class Kotlin2JsSourceSetProcessor( - tasksProvider: KotlinTasksProvider, - kotlinCompilation: KotlinCompilationData<*> -) : KotlinSourceSetProcessor( - tasksProvider, - taskDescription = "Compiles the Kotlin sources in $kotlinCompilation to JavaScript.", - kotlinCompilation = kotlinCompilation -) { - override fun doRegisterTask(project: Project, taskName: String): TaskProvider { - val configAction = Kotlin2JsCompileConfig(kotlinCompilation) - applyStandardTaskConfiguration(configAction) - return tasksProvider.registerKotlinJSTask( - project, - taskName, - kotlinCompilation.compilerOptions.options as KotlinJsCompilerOptions, - configAction - ) - } - - override fun doTargetSpecificProcessing() { - project.tasks.named(kotlinCompilation.compileAllTaskName).configure { - it.dependsOn(kotlinTask) - } - - if (kotlinCompilation is KotlinWithJavaCompilation<*, *>) { - kotlinCompilation.javaSourceSet.clearJavaSrcDirs() - } - - - project.whenEvaluated { - val subpluginEnvironment: SubpluginEnvironment = SubpluginEnvironment.loadSubplugins(project) - if (kotlinCompilation is KotlinCompilation<*>) { // FIXME support compiler plugins with PM20 - subpluginEnvironment.addSubpluginOptions(project, kotlinCompilation) - } - } - } -} internal class KotlinJsIrSourceSetProcessor( tasksProvider: KotlinTasksProvider, @@ -609,8 +569,3 @@ class KotlinConfigurationTools internal constructor( @Suppress("EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_WARNING", "EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR_ERROR") val kotlinTasksProvider: KotlinTasksProvider ) - - -private fun SourceSet.clearJavaSrcDirs() { - java.setSrcDirs(emptyList()) -}