mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-03-10 08:31:29 +00:00
Fix warnings in JS/WASM modules
This commit is contained in:
@@ -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 {
|
fun isKotlinLibrary(libraryFile: File): Boolean = try {
|
||||||
resolveSingleFileKlib(libraryFile)
|
resolveSingleFileKlib(libraryFile)
|
||||||
true
|
true
|
||||||
|
|||||||
@@ -6,12 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.serialization.js
|
package org.jetbrains.kotlin.serialization.js
|
||||||
|
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
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.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
||||||
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
|
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.resolve.multiplatform.OptionalAnnotationUtil
|
||||||
import org.jetbrains.kotlin.serialization.AnnotationSerializer
|
import org.jetbrains.kotlin.serialization.AnnotationSerializer
|
||||||
import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
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.DeserializationConfiguration
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedClassDescriptor
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPropertyDescriptor
|
||||||
@@ -238,7 +235,7 @@ object KotlinJavascriptSerializationUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun serializeHeader(
|
fun serializeHeader(
|
||||||
module: ModuleDescriptor, packageFqName: FqName?, languageVersionSettings: LanguageVersionSettings
|
@Suppress("UNUSED_PARAMETER") module: ModuleDescriptor, packageFqName: FqName?, languageVersionSettings: LanguageVersionSettings
|
||||||
): JsProtoBuf.Header {
|
): JsProtoBuf.Header {
|
||||||
val header = JsProtoBuf.Header.newBuilder()
|
val header = JsProtoBuf.Header.newBuilder()
|
||||||
|
|
||||||
|
|||||||
@@ -49,13 +49,9 @@ import org.jetbrains.kotlin.ir.util.patchDeclarationParents
|
|||||||
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
|
||||||
import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy
|
import org.jetbrains.kotlin.js.config.ErrorTolerancePolicy
|
||||||
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
|
||||||
import org.jetbrains.kotlin.library.KotlinAbiVersion
|
import org.jetbrains.kotlin.library.*
|
||||||
import org.jetbrains.kotlin.library.KotlinLibrary
|
|
||||||
import org.jetbrains.kotlin.library.KotlinLibraryVersioning
|
|
||||||
import org.jetbrains.kotlin.library.SerializedIrModule
|
|
||||||
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
import org.jetbrains.kotlin.library.impl.BuiltInsPlatform
|
||||||
import org.jetbrains.kotlin.library.impl.KotlinLibraryOnlyIrWriter
|
import org.jetbrains.kotlin.library.impl.KotlinLibraryOnlyIrWriter
|
||||||
import org.jetbrains.kotlin.library.impl.createKotlinLibrary
|
|
||||||
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
import org.jetbrains.kotlin.progress.ProgressIndicatorAndCompilationCanceledStatus
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
import org.jetbrains.kotlin.psi2ir.Psi2IrConfiguration
|
||||||
@@ -78,7 +74,7 @@ import org.jetbrains.kotlin.konan.file.File as KonanFile
|
|||||||
@OptIn(ExperimentalPathApi::class)
|
@OptIn(ExperimentalPathApi::class)
|
||||||
@Ignore
|
@Ignore
|
||||||
class GenerateIrRuntime {
|
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 {
|
private fun buildConfiguration(environment: KotlinCoreEnvironment): CompilerConfiguration {
|
||||||
val runtimeConfiguration = environment.configuration.copy()
|
val runtimeConfiguration = environment.configuration.copy()
|
||||||
@@ -92,13 +88,18 @@ class GenerateIrRuntime {
|
|||||||
LanguageFeature.MultiPlatformProjects to LanguageFeature.State.ENABLED
|
LanguageFeature.MultiPlatformProjects to LanguageFeature.State.ENABLED
|
||||||
),
|
),
|
||||||
analysisFlags = mapOf(
|
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
|
AnalysisFlags.allowResultReturnType to true
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
return runtimeConfiguration
|
return runtimeConfiguration
|
||||||
}
|
}
|
||||||
|
|
||||||
private val CompilerConfiguration.metadataVersion
|
private val CompilerConfiguration.metadataVersion
|
||||||
get() = get(CommonConfigurationKeys.METADATA_VERSION) as? KlibMetadataVersion ?: KlibMetadataVersion.INSTANCE
|
get() = get(CommonConfigurationKeys.METADATA_VERSION) as? KlibMetadataVersion ?: KlibMetadataVersion.INSTANCE
|
||||||
|
|
||||||
@@ -173,7 +174,7 @@ class GenerateIrRuntime {
|
|||||||
|
|
||||||
val (module, symbolTable, irBuiltIns, linker) = doDeserializeModule(modulePath)
|
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})")
|
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")
|
println("Run $name benchmark")
|
||||||
|
|
||||||
@@ -473,7 +483,12 @@ class GenerateIrRuntime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalPathApi::class)
|
@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()
|
val tmpKlibDir = createTempDirectory().also { it.toFile().deleteOnExit() }.toString()
|
||||||
serializeModuleIntoKlib(
|
serializeModuleIntoKlib(
|
||||||
moduleName,
|
moduleName,
|
||||||
@@ -500,11 +515,22 @@ class GenerateIrRuntime {
|
|||||||
return getModuleDescriptorByLibrary(moduleRef, emptyMap())
|
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 {
|
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
|
return serializedIr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.test.TestFiles
|
|||||||
import org.jetbrains.kotlin.test.util.KtTestUtil
|
import org.jetbrains.kotlin.test.util.KtTestUtil
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.lang.Boolean.getBoolean
|
|
||||||
|
|
||||||
private val wasmRuntimeKlib =
|
private val wasmRuntimeKlib =
|
||||||
loadKlib(System.getProperty("kotlin.wasm.stdlib.path"))
|
loadKlib(System.getProperty("kotlin.wasm.stdlib.path"))
|
||||||
@@ -46,6 +45,7 @@ abstract class BasicWasmBoxTest(
|
|||||||
|
|
||||||
private val spiderMonkey by lazy { SpiderMonkeyEngine() }
|
private val spiderMonkey by lazy { SpiderMonkeyEngine() }
|
||||||
|
|
||||||
|
@Suppress("UNUSED_PARAMETER")
|
||||||
fun doTestWithCoroutinesPackageReplacement(filePath: String, coroutinesPackage: String) {
|
fun doTestWithCoroutinesPackageReplacement(filePath: String, coroutinesPackage: String) {
|
||||||
TODO("TestWithCoroutinesPackageReplacement are not supported")
|
TODO("TestWithCoroutinesPackageReplacement are not supported")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ package org.jetbrains.kotlin.js.test.semantics
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.js.test.BasicBoxTest
|
import org.jetbrains.kotlin.js.test.BasicBoxTest
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import javax.script.ScriptException
|
|
||||||
|
|
||||||
private val testGroupDir = "multiModuleOrder/"
|
private val testGroupDir = "multiModuleOrder/"
|
||||||
private val pathToTestGroupDir = BasicBoxTest.TEST_DATA_DIR_PATH + testGroupDir
|
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
|
val libJsFile = File(parentDir, "$name-lib_v5.js").path
|
||||||
try {
|
try {
|
||||||
testChecker.run(listOf(mainJsFile, libJsFile))
|
testChecker.run(listOf(mainJsFile, libJsFile))
|
||||||
}
|
} catch (e: RuntimeException) {
|
||||||
catch (e: RuntimeException) {
|
assertTrue(e is IllegalStateException)
|
||||||
assertTrue(e is ScriptException || e is IllegalStateException)
|
|
||||||
val message = e.message!!
|
val message = e.message!!
|
||||||
assertTrue("Exception message should contain reference to dependency (lib)", "'lib'" in 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)
|
assertTrue("Exception message should contain reference to module that failed to load (main)", "'main'" in message)
|
||||||
|
|||||||
@@ -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.Distribution
|
||||||
import org.jetbrains.kotlin.konan.target.KonanTarget
|
import org.jetbrains.kotlin.konan.target.KonanTarget
|
||||||
import org.jetbrains.kotlin.library.*
|
import org.jetbrains.kotlin.library.*
|
||||||
import org.jetbrains.kotlin.library.impl.createKotlinLibrary
|
|
||||||
import org.jetbrains.kotlin.util.DummyLogger
|
import org.jetbrains.kotlin.util.DummyLogger
|
||||||
import org.jetbrains.kotlin.util.Logger
|
import org.jetbrains.kotlin.util.Logger
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import kotlinx.serialization.json.Json
|
|||||||
import org.jetbrains.kotlin.test.KotlinTestUtils.assertEqualsToFile
|
import org.jetbrains.kotlin.test.KotlinTestUtils.assertEqualsToFile
|
||||||
import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull
|
import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull
|
||||||
import org.jetbrains.kotlin.wasm.ir.convertors.MyByteReader
|
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.WasmBinaryToIR
|
||||||
|
import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToBinary
|
||||||
import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToText
|
import org.jetbrains.kotlin.wasm.ir.convertors.WasmIrToText
|
||||||
import java.io.ByteArrayOutputStream
|
import java.io.ByteArrayOutputStream
|
||||||
import java.io.File
|
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>) {
|
private fun runSpecTest(specTest: SpecTest, testDir: File, wastFile: File, wabtOptions: List<String>) {
|
||||||
for (command in specTest.commands) {
|
for (command in specTest.commands) {
|
||||||
if (command is SpecTest.Command.Module) {
|
if (command is SpecTest.Command.Module) {
|
||||||
|
|||||||
Reference in New Issue
Block a user