Support multiple version requirements on single element

This commit is contained in:
Alexander Udalov
2018-07-19 15:11:30 +02:00
parent b7df36643b
commit c011bf61fe
22 changed files with 1681 additions and 601 deletions
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.serialization.deserialization
import org.jetbrains.kotlin.builtins.isSuspendFunctionTypeOrSubtype
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.descriptors.annotations.AnnotationWithTarget
@@ -138,7 +137,7 @@ class MemberDeserializer(private val c: DeserializationContext) {
}
private fun DeserializedMemberDescriptor.versionAndReleaseCoroutinesMismatch(): Boolean =
c.components.configuration.releaseCoroutines && versionRequirement?.version != VersionRequirement.Version(1, 3)
c.components.configuration.releaseCoroutines && versionRequirements.none { it.version == VersionRequirement.Version(1, 3) }
private fun loadOldFlags(oldFlags: Int): Int {
val lowSixBits = oldFlags and 0x3f
@@ -231,7 +230,7 @@ class MemberDeserializer(private val c: DeserializationContext) {
descriptor.isExperimentalCoroutineInReleaseEnvironment = local.typeDeserializer.experimentalSuspendFunctionTypeEncountered ||
((c.containingDeclaration as? DeserializedClassDescriptor)?.c?.typeDeserializer?.experimentalSuspendFunctionTypeEncountered == true &&
c.components.configuration.releaseCoroutines &&
descriptor.versionRequirement?.version != VersionRequirement.Version(1, 3))
descriptor.versionRequirements.none { it.version == VersionRequirement.Version(1, 3) })
return descriptor
}
@@ -66,7 +66,7 @@ class DeserializedClassDescriptor(
(containingDeclaration as? DeserializedClassDescriptor)?.thisAsProtoContainer
)
val versionRequirement: VersionRequirement?
val versionRequirements: List<VersionRequirement>
get() = VersionRequirement.create(classProto, c.nameResolver, c.versionRequirementTable)
override val annotations =
@@ -27,7 +27,7 @@ interface DeserializedMemberDescriptor : MemberDescriptor {
val versionRequirementTable: VersionRequirementTable
val versionRequirement: VersionRequirement?
val versionRequirements: List<VersionRequirement>
get() = VersionRequirement.create(proto, nameResolver, versionRequirementTable)
// Information about the origin of this callable's container (class or package part on JVM) or null if there's no such information.