[JS] Get rid of outputFile in compiler args (KT-61116)

^KT-56753 fixed
This commit is contained in:
Ilya Goncharov
2023-11-08 14:30:58 +01:00
committed by Space Team
parent 9fcf6c5f89
commit 2340d59f40
27 changed files with 23 additions and 645 deletions
@@ -280,11 +280,8 @@ public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinHierarchyD
public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinJsCompilerOptions : org/jetbrains/kotlin/gradle/dsl/KotlinCommonCompilerOptions {
public abstract fun getFriendModulesDisabled ()Lorg/gradle/api/provider/Property;
public abstract fun getMain ()Lorg/gradle/api/provider/Property;
public abstract fun getMetaInfo ()Lorg/gradle/api/provider/Property;
public abstract fun getModuleKind ()Lorg/gradle/api/provider/Property;
public abstract fun getModuleName ()Lorg/gradle/api/provider/Property;
public abstract fun getNoStdlib ()Lorg/gradle/api/provider/Property;
public abstract fun getOutputFile ()Lorg/gradle/api/provider/Property;
public abstract fun getSourceMap ()Lorg/gradle/api/provider/Property;
public abstract fun getSourceMapEmbedSources ()Lorg/gradle/api/provider/Property;
public abstract fun getSourceMapNamesPolicy ()Lorg/gradle/api/provider/Property;
@@ -325,12 +322,9 @@ public final class org/jetbrains/kotlin/gradle/dsl/KotlinJsDceOptions$DefaultImp
public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions : org/jetbrains/kotlin/gradle/dsl/KotlinCommonOptions {
public abstract fun getFriendModulesDisabled ()Z
public abstract fun getMain ()Ljava/lang/String;
public abstract fun getMetaInfo ()Z
public abstract fun getModuleKind ()Ljava/lang/String;
public abstract fun getModuleName ()Ljava/lang/String;
public abstract fun getNoStdlib ()Z
public abstract fun getOptions ()Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsCompilerOptions;
public abstract fun getOutputFile ()Ljava/lang/String;
public abstract fun getSourceMap ()Z
public abstract fun getSourceMapEmbedSources ()Ljava/lang/String;
public abstract fun getSourceMapNamesPolicy ()Ljava/lang/String;
@@ -340,11 +334,8 @@ public abstract interface class org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions
public abstract fun getUseEsClasses ()Z
public abstract fun setFriendModulesDisabled (Z)V
public abstract fun setMain (Ljava/lang/String;)V
public abstract fun setMetaInfo (Z)V
public abstract fun setModuleKind (Ljava/lang/String;)V
public abstract fun setModuleName (Ljava/lang/String;)V
public abstract fun setNoStdlib (Z)V
public abstract fun setOutputFile (Ljava/lang/String;)V
public abstract fun setSourceMap (Z)V
public abstract fun setSourceMapEmbedSources (Ljava/lang/String;)V
public abstract fun setSourceMapNamesPolicy (Ljava/lang/String;)V
@@ -361,11 +352,8 @@ public final class org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions$DefaultImpls
public static fun getFriendModulesDisabled (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Z
public static fun getLanguageVersion (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Ljava/lang/String;
public static fun getMain (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Ljava/lang/String;
public static fun getMetaInfo (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Z
public static fun getModuleKind (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Ljava/lang/String;
public static fun getModuleName (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Ljava/lang/String;
public static fun getNoStdlib (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Z
public static fun getOutputFile (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Ljava/lang/String;
public static fun getSourceMap (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Z
public static fun getSourceMapEmbedSources (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Ljava/lang/String;
public static fun getSourceMapNamesPolicy (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;)Ljava/lang/String;
@@ -382,11 +370,8 @@ public final class org/jetbrains/kotlin/gradle/dsl/KotlinJsOptions$DefaultImpls
public static fun setFriendModulesDisabled (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Z)V
public static fun setLanguageVersion (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Ljava/lang/String;)V
public static fun setMain (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Ljava/lang/String;)V
public static fun setMetaInfo (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Z)V
public static fun setModuleKind (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Ljava/lang/String;)V
public static fun setModuleName (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Ljava/lang/String;)V
public static fun setNoStdlib (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Z)V
public static fun setOutputFile (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Ljava/lang/String;)V
public static fun setSourceMap (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Z)V
public static fun setSourceMapEmbedSources (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Ljava/lang/String;)V
public static fun setSourceMapNamesPolicy (Lorg/jetbrains/kotlin/gradle/dsl/KotlinJsOptions;Ljava/lang/String;)V
@@ -28,14 +28,6 @@ interface KotlinJsCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommon
@get:org.gradle.api.tasks.Input
val main: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode>
/**
* Generate .meta.js and .kjsm files with metadata. Use this to create a library.
*
* Default value: true
*/
@get:org.gradle.api.tasks.Input
val metaInfo: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* The kind of JS module generated by the compiler.
*
@@ -55,23 +47,6 @@ interface KotlinJsCompilerOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommon
@get:org.gradle.api.tasks.Input
val moduleName: org.gradle.api.provider.Property<kotlin.String>
/**
* Don't automatically include the default Kotlin/JS stdlib in compilation dependencies.
*
* Default value: true
*/
@get:org.gradle.api.tasks.Input
val noStdlib: org.gradle.api.provider.Property<kotlin.Boolean>
/**
* Destination *.js file for the compilation result.
*
* Default value: null
*/
@Deprecated(message = "Only for legacy backend. For IR backend please use task.destinationDirectory and moduleName", level = DeprecationLevel.WARNING)
@get:org.gradle.api.tasks.Internal
val outputFile: org.gradle.api.provider.Property<kotlin.String>
/**
* Generate a source map.
*
@@ -38,15 +38,6 @@ interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
get() = options.main.get().mainKotlinOption
set(value) = options.main.set(value.mainCompilerOption)
/**
* Generate .meta.js and .kjsm files with metadata. Use this to create a library.
*
* Default value: true
*/
var metaInfo: kotlin.Boolean
get() = options.metaInfo.get()
set(value) = options.metaInfo.set(value)
private val kotlin.String.moduleKindCompilerOption get() = org.jetbrains.kotlin.gradle.dsl.JsModuleKind.fromKind(this)
private val org.jetbrains.kotlin.gradle.dsl.JsModuleKind.moduleKindKotlinOption get() = this.kind
@@ -71,25 +62,6 @@ interface KotlinJsOptions : org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptions
get() = options.moduleName.orNull
set(value) = options.moduleName.set(value)
/**
* Don't automatically include the default Kotlin/JS stdlib in compilation dependencies.
*
* Default value: true
*/
var noStdlib: kotlin.Boolean
get() = options.noStdlib.get()
set(value) = options.noStdlib.set(value)
/**
* Destination *.js file for the compilation result.
*
* Default value: null
*/
@Deprecated(message = "Only for legacy backend. For IR backend please use task.destinationDirectory and moduleName", level = DeprecationLevel.WARNING)
var outputFile: kotlin.String?
get() = options.outputFile.orNull
set(value) = options.outputFile.set(value)
/**
* Generate a source map.
*
@@ -15,22 +15,12 @@ internal abstract class KotlinJsCompilerOptionsDefault @javax.inject.Inject cons
override val main: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode> =
objectFactory.property(org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode::class.java).convention(org.jetbrains.kotlin.gradle.dsl.JsMainFunctionExecutionMode.CALL)
override val metaInfo: org.gradle.api.provider.Property<kotlin.Boolean> =
objectFactory.property(kotlin.Boolean::class.java).convention(true)
override val moduleKind: org.gradle.api.provider.Property<org.jetbrains.kotlin.gradle.dsl.JsModuleKind> =
objectFactory.property(org.jetbrains.kotlin.gradle.dsl.JsModuleKind::class.java).convention(org.jetbrains.kotlin.gradle.dsl.JsModuleKind.MODULE_PLAIN)
override val moduleName: org.gradle.api.provider.Property<kotlin.String> =
objectFactory.property(kotlin.String::class.java)
override val noStdlib: org.gradle.api.provider.Property<kotlin.Boolean> =
objectFactory.property(kotlin.Boolean::class.java).convention(true)
@Deprecated(message = "Only for legacy backend. For IR backend please use task.destinationDirectory and moduleName", level = DeprecationLevel.WARNING)
override val outputFile: org.gradle.api.provider.Property<kotlin.String> =
objectFactory.property(kotlin.String::class.java)
override val sourceMap: org.gradle.api.provider.Property<kotlin.Boolean> =
objectFactory.property(kotlin.Boolean::class.java).convention(false)
@@ -14,11 +14,8 @@ internal object KotlinJsCompilerOptionsHelper {
org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.fillCompilerArguments(from, args)
args.friendModulesDisabled = from.friendModulesDisabled.get()
args.main = from.main.get().mode
args.metaInfo = from.metaInfo.get()
args.moduleKind = from.moduleKind.get().kind
args.moduleName = from.moduleName.orNull
args.noStdlib = from.noStdlib.get()
args.outputFile = from.outputFile.orNull
args.sourceMap = from.sourceMap.get()
args.sourceMapEmbedSources = from.sourceMapEmbedSources.orNull?.mode
args.sourceMapNamesPolicy = from.sourceMapNamesPolicy.orNull?.policy
@@ -35,11 +32,8 @@ internal object KotlinJsCompilerOptionsHelper {
org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptionsHelper.syncOptionsAsConvention(from, into)
into.friendModulesDisabled.convention(from.friendModulesDisabled)
into.main.convention(from.main)
into.metaInfo.convention(from.metaInfo)
into.moduleKind.convention(from.moduleKind)
into.moduleName.convention(from.moduleName)
into.noStdlib.convention(from.noStdlib)
into.outputFile.convention(from.outputFile)
into.sourceMap.convention(from.sourceMap)
into.sourceMapEmbedSources.convention(from.sourceMapEmbedSources)
into.sourceMapNamesPolicy.convention(from.sourceMapNamesPolicy)
@@ -58,23 +58,10 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
val kotlinSourceDirectorySet = compilationInfo.tcs.compilation.defaultSourceSet.kotlin
kotlinSourceDirectorySet.destinationDirectory.value(defaultKotlinDestinationDir)
task.configure {
if (it is Kotlin2JsCompile) {
it.defaultDestinationDirectory.convention(kotlinSourceDirectorySet.destinationDirectory)
} else {
it.destinationDirectory.convention(kotlinSourceDirectorySet.destinationDirectory)
}
it.destinationDirectory.convention(kotlinSourceDirectorySet.destinationDirectory)
}
compilationInfo.classesDirs.from(kotlinSourceDirectorySet.destinationDirectory).builtBy(task)
if (compilationInfo.tcs.compilation.platformType == KotlinPlatformType.js) {
@Suppress("UNCHECKED_CAST")
kotlinSourceDirectorySet.compiledBy(
task as TaskProvider<Kotlin2JsCompile>,
Kotlin2JsCompile::defaultDestinationDirectory
)
(kotlinSourceDirectorySet.classesDirectory as Property<Directory>).set(task.flatMap { it.destinationDirectory })
} else {
kotlinSourceDirectorySet.compiledBy(task, AbstractKotlinCompile<*>::destinationDirectory)
}
kotlinSourceDirectorySet.compiledBy(task, AbstractKotlinCompile<*>::destinationDirectory)
if (compilationInfo.isMain) {
project.tasks.named(
compilationInfo.tcs.compilation.target.artifactsTaskName,
@@ -133,11 +120,7 @@ internal abstract class KotlinSourceSetProcessor<T : AbstractKotlinCompile<*>>(
protected fun applyStandardTaskConfiguration(taskConfiguration: AbstractKotlinCompileConfig<*>) {
taskConfiguration.configureTask {
it.description = taskDescription
if (it is Kotlin2JsCompile) {
it.defaultDestinationDirectory.convention(defaultKotlinDestinationDir)
} else {
it.destinationDirectory.convention(defaultKotlinDestinationDir)
}
it.destinationDirectory.convention(defaultKotlinDestinationDir)
it.libraries.from({ compilationInfo.compileDependencyFiles })
}
}
@@ -87,10 +87,9 @@ internal object CompilerArgumentMetrics : FusMetrics {
is K2JSCompilerArguments -> {
val args = K2JSCompilerArguments()
parseCommandLineArguments(argsArray.toList(), args)
if (!args.isPreIrBackendDisabled() || args.irProduceJs) {
metricsConsumer.report(BooleanMetrics.JS_SOURCE_MAP, args.sourceMap)
}
if (args.irProduceJs) {
metricsConsumer.report(BooleanMetrics.JS_SOURCE_MAP, args.sourceMap)
metricsConsumer.report(StringMetrics.JS_PROPERTY_LAZY_INITIALIZATION, args.irPropertyLazyInitialization.toString())
}
}
@@ -15,7 +15,6 @@ import org.jetbrains.kotlin.gradle.targets.js.ir.*
import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
import org.jetbrains.kotlin.gradle.utils.klibModuleName
import org.jetbrains.kotlin.gradle.utils.providerWithLazyConvention
import java.io.File
internal typealias Kotlin2JsCompileConfig = BaseKotlin2JsCompileConfig<Kotlin2JsCompile>
@@ -37,26 +36,6 @@ internal open class BaseKotlin2JsCompileConfig<TASK : Kotlin2JsCompile>(
configureAdditionalFreeCompilerArguments(task, compilation)
task.destinationDirectory
.convention(
project.objects.directoryProperty().fileProvider(
task.defaultDestinationDirectory.map {
val freeArgs = task.enhancedFreeCompilerArgs.get()
@Suppress("DEPRECATION")
if (task.compilerOptions.outputFile.orNull != null) {
if (freeArgs.contains(PRODUCE_UNZIPPED_KLIB)) {
val file = File(task.compilerOptions.outputFile.get())
if (file.extension == "") file else file.parentFile
} else {
File(task.compilerOptions.outputFile.get()).parentFile
}
} else {
it.asFile
}
}
)
)
task.libraryFilterCacheService.value(libraryFilterCachingService).disallowChanges()
task.incrementalModuleInfoProvider.value(incrementalModuleInfoProvider).disallowChanges()
}