From 2578bfefd5f3b36778845fe12c77edbad80e7d0d Mon Sep 17 00:00:00 2001 From: Artem Kobzar Date: Wed, 13 Sep 2023 09:50:24 +0000 Subject: [PATCH] [K/JS] Add useEsClasses to list of compiler arguments that invalidate IC cache ^KT-61795 Fixed --- .../src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 3 +-- .../jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt | 2 +- .../src/org/jetbrains/kotlin/ir/backend/js/compiler.kt | 4 ---- .../org/jetbrains/kotlin/ir/backend/js/compilerWithIC.kt | 2 -- .../org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt | 2 -- .../kotlin/ir/backend/js/ic/HashCalculatorForIC.kt | 1 + .../kotlin/test/services/CompilerConfigurationProvider.kt | 4 ++++ .../org/jetbrains/kotlin/js/config/JSConfigurationKeys.java | 3 +++ .../kotlin/incremental/AbstractInvalidationTest.kt | 2 +- .../kotlin/js/test/converters/JsIrBackendFacade.kt | 2 -- .../kotlin/js/test/utils/JsIrIncrementalDataProvider.kt | 6 +----- 11 files changed, 12 insertions(+), 19 deletions(-) diff --git a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt index 78a882ff2cd..c258a4e1498 100644 --- a/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt +++ b/compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/js/K2JsIrCompiler.kt @@ -116,7 +116,6 @@ class K2JsIrCompiler : CLICompiler() { messageCollector ), granularity = arguments.granularity, - es6mode = arguments.useEsClasses ) } @@ -171,6 +170,7 @@ class K2JsIrCompiler : CLICompiler() { configuration.put(JSConfigurationKeys.WASM_USE_TRAPS_INSTEAD_OF_EXCEPTIONS, arguments.wasmUseTrapsInsteadOfExceptions) configuration.putIfNotNull(JSConfigurationKeys.WASM_TARGET, arguments.wasmTarget?.let(WasmTarget::fromName)) + configuration.put(JSConfigurationKeys.USE_ES6_CLASSES, arguments.useEsClasses) configuration.put(JSConfigurationKeys.OPTIMIZE_GENERATED_JS, arguments.optimizeGeneratedJs) val commonSourcesArray = arguments.commonSources @@ -604,7 +604,6 @@ class K2JsIrCompiler : CLICompiler() { cfg, arguments.granularity, PhaseConfig(jsPhases), - es6mode = arguments.useEsClasses ) } ) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt index ffb9169bfb5..2aea7220a36 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/JsIrBackendContext.kt @@ -62,7 +62,6 @@ class JsIrBackendContext( val additionalExportedDeclarationNames: Set, keep: Set, override val configuration: CompilerConfiguration, // TODO: remove configuration from backend context - override val es6mode: Boolean = false, val dceRuntimeDiagnostic: RuntimeDiagnostic? = null, val safeExternalBoolean: Boolean = false, val safeExternalBooleanDiagnostic: RuntimeDiagnostic? = null, @@ -104,6 +103,7 @@ class JsIrBackendContext( val devMode = configuration[JSConfigurationKeys.DEVELOPER_MODE] ?: false val errorPolicy = configuration[JSConfigurationKeys.ERROR_TOLERANCE_POLICY] ?: ErrorTolerancePolicy.DEFAULT + override val es6mode = configuration[JSConfigurationKeys.USE_ES6_CLASSES] ?: false val externalPackageFragment = mutableMapOf() diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt index a94ff4609b2..7f6fa6feea7 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compiler.kt @@ -43,7 +43,6 @@ fun compile( exportedDeclarations: Set = emptySet(), keep: Set = emptySet(), dceRuntimeDiagnostic: RuntimeDiagnostic? = null, - es6mode: Boolean = false, verifySignatures: Boolean = true, safeExternalBoolean: Boolean = false, safeExternalBooleanDiagnostic: RuntimeDiagnostic? = null, @@ -67,7 +66,6 @@ fun compile( exportedDeclarations, keep, dceRuntimeDiagnostic, - es6mode, safeExternalBoolean, safeExternalBooleanDiagnostic, granularity, @@ -87,7 +85,6 @@ fun compileIr( exportedDeclarations: Set, keep: Set, dceRuntimeDiagnostic: RuntimeDiagnostic?, - es6mode: Boolean, safeExternalBoolean: Boolean, safeExternalBooleanDiagnostic: RuntimeDiagnostic?, granularity: JsGenerationGranularity, @@ -108,7 +105,6 @@ fun compileIr( exportedDeclarations, keep, configuration, - es6mode = es6mode, dceRuntimeDiagnostic = dceRuntimeDiagnostic, safeExternalBoolean = safeExternalBoolean, safeExternalBooleanDiagnostic = safeExternalBooleanDiagnostic, diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compilerWithIC.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compilerWithIC.kt index 1cda7badde2..1e0d4392051 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compilerWithIC.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/compilerWithIC.kt @@ -27,7 +27,6 @@ class JsIrCompilerWithIC( granularity: JsGenerationGranularity, private val phaseConfig: PhaseConfig, exportedDeclarations: Set = emptySet(), - es6mode: Boolean = false ) : JsIrCompilerICInterface { private val context: JsIrBackendContext @@ -42,7 +41,6 @@ class JsIrCompilerWithIC( exportedDeclarations, keep = emptySet(), configuration = configuration, - es6mode = es6mode, granularity = granularity, incrementalCacheEnabled = true ) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt index 06b92125075..65b7eb4c219 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/CacheUpdater.kt @@ -782,7 +782,6 @@ fun rebuildCacheForDirtyFiles( irFactory: IrFactory, exportedDeclarations: Set, mainArguments: List?, - es6mode: Boolean ): Pair>>> { val internationService = IrInterningService() val emptyMetadata = object : KotlinSourceFileExports() { @@ -809,7 +808,6 @@ fun rebuildCacheForDirtyFiles( JsGenerationGranularity.PER_MODULE, PhaseConfig(jsPhases), exportedDeclarations, - es6mode ) // Load declarations referenced during `context` initialization diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/HashCalculatorForIC.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/HashCalculatorForIC.kt index 42093bea2d6..7fb71b03239 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/HashCalculatorForIC.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/HashCalculatorForIC.kt @@ -152,6 +152,7 @@ internal class ICHasher { JSConfigurationKeys.SOURCE_MAP, JSConfigurationKeys.META_INFO, JSConfigurationKeys.DEVELOPER_MODE, + JSConfigurationKeys.USE_ES6_CLASSES, JSConfigurationKeys.GENERATE_POLYFILLS, JSConfigurationKeys.GENERATE_DTS, JSConfigurationKeys.PROPERTY_LAZY_INITIALIZATION, diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt index cb90cf28800..6802ca50251 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt @@ -137,6 +137,10 @@ fun createCompilerConfiguration(module: TestModule, configurators: List OPTIMIZE_GENERATED_JS = CompilerConfigurationKey.create("perform additional optimizations on the generated JS code"); + + public static final CompilerConfigurationKey USE_ES6_CLASSES = + CompilerConfigurationKey.create("perform ES6 class usage"); } diff --git a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt index a7fd6965682..36a06bde040 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt @@ -132,6 +132,7 @@ abstract class AbstractInvalidationTest( copy.put(JSConfigurationKeys.MODULE_KIND, moduleKind) copy.put(JSConfigurationKeys.PROPERTY_LAZY_INITIALIZATION, true) copy.put(JSConfigurationKeys.SOURCE_MAP, true) + copy.put(JSConfigurationKeys.USE_ES6_CLASSES, targetBackend == TargetBackend.JS_IR_ES6) copy.languageVersionSettings = with(LanguageVersionSettingsBuilder()) { language.forEach { @@ -370,7 +371,6 @@ abstract class AbstractInvalidationTest( granularity, getPhaseConfig(projStep.id), setOf(FqName(BOX_FUNCTION_NAME)), - targetBackend == TargetBackend.JS_IR_ES6 ) } ) diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/converters/JsIrBackendFacade.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/converters/JsIrBackendFacade.kt index 26313387187..aa06c1d4400 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/converters/JsIrBackendFacade.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/converters/JsIrBackendFacade.kt @@ -86,7 +86,6 @@ class JsIrBackendFacade( val splitPerFile = JsEnvironmentConfigurationDirectives.SPLIT_PER_FILE in module.directives val perModule = JsEnvironmentConfigurationDirectives.PER_MODULE in module.directives val keep = module.directives[JsEnvironmentConfigurationDirectives.KEEP].toSet() - val es6Mode = JsEnvironmentConfigurationDirectives.ES6_MODE in module.directives val granularity = when { !firstTimeCompilation -> JsGenerationGranularity.WHOLE_PROGRAM @@ -153,7 +152,6 @@ class JsIrBackendFacade( exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, TEST_FUNCTION))), keep = keep, dceRuntimeDiagnostic = null, - es6mode = es6Mode, safeExternalBoolean = JsEnvironmentConfigurationDirectives.SAFE_EXTERNAL_BOOLEAN in module.directives, safeExternalBooleanDiagnostic = module.directives[JsEnvironmentConfigurationDirectives.SAFE_EXTERNAL_BOOLEAN_DIAGNOSTIC].singleOrNull(), granularity = granularity, diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/utils/JsIrIncrementalDataProvider.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/utils/JsIrIncrementalDataProvider.kt index 7a07dff7acf..09b3b6930ca 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/utils/JsIrIncrementalDataProvider.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/utils/JsIrIncrementalDataProvider.kt @@ -17,7 +17,6 @@ import org.jetbrains.kotlin.konan.properties.propertyList import org.jetbrains.kotlin.library.KLIB_PROPERTY_DEPENDS import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives import org.jetbrains.kotlin.test.model.TestModule import org.jetbrains.kotlin.test.services.* @@ -87,7 +86,7 @@ class JsIrIncrementalDataProvider(private val testServices: TestServices) : Test .run { if (shouldBeGenerated()) arguments() else null } runtimeKlibPath.forEach { - recordIncrementalData(it, null, libs, configuration, mainArguments, module.targetBackend) + recordIncrementalData(it, null, libs, configuration, mainArguments) } } @@ -109,7 +108,6 @@ class JsIrIncrementalDataProvider(private val testServices: TestServices) : Test allDependencies + library, configuration, mainArguments, - module.targetBackend ) } @@ -119,7 +117,6 @@ class JsIrIncrementalDataProvider(private val testServices: TestServices) : Test allDependencies: List, configuration: CompilerConfiguration, mainArguments: List?, - targetBackend: TargetBackend? ) { val canonicalPath = File(path).canonicalPath val predefinedModuleCache = predefinedKlibHasIcCache[canonicalPath] @@ -150,7 +147,6 @@ class JsIrIncrementalDataProvider(private val testServices: TestServices) : Test IrFactoryImplForJsIC(WholeWorldStageController()), setOf(FqName.fromSegments(listOfNotNull(testPackage, JsBoxRunner.TEST_FUNCTION))), mainArguments, - targetBackend == TargetBackend.JS_IR_ES6 ) val moduleCache = icCache[canonicalPath] ?: TestArtifactCache(mainModuleIr.name.asString())