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")