Fix warnings in JS/WASM modules

This commit is contained in:
Alexander Udalov
2021-07-26 13:18:39 +02:00
parent e0643a4185
commit 376b420d1a
7 changed files with 46 additions and 28 deletions

View File

@@ -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<KotlinLibraryLayout>(this, null)
val base = BaseKotlinLibraryImpl(baseAccess, false)
return base.has_pre_1_4_manifest
}
}

View File

@@ -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()

View File

@@ -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<KtFile>, perFile: Boolean = false): String {
private fun doSerializeModule(
moduleFragment: IrModuleFragment,
bindingContext: BindingContext,
files: List<KtFile>,
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
}

View File

@@ -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")
}

View File

@@ -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")
}
}
}

View File

@@ -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

View File

@@ -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<String>) {
for (command in specTest.commands) {
if (command is SpecTest.Command.Module) {