From 85f85fb3e8294194cc9379b42778dc26e5a6d01f Mon Sep 17 00:00:00 2001 From: Alexander Gorshenev Date: Wed, 24 Apr 2019 19:23:37 +0300 Subject: [PATCH] IrStatementOrigin support in newly introduced IrDelegatedPropertyReference --- .../serialization.common/src/KotlinIr.proto | 1 + .../serialization/IrModuleDeserializer.kt | 5 +- .../serialization/IrModuleSerializer.kt | 1 + .../common/serialization/KotlinIr.java | 130 ++++++++++++++++++ 4 files changed, 136 insertions(+), 1 deletion(-) diff --git a/compiler/ir/serialization.common/src/KotlinIr.proto b/compiler/ir/serialization.common/src/KotlinIr.proto index 8e9cf88bb04..af337d5da2f 100644 --- a/compiler/ir/serialization.common/src/KotlinIr.proto +++ b/compiler/ir/serialization.common/src/KotlinIr.proto @@ -258,6 +258,7 @@ message IrLocalDelegatedPropertyReference { optional IrSymbol getter = 2; optional IrSymbol setter = 3; required IrSymbol symbol = 4; + required IrStatementOrigin origin = 5; } message IrPropertyReference { 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 ec71073a5c9..733c83f1c77 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 @@ -427,12 +427,15 @@ abstract class IrModuleDeserializer( val getter = deserializeIrSymbol(proto.getter) as IrSimpleFunctionSymbol val setter = if (proto.hasSetter()) deserializeIrSymbol(proto.setter) as IrSimpleFunctionSymbol else null val symbol = deserializeIrSymbol(proto.symbol) as IrLocalDelegatedPropertySymbol + val origin = deserializeIrStatementOrigin(proto.origin) + return IrLocalDelegatedPropertyReferenceImpl( start, end, type, symbol, delegate, getter, - setter + setter, + origin ) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleSerializer.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleSerializer.kt index 4cb2697558b..90660e5d435 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleSerializer.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/IrModuleSerializer.kt @@ -430,6 +430,7 @@ open class IrModuleSerializer( .setDelegate(serializeIrSymbol(callable.delegate)) .setGetter(serializeIrSymbol(callable.getter)) .setSymbol(serializeIrSymbol(callable.symbol)) + .setOrigin(serializeIrStatementOrigin(callable.origin)) callable.setter?.let { proto.setSetter(serializeIrSymbol(it)) } diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIr.java b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIr.java index ed2d226753d..b8bbaa64f1d 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIr.java +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/KotlinIr.java @@ -19677,6 +19677,10 @@ public final class KotlinIr { memoizedIsInitialized = 0; return false; } + if (!getOrigin().isInitialized()) { + memoizedIsInitialized = 0; + return false; + } memoizedIsInitialized = 1; return true; } @@ -19894,6 +19898,10 @@ public final class KotlinIr { return false; } + if (!getOrigin().isInitialized()) { + + return false; + } return true; } @@ -20146,6 +20154,15 @@ public final class KotlinIr { * required .org.jetbrains.kotlin.backend.common.serialization.IrSymbol symbol = 4; */ org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol getSymbol(); + + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + boolean hasOrigin(); + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin(); } /** * Protobuf type {@code org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference} @@ -20249,6 +20266,19 @@ public final class KotlinIr { bitField0_ |= 0x00000008; break; } + case 42: { + org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = origin_.toBuilder(); + } + origin_ = input.readMessage(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(origin_); + origin_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -20343,11 +20373,27 @@ public final class KotlinIr { return symbol_; } + public static final int ORIGIN_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_; + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public boolean hasOrigin() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() { + return origin_; + } + private void initFields() { delegate_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance(); getter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance(); setter_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance(); symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance(); + origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -20363,6 +20409,10 @@ public final class KotlinIr { memoizedIsInitialized = 0; return false; } + if (!hasOrigin()) { + memoizedIsInitialized = 0; + return false; + } if (!getDelegate().isInitialized()) { memoizedIsInitialized = 0; return false; @@ -20402,6 +20452,9 @@ public final class KotlinIr { if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeMessage(4, symbol_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, origin_); + } output.writeRawBytes(unknownFields); } @@ -20427,6 +20480,10 @@ public final class KotlinIr { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(4, symbol_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, origin_); + } size += unknownFields.size(); memoizedSerializedSize = size; return size; @@ -20529,6 +20586,8 @@ public final class KotlinIr { bitField0_ = (bitField0_ & ~0x00000004); symbol_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrSymbol.getDefaultInstance(); bitField0_ = (bitField0_ & ~0x00000008); + origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -20568,6 +20627,10 @@ public final class KotlinIr { to_bitField0_ |= 0x00000008; } result.symbol_ = symbol_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.origin_ = origin_; result.bitField0_ = to_bitField0_; return result; } @@ -20586,6 +20649,9 @@ public final class KotlinIr { if (other.hasSymbol()) { mergeSymbol(other.getSymbol()); } + if (other.hasOrigin()) { + mergeOrigin(other.getOrigin()); + } setUnknownFields( getUnknownFields().concat(other.unknownFields)); return this; @@ -20600,6 +20666,10 @@ public final class KotlinIr { return false; } + if (!hasOrigin()) { + + return false; + } if (!getDelegate().isInitialized()) { return false; @@ -20882,6 +20952,66 @@ public final class KotlinIr { return this; } + private org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance(); + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public boolean hasOrigin() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin getOrigin() { + return origin_; + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public Builder setOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) { + if (value == null) { + throw new NullPointerException(); + } + origin_ = value; + + bitField0_ |= 0x00000010; + return this; + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public Builder setOrigin( + org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.Builder builderForValue) { + origin_ = builderForValue.build(); + + bitField0_ |= 0x00000010; + return this; + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public Builder mergeOrigin(org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin value) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + origin_ != org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance()) { + origin_ = + org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.newBuilder(origin_).mergeFrom(value).buildPartial(); + } else { + origin_ = value; + } + + bitField0_ |= 0x00000010; + return this; + } + /** + * required .org.jetbrains.kotlin.backend.common.serialization.IrStatementOrigin origin = 5; + */ + public Builder clearOrigin() { + origin_ = org.jetbrains.kotlin.backend.common.serialization.KotlinIr.IrStatementOrigin.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.IrLocalDelegatedPropertyReference) }