From 376b420d1ad69d4bb67fb1e5b43cfdd9e1c36b85 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 26 Jul 2021 13:18:39 +0200 Subject: [PATCH] Fix warnings in JS/WASM modules --- .../kotlin/library/impl/KotlinLibraryImpl.kt | 5 +- .../js/KotlinJavascriptSerializationUtil.kt | 5 +- .../kotlin/benchmarks/GenerateIrRuntime.kt | 50 ++++++++++++++----- .../kotlin/js/test/BasicWasmBoxTest.kt | 2 +- .../js/test/semantics/MultiModuleOrderTest.kt | 8 ++- .../konan/library/SearchPathResolver.kt | 1 - .../kotlin/wasm/ir/SpecTestRunner.kt | 3 +- 7 files changed, 46 insertions(+), 28 deletions(-) diff --git a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt index 7a3bc5f9877..68d768d4e54 100644 --- a/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt +++ b/compiler/util-klib/src/org/jetbrains/kotlin/library/impl/KotlinLibraryImpl.kt @@ -302,9 +302,6 @@ fun createKotlinLibraryComponents( } } -@Deprecated("Use resolveSingleFileKlib() instead", replaceWith = ReplaceWith("resolveSingleFileKlib()")) -fun createKotlinLibrary(libraryFile: File): KotlinLibrary = resolveSingleFileKlib(libraryFile) - fun isKotlinLibrary(libraryFile: File): Boolean = try { resolveSingleFileKlib(libraryFile) true @@ -320,4 +317,4 @@ val File.isPre_1_4_Library: Boolean val baseAccess = BaseLibraryAccess(this, null) val base = BaseKotlinLibraryImpl(baseAccess, false) return base.has_pre_1_4_manifest - } \ No newline at end of file + } diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt index 3104bd4855d..199d31a286e 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/KotlinJavascriptSerializationUtil.kt @@ -6,12 +6,10 @@ package org.jetbrains.kotlin.serialization.js import com.intellij.openapi.project.Project -import org.jetbrains.kotlin.config.AnalysisFlags import org.jetbrains.kotlin.config.LanguageVersionSettings import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl import org.jetbrains.kotlin.incremental.components.LookupTracker -import org.jetbrains.kotlin.incremental.components.NoLookupLocation import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.metadata.js.JsProtoBuf @@ -24,7 +22,6 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.resolve.multiplatform.OptionalAnnotationUtil import org.jetbrains.kotlin.serialization.AnnotationSerializer import org.jetbrains.kotlin.serialization.DescriptorSerializer -import org.jetbrains.kotlin.serialization.StringTableImpl import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor @@ -238,7 +235,7 @@ object KotlinJavascriptSerializationUtil { } fun serializeHeader( - module: ModuleDescriptor, packageFqName: FqName?, languageVersionSettings: LanguageVersionSettings + @Suppress("UNUSED_PARAMETER") module: ModuleDescriptor, packageFqName: FqName?, languageVersionSettings: LanguageVersionSettings ): JsProtoBuf.Header { val header = JsProtoBuf.Header.newBuilder() diff --git a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt index a8c2f4b5507..bedc1abf1f9 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/benchmarks/GenerateIrRuntime.kt @@ -49,13 +49,9 @@ import org.jetbrains.kotlin.ir.util.patchDeclarationParents import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy import org.jetbrains.kotlin.js.config.JSConfigurationKeys -import org.jetbrains.kotlin.library.KotlinAbiVersion -import org.jetbrains.kotlin.library.KotlinLibrary -import org.jetbrains.kotlin.library.KotlinLibraryVersioning -import org.jetbrains.kotlin.library.SerializedIrModule +import org.jetbrains.kotlin.library.* import org.jetbrains.kotlin.library.impl.BuiltInsPlatform import org.jetbrains.kotlin.library.impl.KotlinLibraryOnlyIrWriter -import org.jetbrains.kotlin.library.impl.createKotlinLibrary import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration @@ -78,7 +74,7 @@ import org.jetbrains.kotlin.konan.file.File as KonanFile @OptIn(ExperimentalPathApi::class) @Ignore class GenerateIrRuntime { - fun loadKlib(klibPath: String, isPacked: Boolean) = createKotlinLibrary(KonanFile("$klibPath${if (isPacked) ".klib" else ""}")) + fun loadKlib(klibPath: String, isPacked: Boolean) = resolveSingleFileKlib(KonanFile("$klibPath${if (isPacked) ".klib" else ""}")) private fun buildConfiguration(environment: KotlinCoreEnvironment): CompilerConfiguration { val runtimeConfiguration = environment.configuration.copy() @@ -92,13 +88,18 @@ class GenerateIrRuntime { LanguageFeature.MultiPlatformProjects to LanguageFeature.State.ENABLED ), analysisFlags = mapOf( - AnalysisFlags.useExperimental to listOf("kotlin.contracts.ExperimentalContracts", "kotlin.Experimental", "kotlin.ExperimentalMultiplatform"), + AnalysisFlags.useExperimental to listOf( + "kotlin.contracts.ExperimentalContracts", + "kotlin.Experimental", + "kotlin.ExperimentalMultiplatform" + ), AnalysisFlags.allowResultReturnType to true ) ) return runtimeConfiguration } + private val CompilerConfiguration.metadataVersion get() = get(CommonConfigurationKeys.METADATA_VERSION) as? KlibMetadataVersion ?: KlibMetadataVersion.INSTANCE @@ -173,7 +174,7 @@ class GenerateIrRuntime { val (module, symbolTable, irBuiltIns, linker) = doDeserializeModule(modulePath) - val jsProgram = doBackEnd(module, symbolTable, irBuiltIns, linker) + doBackEnd(module, symbolTable, irBuiltIns, linker) } } @@ -377,7 +378,16 @@ class GenerateIrRuntime { println("Fastest re-compilation takes ${MeasureUnits.MILLISECONDS.convert(minResult.time)} (${minResult.file})") } - private fun runBenchWithWarmup(name: String, W: Int, N: Int, measurer: MeasureUnits, wmpDone: () -> Unit = {}, bnhDone: (Long) -> Unit = {}, pre: () -> Unit = {}, bench: () -> Unit) { + private fun runBenchWithWarmup( + name: String, + W: Int, + N: Int, + measurer: MeasureUnits, + wmpDone: () -> Unit = {}, + bnhDone: (Long) -> Unit = {}, + pre: () -> Unit = {}, + bench: () -> Unit + ) { println("Run $name benchmark") @@ -473,7 +483,12 @@ class GenerateIrRuntime { } @OptIn(ExperimentalPathApi::class) - private fun doSerializeModule(moduleFragment: IrModuleFragment, bindingContext: BindingContext, files: List, perFile: Boolean = false): String { + private fun doSerializeModule( + moduleFragment: IrModuleFragment, + bindingContext: BindingContext, + files: List, + perFile: Boolean = false + ): String { val tmpKlibDir = createTempDirectory().also { it.toFile().deleteOnExit() }.toString() serializeModuleIntoKlib( moduleName, @@ -500,11 +515,22 @@ class GenerateIrRuntime { return getModuleDescriptorByLibrary(moduleRef, emptyMap()) } - private data class DeserializedModuleInfo(val module: IrModuleFragment, val symbolTable: SymbolTable, val irBuiltIns: IrBuiltIns, val linker: JsIrLinker) + private data class DeserializedModuleInfo( + val module: IrModuleFragment, + val symbolTable: SymbolTable, + val irBuiltIns: IrBuiltIns, + val linker: JsIrLinker + ) private fun doSerializeIrModule(module: IrModuleFragment): SerializedIrModule { - val serializedIr = JsIrModuleSerializer(IrMessageLogger.None, module.irBuiltins, mutableMapOf(), CompatibilityMode.CURRENT, true).serializedIrModule(module) + val serializedIr = JsIrModuleSerializer( + IrMessageLogger.None, + module.irBuiltins, + mutableMapOf(), + CompatibilityMode.CURRENT, + true + ).serializedIrModule(module) return serializedIr } 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 bc76ad5472a..cbe0e8eaebe 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 @@ -32,7 +32,6 @@ import org.jetbrains.kotlin.test.TestFiles import org.jetbrains.kotlin.test.util.KtTestUtil import java.io.Closeable import java.io.File -import java.lang.Boolean.getBoolean private val wasmRuntimeKlib = loadKlib(System.getProperty("kotlin.wasm.stdlib.path")) @@ -46,6 +45,7 @@ abstract class BasicWasmBoxTest( private val spiderMonkey by lazy { SpiderMonkeyEngine() } + @Suppress("UNUSED_PARAMETER") fun doTestWithCoroutinesPackageReplacement(filePath: String, coroutinesPackage: String) { TODO("TestWithCoroutinesPackageReplacement are not supported") } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/MultiModuleOrderTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/MultiModuleOrderTest.kt index 01576d5c1b5..92888180e18 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/MultiModuleOrderTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/MultiModuleOrderTest.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.js.test.semantics import org.jetbrains.kotlin.js.test.BasicBoxTest import java.io.File -import javax.script.ScriptException private val testGroupDir = "multiModuleOrder/" private val pathToTestGroupDir = BasicBoxTest.TEST_DATA_DIR_PATH + testGroupDir @@ -33,9 +32,8 @@ class MultiModuleOrderTest : BasicBoxTest(pathToTestGroupDir, testGroupDir) { val libJsFile = File(parentDir, "$name-lib_v5.js").path try { testChecker.run(listOf(mainJsFile, libJsFile)) - } - catch (e: RuntimeException) { - assertTrue(e is ScriptException || e is IllegalStateException) + } catch (e: RuntimeException) { + assertTrue(e is IllegalStateException) val message = e.message!! assertTrue("Exception message should contain reference to dependency (lib)", "'lib'" in message) assertTrue("Exception message should contain reference to module that failed to load (main)", "'main'" in message) @@ -43,4 +41,4 @@ class MultiModuleOrderTest : BasicBoxTest(pathToTestGroupDir, testGroupDir) { } fail("Exception should have been thrown due to wrong order of modules") } -} \ No newline at end of file +} diff --git a/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt b/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt index 5acc8ef73aa..1f73799fe5b 100644 --- a/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt +++ b/kotlin-native/shared/src/library/kotlin/org/jetbrains/kotlin/konan/library/SearchPathResolver.kt @@ -7,7 +7,6 @@ import org.jetbrains.kotlin.konan.library.impl.createKonanLibraryComponents import org.jetbrains.kotlin.konan.target.Distribution import org.jetbrains.kotlin.konan.target.KonanTarget import org.jetbrains.kotlin.library.* -import org.jetbrains.kotlin.library.impl.createKotlinLibrary import org.jetbrains.kotlin.util.DummyLogger import org.jetbrains.kotlin.util.Logger diff --git a/wasm/wasm.ir/test/org/jetbrains/kotlin/wasm/ir/SpecTestRunner.kt b/wasm/wasm.ir/test/org/jetbrains/kotlin/wasm/ir/SpecTestRunner.kt index 9ba20a0a2e3..fd88c76be3b 100644 --- a/wasm/wasm.ir/test/org/jetbrains/kotlin/wasm/ir/SpecTestRunner.kt +++ b/wasm/wasm.ir/test/org/jetbrains/kotlin/wasm/ir/SpecTestRunner.kt @@ -11,8 +11,8 @@ import kotlinx.serialization.json.Json import org.jetbrains.kotlin.test.KotlinTestUtils.assertEqualsToFile import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull import org.jetbrains.kotlin.wasm.ir.convertors.MyByteReader -import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToBinary import org.jetbrains.kotlin.wasm.ir.convertors.WasmBinaryToIR +import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToBinary import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToText import java.io.ByteArrayOutputStream import java.io.File @@ -128,6 +128,7 @@ data class SpecTest( ) } +@Suppress("UNUSED_PARAMETER") private fun runSpecTest(specTest: SpecTest, testDir: File, wastFile: File, wabtOptions: List) { for (command in specTest.commands) { if (command is SpecTest.Command.Module) {