From 67f814c99f76e8c94b353fab9fa5c8402202cab1 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Thu, 5 Aug 2021 11:11:40 +0300 Subject: [PATCH] [JS IC] Don't serialize IrTypeAbbreviation in IC cache --- .../common/serialization/IrFileSerializer.kt | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt index da2a3f54854..26b82c0cdd8 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrFileSerializer.kt @@ -399,8 +399,10 @@ open class IrFileSerializer( .addAllAnnotation(serializeAnnotations(type.annotations)) .setClassifier(serializeIrSymbol(type.classifier)) .setHasQuestionMark(type.hasQuestionMark) - type.abbreviation?.let { - proto.setAbbreviation(serializeIrTypeAbbreviation(it)) + type.abbreviation?.let { ta -> + serializeIrTypeAbbreviation(ta)?.let { pta -> + proto.setAbbreviation(pta) + } } type.arguments.forEach { proto.addArgument(serializeTypeArgument(it)) @@ -408,15 +410,23 @@ open class IrFileSerializer( return proto.build() } - private fun serializeIrTypeAbbreviation(typeAbbreviation: IrTypeAbbreviation): ProtoTypeAbbreviation { - val proto = ProtoTypeAbbreviation.newBuilder() - .addAllAnnotation(serializeAnnotations(typeAbbreviation.annotations)) - .setTypeAlias(serializeIrSymbol(typeAbbreviation.typeAlias)) - .setHasQuestionMark(typeAbbreviation.hasQuestionMark) - typeAbbreviation.arguments.forEach { - proto.addArgument(serializeTypeArgument(it)) + @Suppress("UNUSED_PARAMETER") + private fun isTypeAbbreviationAccessibleHere(typeAbbreviation: IrTypeAbbreviation): Boolean { + return !skipMutableState + } + + private fun serializeIrTypeAbbreviation(typeAbbreviation: IrTypeAbbreviation): ProtoTypeAbbreviation? { + if (isTypeAbbreviationAccessibleHere(typeAbbreviation)) { + val proto = ProtoTypeAbbreviation.newBuilder() + .addAllAnnotation(serializeAnnotations(typeAbbreviation.annotations)) + .setTypeAlias(serializeIrSymbol(typeAbbreviation.typeAlias)) + .setHasQuestionMark(typeAbbreviation.hasQuestionMark) + typeAbbreviation.arguments.forEach { + proto.addArgument(serializeTypeArgument(it)) + } + return proto.build() } - return proto.build() + return null } private fun serializeDynamicType(type: IrDynamicType): ProtoDynamicType = ProtoDynamicType.newBuilder()