From 13df75ef7408d6bc7c1edf67bebb9504a4fefb33 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 16 Mar 2018 23:21:45 +0100 Subject: [PATCH] Minor, extract isInstanceType to protoTypeTableUtil --- .../kotlin/contracts/ContractDeserializerImpl.kt | 9 ++------- .../metadata/deserialization/protoTypeTableUtil.kt | 6 ++++++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/contracts/ContractDeserializerImpl.kt b/compiler/frontend/src/org/jetbrains/kotlin/contracts/ContractDeserializerImpl.kt index b0da134594c..b94c429704a 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/contracts/ContractDeserializerImpl.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/contracts/ContractDeserializerImpl.kt @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.descriptors.FunctionDescriptor import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.deserialization.Flags import org.jetbrains.kotlin.metadata.deserialization.TypeTable +import org.jetbrains.kotlin.metadata.deserialization.isInstanceType import org.jetbrains.kotlin.serialization.deserialization.ContractDeserializer import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration import org.jetbrains.kotlin.serialization.deserialization.TypeDeserializer @@ -165,13 +166,7 @@ class ContractDeserializerImpl(private val configuration: DeserializationConfigu } private fun extractType(proto: ProtoBuf.Expression): KotlinType? { - val protoType = when { - proto.hasIsInstanceType() -> proto.isInstanceType - proto.hasIsInstanceTypeId() -> typeTable.types.getOrNull(proto.isInstanceTypeId) ?: return null - else -> return null - } - - return typeDeserializer.type(protoType) + return typeDeserializer.type(proto.isInstanceType(typeTable) ?: return null) } private fun deserializeConstant(value: ProtoBuf.Expression.ConstantValue): ConstantReference? = when (value) { diff --git a/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/protoTypeTableUtil.kt b/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/protoTypeTableUtil.kt index aa51369a1d8..f94979cdbf2 100644 --- a/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/protoTypeTableUtil.kt +++ b/core/metadata/src/org/jetbrains/kotlin/metadata/deserialization/protoTypeTableUtil.kt @@ -101,3 +101,9 @@ fun ProtoBuf.TypeAlias.expandedType(typeTable: TypeTable): ProtoBuf.Type = when hasExpandedTypeId() -> typeTable[expandedTypeId] else -> error("No expandedType in ProtoBuf.TypeAlias") } + +fun ProtoBuf.Expression.isInstanceType(typeTable: TypeTable): ProtoBuf.Type? = when { + hasIsInstanceType() -> isInstanceType + hasIsInstanceTypeId() -> typeTable[isInstanceTypeId] + else -> null +}