Cleanup: Use concrete subclass instead of BinaryVersion when possible
Review: https://jetbrains.team/p/kt/reviews/8401 BinaryVersion is a problematic class, because it doesn't represent any logical entity in the codebase, it's just a way to reuse common logic for Kotlin versions. But unfortunately, BinaryVersion is used in a lot of API definitions, which makes code hard to read because it's not obvious which subclasses are supposed to be passed in the particular API.
This commit is contained in:
+2
-2
@@ -12,8 +12,8 @@ import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||||
import org.jetbrains.kotlin.library.SerializedMetadata
|
import org.jetbrains.kotlin.library.SerializedMetadata
|
||||||
|
import org.jetbrains.kotlin.library.metadata.KlibMetadataVersion
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
|
||||||
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
import org.jetbrains.kotlin.resolve.descriptorUtil.module
|
||||||
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
|||||||
// TODO: need a refactoring between IncrementalSerializer and MonolithicSerializer.
|
// TODO: need a refactoring between IncrementalSerializer and MonolithicSerializer.
|
||||||
class KlibMetadataIncrementalSerializer(
|
class KlibMetadataIncrementalSerializer(
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
metadataVersion: BinaryVersion,
|
metadataVersion: KlibMetadataVersion,
|
||||||
project: Project,
|
project: Project,
|
||||||
exportKDoc: Boolean,
|
exportKDoc: Boolean,
|
||||||
skipExpects: Boolean,
|
skipExpects: Boolean,
|
||||||
|
|||||||
+1
-1
@@ -161,7 +161,7 @@ object KotlinJavascriptSerializationUtil {
|
|||||||
fqName: FqName,
|
fqName: FqName,
|
||||||
languageVersionSettings: LanguageVersionSettings,
|
languageVersionSettings: LanguageVersionSettings,
|
||||||
project: Project,
|
project: Project,
|
||||||
metadataVersion: BinaryVersion
|
metadataVersion: JsMetadataVersion
|
||||||
): ProtoBuf.PackageFragment {
|
): ProtoBuf.PackageFragment {
|
||||||
val builder = ProtoBuf.PackageFragment.newBuilder()
|
val builder = ProtoBuf.PackageFragment.newBuilder()
|
||||||
|
|
||||||
|
|||||||
+2
-3
@@ -16,11 +16,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.serialization.js
|
package org.jetbrains.kotlin.serialization.js
|
||||||
|
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
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.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion
|
|
||||||
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
|
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
@@ -31,11 +29,12 @@ import org.jetbrains.kotlin.serialization.DescriptorSerializer
|
|||||||
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
|
import org.jetbrains.kotlin.serialization.KotlinSerializerExtensionBase
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.DYNAMIC_TYPE_DESERIALIZER_ID
|
import org.jetbrains.kotlin.serialization.deserialization.DYNAMIC_TYPE_DESERIALIZER_ID
|
||||||
import org.jetbrains.kotlin.types.FlexibleType
|
import org.jetbrains.kotlin.types.FlexibleType
|
||||||
|
import org.jetbrains.kotlin.utils.JsMetadataVersion
|
||||||
|
|
||||||
class KotlinJavascriptSerializerExtension(
|
class KotlinJavascriptSerializerExtension(
|
||||||
private val fileRegistry: KotlinFileRegistry,
|
private val fileRegistry: KotlinFileRegistry,
|
||||||
private val languageVersionSettings: LanguageVersionSettings,
|
private val languageVersionSettings: LanguageVersionSettings,
|
||||||
override val metadataVersion: BinaryVersion
|
override val metadataVersion: JsMetadataVersion
|
||||||
) : KotlinSerializerExtensionBase(JsSerializerProtocol) {
|
) : KotlinSerializerExtensionBase(JsSerializerProtocol) {
|
||||||
override val stringTable = ApproximatingStringTable()
|
override val stringTable = ApproximatingStringTable()
|
||||||
|
|
||||||
|
|||||||
@@ -243,6 +243,9 @@ class K2JSTranslator @JvmOverloads constructor(
|
|||||||
scope: Collection<DeclarationDescriptor>
|
scope: Collection<DeclarationDescriptor>
|
||||||
): ProtoBuf.PackageFragment {
|
): ProtoBuf.PackageFragment {
|
||||||
val metadataVersion = config.configuration.get(CommonConfigurationKeys.METADATA_VERSION)
|
val metadataVersion = config.configuration.get(CommonConfigurationKeys.METADATA_VERSION)
|
||||||
|
if (metadataVersion !is JsMetadataVersion?) {
|
||||||
|
error("${metadataVersion?.let { it::class }} must be either null or ${JsMetadataVersion::class.simpleName}")
|
||||||
|
}
|
||||||
return KotlinJavascriptSerializationUtil.serializeDescriptors(
|
return KotlinJavascriptSerializationUtil.serializeDescriptors(
|
||||||
bindingContext,
|
bindingContext,
|
||||||
moduleDescriptor,
|
moduleDescriptor,
|
||||||
|
|||||||
Reference in New Issue
Block a user