[K2] Add version requirement for definitely non-null types to metadata.
This commit is contained in:
committed by
Mikhail Glukhikh
parent
1f3b8142a8
commit
73191ff9bc
+3
-17
@@ -58,12 +58,7 @@ class DescriptorSerializer private constructor(
|
||||
) {
|
||||
private val contractSerializer = ContractSerializer()
|
||||
|
||||
private var metDefinitelyNotNullTypeStack: MutableList<Boolean> = mutableListOf(false)
|
||||
private var metDefinitelyNotNullType: Boolean
|
||||
get() = metDefinitelyNotNullTypeStack.last()
|
||||
set(value) {
|
||||
metDefinitelyNotNullTypeStack[metDefinitelyNotNullTypeStack.lastIndex] = value
|
||||
}
|
||||
private var metDefinitelyNotNullType: Boolean = false
|
||||
|
||||
private fun createChildSerializer(descriptor: DeclarationDescriptor): DescriptorSerializer =
|
||||
DescriptorSerializer(
|
||||
@@ -78,16 +73,7 @@ class DescriptorSerializer private constructor(
|
||||
|
||||
private fun useTypeTable(): Boolean = extension.shouldUseTypeTable()
|
||||
|
||||
private inline fun <T> withNewMetDefinitelyNotNullType(block: () -> T): T {
|
||||
metDefinitelyNotNullTypeStack.add(false)
|
||||
return try {
|
||||
block()
|
||||
} finally {
|
||||
metDefinitelyNotNullTypeStack.removeAt(metDefinitelyNotNullTypeStack.lastIndex)
|
||||
}
|
||||
}
|
||||
|
||||
fun classProto(classDescriptor: ClassDescriptor): ProtoBuf.Class.Builder = withNewMetDefinitelyNotNullType {
|
||||
fun classProto(classDescriptor: ClassDescriptor): ProtoBuf.Class.Builder {
|
||||
val builder = ProtoBuf.Class.newBuilder()
|
||||
|
||||
val hasEnumEntries = classDescriptor.kind == ClassKind.ENUM_CLASS &&
|
||||
@@ -507,7 +493,7 @@ class DescriptorSerializer private constructor(
|
||||
)
|
||||
}
|
||||
|
||||
private fun typeAliasProto(descriptor: TypeAliasDescriptor): ProtoBuf.TypeAlias.Builder? = withNewMetDefinitelyNotNullType {
|
||||
private fun typeAliasProto(descriptor: TypeAliasDescriptor): ProtoBuf.TypeAlias.Builder? {
|
||||
val builder = ProtoBuf.TypeAlias.newBuilder()
|
||||
val local = createChildSerializer(descriptor)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user