From 0a49b24320019e0377e010fe134c62289c58c244 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Thu, 17 Jun 2021 23:28:16 +0300 Subject: [PATCH] [JS IR] Move klib resolution from cli into compiler Simplify CLI -> Compiler API Clean up code --- .../jetbrains/kotlin/cli/js/K2JsIrCompiler.kt | 43 +++------ .../kotlin/ir/backend/js/compiler.kt | 8 +- .../jetbrains/kotlin/backend/wasm/compiler.kt | 8 +- .../kotlin/ir/backend/js/JsLibraryResolver.kt | 4 +- .../jetbrains/kotlin/ir/backend/js/klib.kt | 88 ++++++++++++++----- .../kotlin/codegen/GenerationUtils.kt | 16 +++- .../org/jetbrains/kotlin/js/test/ApiTest.kt | 12 +-- .../kotlin/js/test/BasicIrBoxTest.kt | 10 +-- .../kotlin/js/test/BasicWasmBoxTest.kt | 4 +- 9 files changed, 104 insertions(+), 89 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 7e645c9e928..12e7c96a758 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 @@ -23,7 +23,6 @@ import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoot import org.jetbrains.kotlin.cli.common.extensions.ScriptEvaluationExtension import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity.* -import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.messages.MessageUtil import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles @@ -48,7 +47,6 @@ import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.serialization.js.ModuleKind -import org.jetbrains.kotlin.util.Logger import org.jetbrains.kotlin.utils.KotlinPaths import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull @@ -181,17 +179,6 @@ class K2JsIrCompiler : CLICompiler() { // TODO: Handle non-empty main call arguments val mainCallArguments = if (K2JsArgumentConstants.NO_CALL == arguments.main) null else emptyList() - val resolvedLibraries = jsResolveLibraries( - libraries, - configuration[JSConfigurationKeys.REPOSITORIES] ?: emptyList(), - messageCollectorLogger(configuration[CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY] ?: error("Could not find message collector")) - ) - - val friendAbsolutePaths = friendLibraries.map { File(it).absolutePath } - val friendDependencies = resolvedLibraries.getFullList().filter { - it.libraryFile.absolutePath in friendAbsolutePaths - } - if (arguments.irProduceKlibDir || arguments.irProduceKlibFile) { if (arguments.irProduceKlibFile) { require(outputFile.extension == KLIB_FILE_EXTENSION) { "Please set up .klib file as output" } @@ -202,8 +189,8 @@ class K2JsIrCompiler : CLICompiler() { files = sourcesFiles, analyzer = AnalyzerWithCompilerReport(config.configuration), configuration = config.configuration, - allDependencies = resolvedLibraries, - friendDependencies = friendDependencies, + dependencies = libraries, + friendDependencies = friendLibraries, irFactory = PersistentIrFactory(), // TODO IrFactoryImpl? outputKlibPath = outputFile.path, nopack = arguments.irProduceKlibDir, @@ -220,9 +207,10 @@ class K2JsIrCompiler : CLICompiler() { if (sourcesFiles.isNotEmpty()) { messageCollector.report(ERROR, "Source files are not supported when -Xinclude is present") } - val allLibraries = resolvedLibraries.getFullList() - val mainLib = allLibraries.find { it.libraryFile.absolutePath == File(includes).absolutePath }!! - MainModule.Klib(mainLib) + val includesPath = File(includes).canonicalPath + val mainLibPath = libraries.find { File(it).canonicalPath == includesPath } + ?: error("No library with name $includes ($includesPath) found") + MainModule.Klib(mainLibPath) } else { MainModule.SourceFiles(sourcesFiles) } @@ -235,8 +223,8 @@ class K2JsIrCompiler : CLICompiler() { config.configuration, PhaseConfig(wasmPhases), IrFactoryImpl, - allDependencies = resolvedLibraries, - friendDependencies = friendDependencies, + dependencies = libraries, + friendDependencies = friendLibraries, exportedDeclarations = setOf(FqName("main")) ) val outputWasmFile = outputFile.withReplacedExtensionOrNull(outputFile.extension, "wasm")!! @@ -262,8 +250,8 @@ class K2JsIrCompiler : CLICompiler() { config.configuration, phaseConfig, if (arguments.irDceDriven) PersistentIrFactory() else IrFactoryImpl, - allDependencies = resolvedLibraries, - friendDependencies = friendDependencies, + dependencies = libraries, + friendDependencies = friendLibraries, mainArguments = mainCallArguments, generateFullJs = !arguments.irDce, generateDceJs = arguments.irDce, @@ -476,17 +464,6 @@ fun RuntimeDiagnostic.Companion.resolve( } } -fun messageCollectorLogger(collector: MessageCollector) = object : Logger { - override fun warning(message: String) = collector.report(STRONG_WARNING, message) - override fun error(message: String) = collector.report(ERROR, message) - override fun log(message: String) = collector.report(LOGGING, message) - override fun fatal(message: String): Nothing { - collector.report(ERROR, message) - (collector as? GroupingMessageCollector)?.flush() - kotlin.error(message) - } -} - fun loadPluginsForTests(configuration: CompilerConfiguration): ExitCode { var pluginClasspaths: Iterable = emptyList() val kotlinPaths = PathUtil.kotlinPathsForCompiler 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 0790fc4db96..0bd4e211516 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 @@ -22,8 +22,6 @@ import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator import org.jetbrains.kotlin.ir.util.noUnboundLeft import org.jetbrains.kotlin.js.config.RuntimeDiagnostic -import org.jetbrains.kotlin.library.KotlinLibrary -import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.name.FqName class CompilerResult( @@ -45,8 +43,8 @@ fun compile( configuration: CompilerConfiguration, phaseConfig: PhaseConfig, irFactory: IrFactory, - allDependencies: KotlinLibraryResolveResult, - friendDependencies: List, + dependencies: Collection, + friendDependencies: Collection, mainArguments: List?, exportedDeclarations: Set = emptySet(), generateFullJs: Boolean = true, @@ -65,7 +63,7 @@ fun compile( safeExternalBooleanDiagnostic: RuntimeDiagnostic? = null, ): CompilerResult { val (moduleFragment: IrModuleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer, moduleToName) = - loadIr(project, mainModule, analyzer, configuration, allDependencies, friendDependencies, irFactory, verifySignatures) + loadIr(project, mainModule, analyzer, configuration, dependencies, friendDependencies, irFactory, verifySignatures) val moduleDescriptor = moduleFragment.descriptor diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt index c43db145602..43d44c9ef01 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/compiler.kt @@ -19,8 +19,6 @@ import org.jetbrains.kotlin.ir.declarations.IrFactory import org.jetbrains.kotlin.ir.util.ExternalDependenciesGenerator import org.jetbrains.kotlin.ir.util.noUnboundLeft import org.jetbrains.kotlin.ir.util.patchDeclarationParents -import org.jetbrains.kotlin.library.KotlinLibrary -import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi2ir.generators.generateTypicalIrProviderList import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToBinary @@ -36,13 +34,13 @@ fun compileWasm( configuration: CompilerConfiguration, phaseConfig: PhaseConfig, irFactory: IrFactory, - allDependencies: KotlinLibraryResolveResult, - friendDependencies: List, + dependencies: Collection, + friendDependencies: Collection, exportedDeclarations: Set = emptySet() ): WasmCompilerResult { val (moduleFragment, dependencyModules, irBuiltIns, symbolTable, deserializer) = loadIr( - project, mainModule, analyzer, configuration, allDependencies, friendDependencies, + project, mainModule, analyzer, configuration, dependencies, friendDependencies, irFactory, verifySignatures = false ) diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt index dc7e6453985..6c0d2e04341 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/JsLibraryResolver.kt @@ -5,9 +5,7 @@ package org.jetbrains.kotlin.ir.backend.js -import org.jetbrains.kotlin.konan.CompilerVersion import org.jetbrains.kotlin.konan.file.File -import org.jetbrains.kotlin.library.KotlinAbiVersion import org.jetbrains.kotlin.library.KotlinLibrary import org.jetbrains.kotlin.library.KotlinLibraryProperResolverWithAttributes import org.jetbrains.kotlin.library.UnresolvedLibrary @@ -37,7 +35,7 @@ class JsLibraryResolver( } // TODO: This is a temporary set of library resolver policies for js compiler. -fun jsResolveLibraries(libraries: List, repositories: Collection, logger: Logger): KotlinLibraryResolveResult { +fun jsResolveLibraries(libraries: Collection, repositories: Collection, logger: Logger): KotlinLibraryResolveResult { val unresolvedLibraries = libraries.map { UnresolvedLibrary(it, null) } val libraryAbsolutePaths = libraries.map { File(it).absolutePath } // Configure the resolver to only work with absolute paths for now. diff --git a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt index 5531d964b30..710a6e49d8f 100644 --- a/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt +++ b/compiler/ir/serialization.js/src/org/jetbrains/kotlin/ir/backend/js/klib.kt @@ -52,7 +52,7 @@ import org.jetbrains.kotlin.konan.util.KlibMetadataFactories import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.library.impl.BuiltInsPlatform import org.jetbrains.kotlin.library.impl.buildKotlinLibrary -import org.jetbrains.kotlin.library.resolver.KotlinLibraryResolveResult +import org.jetbrains.kotlin.library.resolver.KotlinResolvedLibrary import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.progress.IncrementalNextRoundException import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus @@ -65,6 +65,8 @@ import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.resolve.BindingContextUtils import org.jetbrains.kotlin.storage.LockBasedStorageManager import org.jetbrains.kotlin.storage.StorageManager +import org.jetbrains.kotlin.util.DummyLogger +import org.jetbrains.kotlin.util.Logger import org.jetbrains.kotlin.utils.DFS import java.io.File import org.jetbrains.kotlin.konan.file.File as KFile @@ -92,13 +94,36 @@ private val CompilerConfiguration.expectActualLinker: Boolean class KotlinFileSerializedData(val metadata: ByteArray, val irData: SerializedIrFile) +private fun IrMessageLogger?.toResolverLogger(): Logger { + if (this == null) return DummyLogger + + return object : Logger { + override fun log(message: String) { + report(IrMessageLogger.Severity.INFO, message, null) + } + + override fun error(message: String) { + report(IrMessageLogger.Severity.ERROR, message, null) + } + + override fun warning(message: String) { + report(IrMessageLogger.Severity.WARNING, message, null) + } + + override fun fatal(message: String): Nothing { + report(IrMessageLogger.Severity.ERROR, message, null) + kotlin.error("FATAL ERROR: $message") + } + } +} + fun generateKLib( project: Project, files: List, analyzer: AbstractAnalyzerWithCompilerReport, configuration: CompilerConfiguration, - allDependencies: KotlinLibraryResolveResult, - friendDependencies: List, + dependencies: Collection, + friendDependencies: Collection, irFactory: IrFactory, outputKlibPath: String, nopack: Boolean, @@ -141,8 +166,8 @@ fun generateKLib( } val depsDescriptors = - ModulesStructure(project, MainModule.SourceFiles(files), analyzer, configuration, allDependencies, friendDependencies) - + ModulesStructure(project, MainModule.SourceFiles(files), analyzer, configuration, dependencies, friendDependencies) + val allDependencies = depsDescriptors.allDependencies val (psi2IrContext, hasErrors) = runAnalysisAndPreparePsi2Ir(depsDescriptors, irFactory, errorPolicy) val irBuiltIns = psi2IrContext.irBuiltIns val functionFactory = IrFunctionFactory(irBuiltIns, psi2IrContext.symbolTable) @@ -162,7 +187,7 @@ fun generateKLib( serializedIrFiles?.let { ICData(it, errorPolicy.allowErrors) } ) - sortDependencies(allDependencies.getFullList(), depsDescriptors.descriptors).map { + sortDependencies(allDependencies, depsDescriptors.descriptors).map { irLinker.deserializeOnlyHeaderModule(depsDescriptors.getModuleDescriptor(it), it) } @@ -190,7 +215,7 @@ fun generateKLib( psi2IrContext.bindingContext, files, outputKlibPath, - allDependencies.getFullList(), + allDependencies.map { it.library }, moduleFragment, expectDescriptorToSymbol, icData, @@ -211,8 +236,9 @@ data class IrModuleInfo( val moduleFragmentToUniqueName: Map, ) -private fun sortDependencies(dependencies: List, mapping: Map): Collection { +private fun sortDependencies(resolvedDependencies: List, mapping: Map): Collection { val m2l = mapping.map { it.value to it.key }.toMap() + val dependencies = resolvedDependencies.map { it.library } return DFS.topologicalOrder(dependencies) { m -> val descriptor = mapping[m] ?: error("No descriptor found for library ${m.libraryName}") @@ -225,14 +251,15 @@ fun loadIr( mainModule: MainModule, analyzer: AbstractAnalyzerWithCompilerReport, configuration: CompilerConfiguration, - allDependencies: KotlinLibraryResolveResult, - friendDependencies: List, + dependencies: Collection, + friendDependencies: Collection, irFactory: IrFactory, verifySignatures: Boolean ): IrModuleInfo { - val depsDescriptors = ModulesStructure(project, mainModule, analyzer, configuration, allDependencies, friendDependencies) + val depsDescriptors = ModulesStructure(project, mainModule, analyzer, configuration, dependencies, friendDependencies) val errorPolicy = configuration.get(JSConfigurationKeys.ERROR_TOLERANCE_POLICY) ?: ErrorTolerancePolicy.DEFAULT val messageLogger = configuration.get(IrMessageLogger.IR_MESSAGE_LOGGER) ?: IrMessageLogger.None + val allDependencies = depsDescriptors.allDependencies when (mainModule) { is MainModule.SourceFiles -> { @@ -247,7 +274,7 @@ fun loadIr( val moduleFragmentToUniqueName = mutableMapOf() val irLinker = JsIrLinker(psi2IrContext.moduleDescriptor, messageLogger, irBuiltIns, symbolTable, functionFactory, feContext, null) - val deserializedModuleFragments = sortDependencies(allDependencies.getFullList(), depsDescriptors.descriptors).map { klib -> + val deserializedModuleFragments = sortDependencies(allDependencies, depsDescriptors.descriptors).map { klib -> irLinker.deserializeIrModuleHeader(depsDescriptors.getModuleDescriptor(klib), klib).also { moduleFragment -> klib.manifestProperties.getProperty(KLIB_PROPERTY_JS_OUTPUT_NAME)?.let { moduleFragmentToUniqueName[moduleFragment] = it @@ -276,7 +303,9 @@ fun loadIr( return IrModuleInfo(moduleFragment, deserializedModuleFragments, irBuiltIns, symbolTable, irLinker, moduleFragmentToUniqueName) } is MainModule.Klib -> { - val moduleDescriptor = depsDescriptors.getModuleDescriptor(mainModule.lib) + val mainModuleLib = depsDescriptors.allDependencies.find { it.library.libraryFile.canonicalPath == mainModule.libPath }?.library + ?: error("No module with ${mainModule.libPath} found") + val moduleDescriptor = depsDescriptors.getModuleDescriptor(mainModuleLib) val mangler = JsManglerDesc val signaturer = IdSignatureDescriptor(mangler) val symbolTable = SymbolTable(signaturer, irFactory) @@ -289,9 +318,9 @@ fun loadIr( val moduleFragmentToUniqueName = mutableMapOf() - val deserializedModuleFragments = sortDependencies(allDependencies.getFullList(), depsDescriptors.descriptors).map { klib -> + val deserializedModuleFragments = sortDependencies(allDependencies, depsDescriptors.descriptors).map { klib -> val strategy = - if (klib == mainModule.lib) + if (klib == mainModuleLib) DeserializationStrategy.ALL else DeserializationStrategy.EXPLICITLY_EXPORTED @@ -389,7 +418,7 @@ fun getModuleDescriptorByLibrary(current: KotlinLibrary, mapping: Map) : MainModule() - class Klib(val lib: KotlinLibrary) : MainModule() + class Klib(val libPath: String) : MainModule() } private class ModulesStructure( @@ -397,17 +426,30 @@ private class ModulesStructure( private val mainModule: MainModule, private val analyzer: AbstractAnalyzerWithCompilerReport, val compilerConfiguration: CompilerConfiguration, - val allDependencies: KotlinLibraryResolveResult, - private val friendDependencies: List + dependencies: Collection, + friendDependenciesPaths: Collection ) { + val allDependencies = jsResolveLibraries( + dependencies, + compilerConfiguration[JSConfigurationKeys.REPOSITORIES] ?: emptyList(), + compilerConfiguration[IrMessageLogger.IR_MESSAGE_LOGGER].toResolverLogger() + ).getFullResolvedList() + + val friendDependencies = allDependencies.run { + val friendAbsolutePaths = friendDependenciesPaths.map { File(it).canonicalPath } + filter { + it.library.libraryFile.absolutePath in friendAbsolutePaths + } + } + val moduleDependencies: Map> = run { - val transitives = allDependencies.getFullResolvedList() + val transitives = allDependencies transitives.associate { klib -> klib.library to klib.resolvedDependencies.map { d -> d.library } }.toMap() } - val builtInsDep = allDependencies.getFullList().find { it.isBuiltIns } + val builtInsDep = allDependencies.find { it.library.isBuiltIns } class JsFrontEndResult(val moduleDescriptor: ModuleDescriptor, val bindingContext: BindingContext, val hasErrors: Boolean) @@ -420,8 +462,8 @@ private class ModulesStructure( files, project, compilerConfiguration, - allDependencies.getFullList().map { getModuleDescriptor(it) }, - friendDependencies.map { getModuleDescriptor(it) }, + allDependencies.map { getModuleDescriptor(it.library) }, + friendDependencies.map { getModuleDescriptor(it.library) }, analyzer.targetEnvironment, thisIsBuiltInsModule = builtInModuleDescriptor == null, customBuiltInsModule = builtInModuleDescriptor @@ -477,7 +519,7 @@ private class ModulesStructure( val builtInModuleDescriptor = if (builtInsDep != null) - getModuleDescriptor(builtInsDep) + getModuleDescriptor(builtInsDep.library) else null // null in case compiling builtInModule itself } diff --git a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt index 323c9159446..4e0409d396f 100644 --- a/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt +++ b/compiler/tests-compiler-utils/tests/org/jetbrains/kotlin/codegen/GenerationUtils.kt @@ -18,8 +18,10 @@ import org.jetbrains.kotlin.backend.jvm.JvmGeneratorExtensionsImpl import org.jetbrains.kotlin.backend.jvm.JvmIrCodegenFactory import org.jetbrains.kotlin.backend.jvm.jvmPhases import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys +import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity +import org.jetbrains.kotlin.cli.common.messages.GroupingMessageCollector +import org.jetbrains.kotlin.cli.common.messages.MessageCollector import org.jetbrains.kotlin.cli.common.output.writeAllTo -import org.jetbrains.kotlin.cli.js.messageCollectorLogger import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.NoScopeRecordCliBindingTrace import org.jetbrains.kotlin.cli.jvm.compiler.TopDownAnalyzerFacadeForJVM @@ -43,6 +45,7 @@ import org.jetbrains.kotlin.resolve.CompilerEnvironment import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProviderFactory import org.jetbrains.kotlin.util.DummyLogger +import org.jetbrains.kotlin.util.Logger import java.io.File object GenerationUtils { @@ -140,6 +143,17 @@ object GenerationUtils { return generationState } + private fun messageCollectorLogger(collector: MessageCollector) = object : Logger { + override fun warning(message: String) = collector.report(CompilerMessageSeverity.STRONG_WARNING, message) + override fun error(message: String) = collector.report(CompilerMessageSeverity.ERROR, message) + override fun log(message: String) = collector.report(CompilerMessageSeverity.LOGGING, message) + override fun fatal(message: String): Nothing { + collector.report(CompilerMessageSeverity.ERROR, message) + (collector as? GroupingMessageCollector)?.flush() + kotlin.error(message) + } + } + private fun compileFilesUsingStandardMode( project: Project, files: List, diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt index 18ee5fedbe7..2f2e58658d4 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ApiTest.kt @@ -7,8 +7,6 @@ package org.jetbrains.kotlin.js.test import junit.framework.TestCase import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport -import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.cli.js.messageCollectorLogger import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.config.CommonConfigurationKeys @@ -16,7 +14,6 @@ import org.jetbrains.kotlin.config.CompilerConfiguration import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.EnumEntrySyntheticClassDescriptor import org.jetbrains.kotlin.ir.backend.js.MainModule -import org.jetbrains.kotlin.ir.backend.js.jsResolveLibraries import org.jetbrains.kotlin.ir.backend.js.loadIr import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.js.config.JSConfigurationKeys @@ -72,19 +69,16 @@ class ApiTest : KotlinTestWithEnvironment() { get() { val fullRuntimeKlib: String = System.getProperty("kotlin.js.full.stdlib.path") - val resolvedLibraries = - jsResolveLibraries(listOf(File(fullRuntimeKlib).absolutePath), emptyList(), messageCollectorLogger(MessageCollector.NONE)) - val project = environment.project val configuration = environment.configuration return loadIr( project, - MainModule.Klib(resolvedLibraries.getFullList().single()), + MainModule.Klib(File(fullRuntimeKlib).canonicalPath), AnalyzerWithCompilerReport(configuration), configuration, - resolvedLibraries, - listOf(), + listOf(fullRuntimeKlib), + emptyList(), IrFactoryImpl, verifySignatures = true ).module.descriptor.packagesSerialized() diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt index 1a6e4160098..a358fc872d2 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicIrBoxTest.kt @@ -9,8 +9,6 @@ import org.jetbrains.kotlin.backend.common.phaser.AnyNamedPhase import org.jetbrains.kotlin.backend.common.phaser.PhaseConfig import org.jetbrains.kotlin.backend.common.phaser.toPhaseMap import org.jetbrains.kotlin.cli.common.messages.AnalyzerWithCompilerReport -import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.cli.js.messageCollectorLogger import org.jetbrains.kotlin.ir.backend.js.* import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.declarations.persistent.PersistentIrFactory @@ -112,8 +110,6 @@ abstract class BasicIrBoxTest( compilationCache[it] ?: error("Can't find compiled module for dependency $it") }).map { File(it).absolutePath } - val resolvedLibraries = jsResolveLibraries(allKlibPaths, emptyList(), messageCollectorLogger(MessageCollector.NONE)) - val actualOutputFile = outputFile.absolutePath.let { if (!isMainModule) it.replace("_v5.js", "/") else it } @@ -147,7 +143,7 @@ abstract class BasicIrBoxTest( configuration = config.configuration, phaseConfig = phaseConfig, irFactory = irFactory, - allDependencies = resolvedLibraries, + dependencies = allKlibPaths, friendDependencies = emptyList(), mainArguments = mainCallParameters.run { if (shouldBeGenerated()) arguments() else null }, exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, testFunction))), @@ -181,7 +177,7 @@ abstract class BasicIrBoxTest( configuration = config.configuration, phaseConfig = phaseConfig, irFactory = PersistentIrFactory(), - allDependencies = resolvedLibraries, + dependencies = allKlibPaths, friendDependencies = emptyList(), mainArguments = mainCallParameters.run { if (shouldBeGenerated()) arguments() else null }, exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, testFunction))), @@ -200,7 +196,7 @@ abstract class BasicIrBoxTest( files = filesToCompile, analyzer = AnalyzerWithCompilerReport(config.configuration), configuration = config.configuration, - allDependencies = resolvedLibraries, + dependencies = allKlibPaths, friendDependencies = emptyList(), irFactory = IrFactoryImpl, outputKlibPath = actualOutputFile, diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt index 355b1a9479f..b154b597b80 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicWasmBoxTest.kt @@ -22,8 +22,6 @@ import org.jetbrains.kotlin.js.config.JsConfig import org.jetbrains.kotlin.js.facade.TranslationUnit import org.jetbrains.kotlin.js.test.engines.ExternalTool import org.jetbrains.kotlin.js.test.engines.SpiderMonkeyEngine -import org.jetbrains.kotlin.library.resolver.impl.KotlinLibraryResolverResultImpl -import org.jetbrains.kotlin.library.resolver.impl.KotlinResolvedLibraryImpl import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.psi.KtNamedFunction import org.jetbrains.kotlin.psi.KtPsiFactory @@ -140,7 +138,7 @@ abstract class BasicWasmBoxTest( phaseConfig = phaseConfig, irFactory = IrFactoryImpl, // TODO: Bypass the resolver fow wasm. - allDependencies = KotlinLibraryResolverResultImpl(listOf(KotlinResolvedLibraryImpl(wasmRuntimeKlib))), + dependencies = listOf(System.getProperty("kotlin.wasm.stdlib.path")!!), friendDependencies = emptyList(), exportedDeclarations = setOf(FqName.fromSegments(listOfNotNull(testPackage, testFunction))) )