diff --git a/compiler/ir/serialization.common/src/KotlinIr.proto b/compiler/ir/serialization.common/src/KotlinIr.proto
index e4156c88398..b38849a7aa5 100644
--- a/compiler/ir/serialization.common/src/KotlinIr.proto
+++ b/compiler/ir/serialization.common/src/KotlinIr.proto
@@ -125,6 +125,7 @@ message IrConstructorCall {
required int64 symbol = 1;
required int32 constructor_type_arguments_count = 2;
required MemberAccessCommon member_access = 3;
+ optional int32 origin_name = 4;
}
message IrFunctionReference {
diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt
index 1842e3c43cc..ef2c02df6f7 100644
--- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt
+++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrBodyDeserializer.kt
@@ -245,7 +245,8 @@ class IrBodyDeserializer(
start, end, type,
symbol, typeArgumentsCount = proto.memberAccess.typeArgumentCount,
constructorTypeArgumentsCount = proto.constructorTypeArgumentsCount,
- valueArgumentsCount = proto.memberAccess.valueArgumentCount
+ valueArgumentsCount = proto.memberAccess.valueArgumentCount,
+ origin = if (proto.hasOriginName()) deserializeIrStatementOrigin(proto.originName) else null
).also {
deserializeMemberAccessCommon(it, proto.memberAccess)
}
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 15cc2f1750a..780d051a158 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
@@ -526,6 +526,9 @@ open class IrFileSerializer(
symbol = serializeIrSymbol(call.symbol)
constructorTypeArgumentsCount = call.constructorTypeArgumentsCount
memberAccess = serializeMemberAccessCommon(call)
+ call.origin?.let {
+ originName = serializeIrStatementOrigin(it)
+ }
}.build()
private fun serializeFunctionExpression(functionExpression: IrFunctionExpression): ProtoFunctionExpression =
diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCall.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCall.java
index 66bf2d4f52d..350172c6ad3 100644
--- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCall.java
+++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCall.java
@@ -76,6 +76,11 @@ public final class IrConstructorCall extends
bitField0_ |= 0x00000004;
break;
}
+ case 32: {
+ bitField0_ |= 0x00000008;
+ originName_ = input.readInt32();
+ break;
+ }
}
}
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
@@ -155,10 +160,26 @@ public final class IrConstructorCall extends
return memberAccess_;
}
+ public static final int ORIGIN_NAME_FIELD_NUMBER = 4;
+ private int originName_;
+ /**
+ * optional int32 origin_name = 4;
+ */
+ public boolean hasOriginName() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * optional int32 origin_name = 4;
+ */
+ public int getOriginName() {
+ return originName_;
+ }
+
private void initFields() {
symbol_ = 0L;
constructorTypeArgumentsCount_ = 0;
memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.proto.MemberAccessCommon.getDefaultInstance();
+ originName_ = 0;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -198,6 +219,9 @@ public final class IrConstructorCall extends
if (((bitField0_ & 0x00000004) == 0x00000004)) {
output.writeMessage(3, memberAccess_);
}
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ output.writeInt32(4, originName_);
+ }
output.writeRawBytes(unknownFields);
}
@@ -219,6 +243,10 @@ public final class IrConstructorCall extends
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeMessageSize(3, memberAccess_);
}
+ if (((bitField0_ & 0x00000008) == 0x00000008)) {
+ size += org.jetbrains.kotlin.protobuf.CodedOutputStream
+ .computeInt32Size(4, originName_);
+ }
size += unknownFields.size();
memoizedSerializedSize = size;
return size;
@@ -319,6 +347,8 @@ public final class IrConstructorCall extends
bitField0_ = (bitField0_ & ~0x00000002);
memberAccess_ = org.jetbrains.kotlin.backend.common.serialization.proto.MemberAccessCommon.getDefaultInstance();
bitField0_ = (bitField0_ & ~0x00000004);
+ originName_ = 0;
+ bitField0_ = (bitField0_ & ~0x00000008);
return this;
}
@@ -354,6 +384,10 @@ public final class IrConstructorCall extends
to_bitField0_ |= 0x00000004;
}
result.memberAccess_ = memberAccess_;
+ if (((from_bitField0_ & 0x00000008) == 0x00000008)) {
+ to_bitField0_ |= 0x00000008;
+ }
+ result.originName_ = originName_;
result.bitField0_ = to_bitField0_;
return result;
}
@@ -369,6 +403,9 @@ public final class IrConstructorCall extends
if (other.hasMemberAccess()) {
mergeMemberAccess(other.getMemberAccess());
}
+ if (other.hasOriginName()) {
+ setOriginName(other.getOriginName());
+ }
setUnknownFields(
getUnknownFields().concat(other.unknownFields));
return this;
@@ -537,6 +574,38 @@ public final class IrConstructorCall extends
return this;
}
+ private int originName_ ;
+ /**
+ * optional int32 origin_name = 4;
+ */
+ public boolean hasOriginName() {
+ return ((bitField0_ & 0x00000008) == 0x00000008);
+ }
+ /**
+ * optional int32 origin_name = 4;
+ */
+ public int getOriginName() {
+ return originName_;
+ }
+ /**
+ * optional int32 origin_name = 4;
+ */
+ public Builder setOriginName(int value) {
+ bitField0_ |= 0x00000008;
+ originName_ = value;
+
+ return this;
+ }
+ /**
+ * optional int32 origin_name = 4;
+ */
+ public Builder clearOriginName() {
+ bitField0_ = (bitField0_ & ~0x00000008);
+ originName_ = 0;
+
+ return this;
+ }
+
// @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.proto.IrConstructorCall)
}
diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCallOrBuilder.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCallOrBuilder.java
index 0829c480029..789c89dba62 100644
--- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCallOrBuilder.java
+++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/proto/IrConstructorCallOrBuilder.java
@@ -33,4 +33,13 @@ public interface IrConstructorCallOrBuilder extends
* required .org.jetbrains.kotlin.backend.common.serialization.proto.MemberAccessCommon member_access = 3;
*/
org.jetbrains.kotlin.backend.common.serialization.proto.MemberAccessCommon getMemberAccess();
+
+ /**
+ * optional int32 origin_name = 4;
+ */
+ boolean hasOriginName();
+ /**
+ * optional int32 origin_name = 4;
+ */
+ int getOriginName();
}
\ No newline at end of file