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 f384ded29d2..583a67b1be5 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 @@ -223,6 +223,7 @@ class K2JsIrCompiler : CLICompiler() { libraries, icCaches, IrFactoryImplForJsIC(WholeWorldStageController()), + mainCallArguments, ::buildCacheForModuleFiles ) diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/invalidation.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/invalidation.kt index 72863850bd3..1b1ccc8022f 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/invalidation.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/ic/invalidation.kt @@ -161,6 +161,7 @@ private fun buildCacheForModule( cacheConsumer: PersistentCacheConsumer, signatureDeserializers: Map>, fileFingerPrints: Map, + mainArguments: List?, cacheExecutor: CacheExecutor ) { val dirtyIrFiles = irModule.files.filter { it.fileEntry.name in dirtyFiles } @@ -202,7 +203,7 @@ private fun buildCacheForModule( // TODO: actual way of building a cache could change in future - cacheExecutor.execute(irModule, dependencies, deserializer, configuration, dirtyFiles, deletedFiles, cacheConsumer, emptySet(), null) // TODO: main arguments? + cacheExecutor.execute(irModule, dependencies, deserializer, configuration, dirtyFiles, deletedFiles, cacheConsumer, emptySet(), mainArguments) cacheConsumer.commitLibraryPath(libraryInfo.libPath.toCanonicalPath(), libraryInfo.flatHash, libraryInfo.transHash) } @@ -391,6 +392,7 @@ fun actualizeCacheForModule( dependencies: Collection, icCachePaths: Collection, irFactory: IrFactory, + mainArguments: List?, executor: CacheExecutor ): CacheUpdateStatus { val modulePath = moduleName.toCanonicalPath() @@ -418,7 +420,17 @@ fun actualizeCacheForModule( val currentModule = libraries[moduleName.toCanonicalPath()] ?: error("No loaded library found for path $moduleName") val persistentCacheConsumer = createCacheConsumer(cachePath) - return actualizeCacheForModule(currentModule, cacheInfo, compilerConfiguration, dependencyGraph, persistentCacheProviders, persistentCacheConsumer, irFactory, executor) + return actualizeCacheForModule( + currentModule, + cacheInfo, + compilerConfiguration, + dependencyGraph, + persistentCacheProviders, + persistentCacheConsumer, + irFactory, + mainArguments, + executor + ) } @@ -430,6 +442,7 @@ private fun actualizeCacheForModule( persistentCacheProviders: Map, persistentCacheConsumer: PersistentCacheConsumer, irFactory: IrFactory, + mainArguments: List?, cacheExecutor: CacheExecutor ): CacheUpdateStatus { // 1. Invalidate @@ -529,6 +542,7 @@ private fun actualizeCacheForModule( persistentCacheConsumer, deserializers, fileFingerPrints, + mainArguments, cacheExecutor ) return CacheUpdateStatus.DIRTY // invalidated and re-built 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 bec06bbd0d8..471c03de237 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/incremental/AbstractInvalidationTest.kt @@ -27,6 +27,7 @@ import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.test.KotlinTestWithEnvironment +import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator import org.jetbrains.kotlin.test.util.JUnit4Assertions import java.io.File import kotlin.io.path.createTempDirectory @@ -66,7 +67,16 @@ abstract class AbstractInvalidationTest : KotlinTestWithEnvironment() { val configuration = createConfiguration("stdlib") - actualizeCacheForModule(stdlibKlibPath, cacheDir.canonicalPath, configuration, listOf(stdlibKlibPath), emptyList(), IrFactoryImpl, ::emptyChecker) + actualizeCacheForModule( + stdlibKlibPath, + cacheDir.canonicalPath, + configuration, + listOf(stdlibKlibPath), + emptyList(), + IrFactoryImpl, + null, // TODO: mainArguments + ::emptyChecker + ) stdlibCacheDir = cacheDir } @@ -209,6 +219,7 @@ abstract class AbstractInvalidationTest : KotlinTestWithEnvironment() { dependenciesPaths, icCaches.map { it.canonicalPath },// + moduleCacheDir.canonicalPath, IrFactoryImpl, + null, // TODO: mainArguments ::dirtyFilesChecker )