[K/JS] Add flag for disabling signature uniqueness checks at klib generating phase

This commit is contained in:
Artem Kobzar
2022-10-14 13:08:58 +00:00
committed by Space Team
parent d249b02cda
commit 9a4a30c9bb
7 changed files with 25 additions and 3 deletions
@@ -422,6 +422,12 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
)
var normalizeAbsolutePath: Boolean by FreezableVar(false)
@Argument(
value = "-Xklib-enable-signature-clash-checks",
description = "Enable the checks on uniqueness of signatures"
)
var enableSignatureClashChecks: Boolean by FreezableVar(true)
@Argument(value = "-Xenable-incremental-compilation", description = "Enable incremental compilation")
var incrementalCompilation: Boolean? by FreezableVar(null)
@@ -216,6 +216,7 @@ class K2JsIrCompiler : CLICompiler<K2JSCompilerArguments>() {
}
configuration.put(CommonConfigurationKeys.KLIB_NORMALIZE_ABSOLUTE_PATH, arguments.normalizeAbsolutePath)
configuration.put(CommonConfigurationKeys.PRODUCE_KLIB_SIGNATURES_CLASH_CHECKS, arguments.enableSignatureClashChecks)
val environmentForJS =
KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JS_CONFIG_FILES)
@@ -71,6 +71,10 @@ object CommonConfigurationKeys {
val KLIB_NORMALIZE_ABSOLUTE_PATH =
CompilerConfigurationKey.create<Boolean>("Normalize absolute paths in klib (replace file separator with '/')")
@JvmField
val PRODUCE_KLIB_SIGNATURES_CLASH_CHECKS =
CompilerConfigurationKey.create<Boolean>("Turn on the checks on uniqueness of signatures")
@JvmField
val INCREMENTAL_COMPILATION =
CompilerConfigurationKey.create<Boolean>("Enable incremental compilation")
@@ -734,6 +734,7 @@ fun serializeModuleIntoKlib(
val compatibilityMode = CompatibilityMode(abiVersion)
val sourceBaseDirs = configuration[CommonConfigurationKeys.KLIB_RELATIVE_PATH_BASES] ?: emptyList()
val absolutePathNormalization = configuration[CommonConfigurationKeys.KLIB_NORMALIZE_ABSOLUTE_PATH] ?: false
val signatureClashChecks = configuration[CommonConfigurationKeys.PRODUCE_KLIB_SIGNATURES_CLASH_CHECKS] ?: false
val serializedIr =
JsIrModuleSerializer(
@@ -743,7 +744,8 @@ fun serializeModuleIntoKlib(
compatibilityMode,
skipExpects = !configuration.expectActualLinker,
normalizeAbsolutePaths = absolutePathNormalization,
sourceBaseDirs = sourceBaseDirs
sourceBaseDirs = sourceBaseDirs,
signatureClashChecks
).serializedIrModule(moduleFragment)
val moduleDescriptor = moduleFragment.descriptor
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.ir.backend.js.lower.serialization.ir
import org.jetbrains.kotlin.backend.common.serialization.CompatibilityMode
import org.jetbrains.kotlin.backend.common.serialization.DeclarationTable
import org.jetbrains.kotlin.backend.common.serialization.IdSignatureClashTracker
import org.jetbrains.kotlin.backend.common.serialization.IrModuleSerializer
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.ir.IrBuiltIns
@@ -21,10 +22,14 @@ class JsIrModuleSerializer(
compatibilityMode: CompatibilityMode,
val skipExpects: Boolean,
normalizeAbsolutePaths: Boolean,
sourceBaseDirs: Collection<String>
sourceBaseDirs: Collection<String>,
shouldCheckSignaturesOnUniqueness: Boolean = true
) : IrModuleSerializer<JsIrFileSerializer>(messageLogger, compatibilityMode, normalizeAbsolutePaths, sourceBaseDirs) {
private val globalDeclarationTable = JsGlobalDeclarationTable(irBuiltIns)
private val globalDeclarationTable = JsGlobalDeclarationTable(
irBuiltIns,
if (shouldCheckSignaturesOnUniqueness) JsUniqIdClashTracker() else IdSignatureClashTracker.DEFAULT_TRACKER
)
override fun createSerializerForFile(file: IrFile): JsIrFileSerializer =
JsIrFileSerializer(
+2
View File
@@ -73,6 +73,8 @@ where advanced options include:
-Xeffect-system Enable experimental language feature: effect system
-Xenable-builder-inference Use the builder inference by default, for all calls with lambdas which can't be resolved without it.
The corresponding calls' declarations may not be marked with @BuilderInference.
-Xklib-enable-signature-clash-checks
Enable the checks on uniqueness of signatures
-Xexpect-actual-linker Enable experimental expect/actual linker
-Xexplicit-api={strict|warning|disable}
Force compiler to report errors on all public API declarations without explicit visibility or return type.
+2
View File
@@ -178,6 +178,8 @@ where advanced options include:
-Xeffect-system Enable experimental language feature: effect system
-Xenable-builder-inference Use the builder inference by default, for all calls with lambdas which can't be resolved without it.
The corresponding calls' declarations may not be marked with @BuilderInference.
-Xklib-enable-signature-clash-checks
Enable the checks on uniqueness of signatures
-Xexpect-actual-linker Enable experimental expect/actual linker
-Xexplicit-api={strict|warning|disable}
Force compiler to report errors on all public API declarations without explicit visibility or return type.