More entry points for compiler plugins
* In Kotlin/JS JPS compilation * In kotlin-common CLI compiler * In kotlin-common gradle build
This commit is contained in:
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.cli.common.messages.OutputMessageUtil
|
|||||||
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
|
||||||
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
import org.jetbrains.kotlin.cli.jvm.config.addJvmClasspathRoots
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.plugins.PluginCliParser
|
||||||
import org.jetbrains.kotlin.codegen.CompilationException
|
import org.jetbrains.kotlin.codegen.CompilationException
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
@@ -53,6 +54,9 @@ class K2MetadataCompiler : CLICompiler<K2MetadataCompilerArguments>() {
|
|||||||
): ExitCode {
|
): ExitCode {
|
||||||
val collector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)
|
val collector = configuration.getNotNull(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY)
|
||||||
|
|
||||||
|
val pluginLoadResult = PluginCliParser.loadPluginsSafe(arguments, configuration)
|
||||||
|
if (pluginLoadResult != ExitCode.OK) return pluginLoadResult
|
||||||
|
|
||||||
for (arg in arguments.freeArgs) {
|
for (arg in arguments.freeArgs) {
|
||||||
configuration.addKotlinSourceRoot(arg)
|
configuration.addKotlinSourceRoot(arg)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -431,19 +431,6 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
|
|||||||
project: JpsProject
|
project: JpsProject
|
||||||
): OutputItemsCollector? {
|
): OutputItemsCollector? {
|
||||||
|
|
||||||
if (JpsUtils.isJsKotlinModule(chunk.representativeTarget())) {
|
|
||||||
LOG.debug("Compiling to JS ${filesToCompile.values().size} files in ${filesToCompile.keySet().joinToString { it.presentableName }}")
|
|
||||||
return compileToJs(chunk, commonArguments, environment, project)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IncrementalCompilation.isEnabled()) {
|
|
||||||
for (target in chunk.targets) {
|
|
||||||
val cache = incrementalCaches[target]!!
|
|
||||||
val removedAndDirtyFiles = filesToCompile[target] + dirtyFilesHolder.getRemovedFiles(target).map(::File)
|
|
||||||
cache.markDirty(removedAndDirtyFiles)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val representativeTarget = chunk.representativeTarget()
|
val representativeTarget = chunk.representativeTarget()
|
||||||
|
|
||||||
fun concatenate(strings: Array<String>?, cp: List<String>) = arrayOf(*strings.orEmpty(), *cp.toTypedArray())
|
fun concatenate(strings: Array<String>?, cp: List<String>) = arrayOf(*strings.orEmpty(), *cp.toTypedArray())
|
||||||
@@ -459,6 +446,19 @@ class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR) {
|
|||||||
LOG.debug("Plugin loaded: ${argumentProvider::class.java.simpleName}")
|
LOG.debug("Plugin loaded: ${argumentProvider::class.java.simpleName}")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (JpsUtils.isJsKotlinModule(chunk.representativeTarget())) {
|
||||||
|
LOG.debug("Compiling to JS ${filesToCompile.values().size} files in ${filesToCompile.keySet().joinToString { it.presentableName }}")
|
||||||
|
return compileToJs(chunk, commonArguments, environment, project)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IncrementalCompilation.isEnabled()) {
|
||||||
|
for (target in chunk.targets) {
|
||||||
|
val cache = incrementalCaches[target]!!
|
||||||
|
val removedAndDirtyFiles = filesToCompile[target] + dirtyFilesHolder.getRemovedFiles(target).map(::File)
|
||||||
|
cache.markDirty(removedAndDirtyFiles)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return compileToJvm(allCompiledFiles, chunk, commonArguments, context, dirtyFilesHolder, environment, filesToCompile)
|
return compileToJvm(allCompiledFiles, chunk, commonArguments, context, dirtyFilesHolder, environment, filesToCompile)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+9
@@ -347,11 +347,20 @@ internal class KotlinCommonSourceSetProcessor(
|
|||||||
|
|
||||||
project.afterEvaluate { project ->
|
project.afterEvaluate { project ->
|
||||||
kotlinTask.source(kotlinSourceSet.kotlin)
|
kotlinTask.source(kotlinSourceSet.kotlin)
|
||||||
|
|
||||||
|
val subpluginEnvironment: SubpluginEnvironment = loadSubplugins(project)
|
||||||
|
val appliedPlugins = subpluginEnvironment.addSubpluginOptions(
|
||||||
|
project, kotlinTask, kotlinTask, null, null, sourceSet)
|
||||||
|
|
||||||
project.tasks.findByName(sourceSet.classesTaskName).dependsOn(kotlinTask)
|
project.tasks.findByName(sourceSet.classesTaskName).dependsOn(kotlinTask)
|
||||||
// can be missing (e.g. in case of tests)
|
// can be missing (e.g. in case of tests)
|
||||||
project.tasks.findByName(sourceSet.jarTaskName)?.dependsOn(kotlinTask)
|
project.tasks.findByName(sourceSet.jarTaskName)?.dependsOn(kotlinTask)
|
||||||
val javaTask = project.tasks.findByName(sourceSet.compileJavaTaskName)
|
val javaTask = project.tasks.findByName(sourceSet.compileJavaTaskName)
|
||||||
project.tasks.remove(javaTask)
|
project.tasks.remove(javaTask)
|
||||||
|
|
||||||
|
appliedPlugins
|
||||||
|
.flatMap { it.getSubpluginKotlinTasks(project, kotlinTask) }
|
||||||
|
.forEach { it.source(kotlinSourceSet.kotlin) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user