From cd2fbfed2e7f4b572e2f5ac1a7cf09efdf15c451 Mon Sep 17 00:00:00 2001 From: Anastasiya Shadrina Date: Wed, 10 Nov 2021 17:32:59 +0700 Subject: [PATCH] [IR] Add context receivers count to KotlinIr.proto --- .../serialization.common/src/KotlinIr.proto | 1 + .../IrDeclarationDeserializer.kt | 2 + .../common/serialization/IrFileSerializer.kt | 4 + .../serialization/proto/IrFunctionBase.java | 109 ++++++++++++++---- .../proto/IrFunctionBaseOrBuilder.java | 9 ++ 5 files changed, 105 insertions(+), 20 deletions(-) diff --git a/compiler/ir/serialization.common/src/KotlinIr.proto b/compiler/ir/serialization.common/src/KotlinIr.proto index 7c221ad5098..9b84097930c 100644 --- a/compiler/ir/serialization.common/src/KotlinIr.proto +++ b/compiler/ir/serialization.common/src/KotlinIr.proto @@ -498,6 +498,7 @@ message IrFunctionBase { repeated IrTypeParameter type_parameter = 3; optional IrValueParameter dispatch_receiver = 4; optional IrValueParameter extension_receiver = 5; + optional int32 context_receiver_parameters_count = 8; repeated IrValueParameter value_parameter = 6; optional int32 body = 7; } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt index 9df95a58df3..344a0e6f614 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrDeclarationDeserializer.kt @@ -535,6 +535,8 @@ class IrDeclarationDeserializer( extensionReceiverParameter = if (proto.hasExtensionReceiver()) deserializeIrValueParameter(proto.extensionReceiver, -1) else null + contextReceiverParametersCount = + if (proto.hasContextReceiverParametersCount()) proto.contextReceiverParametersCount else 0 body = if (proto.hasBody()) deserializeStatementBody(proto.body) as IrBody? else null 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 329972694a3..575df22beaa 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 @@ -1222,6 +1222,10 @@ open class IrFileSerializer( } function.dispatchReceiverParameter?.let { proto.setDispatchReceiver(serializeIrValueParameter(it)) } function.extensionReceiverParameter?.let { proto.setExtensionReceiver(serializeIrValueParameter(it)) } + val contextReceiverParametersCount = function.contextReceiverParametersCount + if (contextReceiverParametersCount > 0) { + proto.setContextReceiverParametersCount(contextReceiverParametersCount) + } function.valueParameters.forEach { proto.addValueParameter(serializeIrValueParameter(it)) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBase.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBase.java index 084bf0ec2d9..197c0a89b6c 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBase.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBase.java @@ -106,18 +106,23 @@ public final class IrFunctionBase extends break; } case 50: { - if (!((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + if (!((mutable_bitField0_ & 0x00000040) == 0x00000040)) { valueParameter_ = new java.util.ArrayList(); - mutable_bitField0_ |= 0x00000020; + mutable_bitField0_ |= 0x00000040; } valueParameter_.add(input.readMessage(org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter.PARSER, extensionRegistry)); break; } case 56: { - bitField0_ |= 0x00000010; + bitField0_ |= 0x00000020; body_ = input.readInt32(); break; } + case 64: { + bitField0_ |= 0x00000010; + contextReceiverParametersCount_ = input.readInt32(); + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -129,7 +134,7 @@ public final class IrFunctionBase extends if (((mutable_bitField0_ & 0x00000004) == 0x00000004)) { typeParameter_ = java.util.Collections.unmodifiableList(typeParameter_); } - if (((mutable_bitField0_ & 0x00000020) == 0x00000020)) { + if (((mutable_bitField0_ & 0x00000040) == 0x00000040)) { valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_); } try { @@ -253,6 +258,21 @@ public final class IrFunctionBase extends return extensionReceiver_; } + public static final int CONTEXT_RECEIVER_PARAMETERS_COUNT_FIELD_NUMBER = 8; + private int contextReceiverParametersCount_; + /** + * optional int32 context_receiver_parameters_count = 8; + */ + public boolean hasContextReceiverParametersCount() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional int32 context_receiver_parameters_count = 8; + */ + public int getContextReceiverParametersCount() { + return contextReceiverParametersCount_; + } + public static final int VALUE_PARAMETER_FIELD_NUMBER = 6; private java.util.List valueParameter_; /** @@ -294,7 +314,7 @@ public final class IrFunctionBase extends * optional int32 body = 7; */ public boolean hasBody() { - return ((bitField0_ & 0x00000010) == 0x00000010); + return ((bitField0_ & 0x00000020) == 0x00000020); } /** * optional int32 body = 7; @@ -309,6 +329,7 @@ public final class IrFunctionBase extends typeParameter_ = java.util.Collections.emptyList(); dispatchReceiver_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter.getDefaultInstance(); extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter.getDefaultInstance(); + contextReceiverParametersCount_ = 0; valueParameter_ = java.util.Collections.emptyList(); body_ = 0; } @@ -379,9 +400,12 @@ public final class IrFunctionBase extends for (int i = 0; i < valueParameter_.size(); i++) { output.writeMessage(6, valueParameter_.get(i)); } - if (((bitField0_ & 0x00000010) == 0x00000010)) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { output.writeInt32(7, body_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeInt32(8, contextReceiverParametersCount_); + } output.writeRawBytes(unknownFields); } @@ -415,10 +439,14 @@ public final class IrFunctionBase extends size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(6, valueParameter_.get(i)); } - if (((bitField0_ & 0x00000010) == 0x00000010)) { + if (((bitField0_ & 0x00000020) == 0x00000020)) { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeInt32Size(7, body_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeInt32Size(8, contextReceiverParametersCount_); + } size += unknownFields.size(); memoizedSerializedSize = size; return size; @@ -523,10 +551,12 @@ public final class IrFunctionBase extends bitField0_ = (bitField0_ & ~0x00000008); extensionReceiver_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter.getDefaultInstance(); bitField0_ = (bitField0_ & ~0x00000010); - valueParameter_ = java.util.Collections.emptyList(); + contextReceiverParametersCount_ = 0; bitField0_ = (bitField0_ & ~0x00000020); - body_ = 0; + valueParameter_ = java.util.Collections.emptyList(); bitField0_ = (bitField0_ & ~0x00000040); + body_ = 0; + bitField0_ = (bitField0_ & ~0x00000080); return this; } @@ -571,13 +601,17 @@ public final class IrFunctionBase extends to_bitField0_ |= 0x00000008; } result.extensionReceiver_ = extensionReceiver_; - if (((bitField0_ & 0x00000020) == 0x00000020)) { + if (((from_bitField0_ & 0x00000020) == 0x00000020)) { + to_bitField0_ |= 0x00000010; + } + result.contextReceiverParametersCount_ = contextReceiverParametersCount_; + if (((bitField0_ & 0x00000040) == 0x00000040)) { valueParameter_ = java.util.Collections.unmodifiableList(valueParameter_); - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000040); } result.valueParameter_ = valueParameter_; - if (((from_bitField0_ & 0x00000040) == 0x00000040)) { - to_bitField0_ |= 0x00000010; + if (((from_bitField0_ & 0x00000080) == 0x00000080)) { + to_bitField0_ |= 0x00000020; } result.body_ = body_; result.bitField0_ = to_bitField0_; @@ -608,10 +642,13 @@ public final class IrFunctionBase extends if (other.hasExtensionReceiver()) { mergeExtensionReceiver(other.getExtensionReceiver()); } + if (other.hasContextReceiverParametersCount()) { + setContextReceiverParametersCount(other.getContextReceiverParametersCount()); + } if (!other.valueParameter_.isEmpty()) { if (valueParameter_.isEmpty()) { valueParameter_ = other.valueParameter_; - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000040); } else { ensureValueParameterIsMutable(); valueParameter_.addAll(other.valueParameter_); @@ -1022,12 +1059,44 @@ public final class IrFunctionBase extends return this; } + private int contextReceiverParametersCount_ ; + /** + * optional int32 context_receiver_parameters_count = 8; + */ + public boolean hasContextReceiverParametersCount() { + return ((bitField0_ & 0x00000020) == 0x00000020); + } + /** + * optional int32 context_receiver_parameters_count = 8; + */ + public int getContextReceiverParametersCount() { + return contextReceiverParametersCount_; + } + /** + * optional int32 context_receiver_parameters_count = 8; + */ + public Builder setContextReceiverParametersCount(int value) { + bitField0_ |= 0x00000020; + contextReceiverParametersCount_ = value; + + return this; + } + /** + * optional int32 context_receiver_parameters_count = 8; + */ + public Builder clearContextReceiverParametersCount() { + bitField0_ = (bitField0_ & ~0x00000020); + contextReceiverParametersCount_ = 0; + + return this; + } + private java.util.List valueParameter_ = java.util.Collections.emptyList(); private void ensureValueParameterIsMutable() { - if (!((bitField0_ & 0x00000020) == 0x00000020)) { + if (!((bitField0_ & 0x00000040) == 0x00000040)) { valueParameter_ = new java.util.ArrayList(valueParameter_); - bitField0_ |= 0x00000020; + bitField0_ |= 0x00000040; } } @@ -1133,7 +1202,7 @@ public final class IrFunctionBase extends */ public Builder clearValueParameter() { valueParameter_ = java.util.Collections.emptyList(); - bitField0_ = (bitField0_ & ~0x00000020); + bitField0_ = (bitField0_ & ~0x00000040); return this; } @@ -1152,7 +1221,7 @@ public final class IrFunctionBase extends * optional int32 body = 7; */ public boolean hasBody() { - return ((bitField0_ & 0x00000040) == 0x00000040); + return ((bitField0_ & 0x00000080) == 0x00000080); } /** * optional int32 body = 7; @@ -1164,7 +1233,7 @@ public final class IrFunctionBase extends * optional int32 body = 7; */ public Builder setBody(int value) { - bitField0_ |= 0x00000040; + bitField0_ |= 0x00000080; body_ = value; return this; @@ -1173,7 +1242,7 @@ public final class IrFunctionBase extends * optional int32 body = 7; */ public Builder clearBody() { - bitField0_ = (bitField0_ & ~0x00000040); + bitField0_ = (bitField0_ & ~0x00000080); body_ = 0; return this; diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBaseOrBuilder.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBaseOrBuilder.java index 9f1126696ed..70ce02d98dd 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBaseOrBuilder.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrFunctionBaseOrBuilder.java @@ -57,6 +57,15 @@ public interface IrFunctionBaseOrBuilder extends */ org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter getExtensionReceiver(); + /** + * optional int32 context_receiver_parameters_count = 8; + */ + boolean hasContextReceiverParametersCount(); + /** + * optional int32 context_receiver_parameters_count = 8; + */ + int getContextReceiverParametersCount(); + /** * repeated .org.jetbrains.kotlin.backend.common.serialization.proto.IrValueParameter value_parameter = 6; */