[Tests] Port KotlinKlibSerializerTest to K2

^KT-64440 Fixed
This commit is contained in:
Vladimir Sukharev
2024-02-29 09:59:06 +01:00
committed by Space Team
parent 8fe5cf2641
commit 9b4f503fbe
2 changed files with 67 additions and 29 deletions
@@ -0,0 +1,50 @@
package test
public val a: kotlin.Int = 10
public val arrayConst: kotlin.Any = {1.toByte(), 2.toByte()}
public val b: kotlin.Int
public val booleanConst: kotlin.Boolean = true
public val byteConst: kotlin.Byte = 10.toByte()
public val charConst: kotlin.Char = \u0041 ('A')
public val doubleConst: kotlin.Double = 3.0.toDouble()
public val enumConst: test.Weapon? = Weapon.ROCK
public val floatConst: kotlin.Float = 2.0.toFloat()
public val intConst: kotlin.Int = 30
public val longConst: kotlin.Long = 40.toLong()
public val shortConst: kotlin.Short = 20.toShort()
public val stringConst: kotlin.String = "abcd"
public final class Class {
public constructor Class()
public final val a: kotlin.Int = 10
public final val arrayConst: kotlin.Any = {1.toByte(), 2.toByte()}
public final val b: kotlin.Int
public final val booleanConst: kotlin.Boolean = true
public final val byteConst: kotlin.Byte = 10.toByte()
public final val charConst: kotlin.Char = \u0041 ('A')
public final val doubleConst: kotlin.Double = 3.0.toDouble()
public final val enumConst: test.Weapon? = Weapon.ROCK
public final val floatConst: kotlin.Float = 2.0.toFloat()
public final val intConst: kotlin.Int = 30
public final val longConst: kotlin.Long = 40.toLong()
public final val shortConst: kotlin.Short = 20.toShort()
public final val stringConst: kotlin.String = "abcd"
}
public final enum class Weapon : kotlin.Enum<test.Weapon> {
enum entry ROCK
enum entry PAPER
enum entry SCISSORS
private constructor Weapon()
@kotlin.internal.IntrinsicConstEvaluation public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: test.Weapon): kotlin.Int
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): test.Weapon
public final /*synthesized*/ fun values(): kotlin.Array<test.Weapon>
}
@@ -16,53 +16,39 @@
package org.jetbrains.kotlin.serialization.klib
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoots
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME
import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.serialization.NonStableParameterNamesSerializationTest
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil.readModuleAsProto
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.test.CompilerTestUtil
import org.jetbrains.kotlin.test.KlibTestUtil
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestCaseWithTmpdir
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparatorAdaptor
import org.jetbrains.kotlin.utils.JsMetadataVersion
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
import org.jetbrains.kotlin.utils.sure
import java.io.File
class KotlinKlibSerializerTest : TestCaseWithTmpdir() {
private val BASE_DIR = "compiler/testData/serialization"
private fun doTest(fileName: String) {
private fun doTest(fileName: String, goldenDataExtension: String = ".txt") {
val source = "$BASE_DIR/$fileName"
val klibName = File(source).nameWithoutExtension
val klibFile = File(tmpdir, "$klibName.klib")
KlibTestUtil.compileCommonSourcesToKlib(listOf(File(source)), klibName, klibFile)
CompilerTestUtil.executeCompilerAssertSuccessful(K2MetadataCompiler(), listOf(
File(source).absolutePath,
"-d", klibFile.absolutePath,
"-module-name", klibName,
// support for the legacy version of kotlin-stdlib-common (JAR with .kotlin_metadata)
"-classpath", ForTestCompileRuntime.stdlibCommonForTests().absolutePath
)
)
val module = KlibTestUtil.deserializeKlibToCommonModule(klibFile)
RecursiveDescriptorComparatorAdaptor.validateAndCompareDescriptorWithFile(
module.getPackage(TEST_PACKAGE_FQNAME),
RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT,
File(source.replace(".kt", ".txt"))
File(source.replace(".kt", goldenDataExtension))
)
}
@@ -75,7 +61,9 @@ class KotlinKlibSerializerTest : TestCaseWithTmpdir() {
}
fun testCompileTimeConstants() {
doTest("builtinsSerializer/compileTimeConstants.kt")
// After implementation of https://youtrack.jetbrains.com/issue/KT-65805/Migrate-builtins-serializer-to-K2,
// compileTimeConstants.txt will be same as compileTimeConstants.fir.txt. So, it would be worthwhile to unify them.
doTest("builtinsSerializer/compileTimeConstants.kt", ".fir.txt")
}
fun testAnnotationTargets() {