From 2574c00dd9e3918e1f96f79cd6f6123ce633c8e3 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 6 Aug 2021 14:36:40 +0300 Subject: [PATCH] Add `index()` to LocalSignature for more clear access --- .../ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt | 2 ++ .../common/serialization/DescriptorByIdSignatureFinder.kt | 2 +- .../backend/common/serialization/IrModuleDeserializer.kt | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt index b0fc158f962..2fbe25c7677 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/IdSignature.kt @@ -194,6 +194,8 @@ sealed class IdSignature { override val isLocal: Boolean get() = true + fun index(): Int = hashSig?.toInt() ?: error("Expected index in ${render()}") + override fun topLevelSignature(): IdSignature { error("Illegal access: Local Sig does not have toplevel (${render()}") } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinder.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinder.kt index 72a868d9f87..a2d8a2da27a 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinder.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/DescriptorByIdSignatureFinder.kt @@ -57,7 +57,7 @@ class DescriptorByIdSignatureFinder( fqn == MangleConstant.TYPE_PARAMETER_MARKER_NAME || fqn == MangleConstant.TYPE_PARAMETER_MARKER_NAME_SETTER if (isTypeParameterSig(inner.localFqn)) { - val tpIndex = inner.hashSig?.toInt() ?: error("Expected index in $signature") + val tpIndex = inner.index() if (container is CallableDescriptor) { return container.typeParameters[tpIndex] } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleDeserializer.kt index fe238adae2e..8868f925e06 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleDeserializer.kt @@ -155,8 +155,8 @@ class IrModuleDeserializerWithBuiltIns( val classSignature = idSig.container val classSymbol = resolveFunctionalInterface(classSignature, BinarySymbolData.SymbolKind.CLASS_SYMBOL) as IrClassSymbol val typeParameterSig = composite.inner as IdSignature.LocalSignature - val typeParameterIndex = typeParameterSig.hashSig ?: error("Expected index for $idSig") - val typeParameter = classSymbol.owner.typeParameters[typeParameterIndex.toInt()] + val typeParameterIndex = typeParameterSig.index() + val typeParameter = classSymbol.owner.typeParameters[typeParameterIndex] return typeParameter.symbol } val publicSig = idSig.asPublic() ?: error("$idSig has to be public")