IR serialization: isFakeOverride in proto

NB It's not clear yet if we actually want to serialize fake overrides
or generate and resolve them on deserialization.
This commit is contained in:
Dmitry Petrov
2019-10-24 14:29:16 +03:00
parent 5c390d9426
commit f79909d724
9 changed files with 293 additions and 49 deletions
@@ -527,6 +527,7 @@ message IrFunction {
required bool is_suspend = 4;
repeated int32 overridden = 5;
//optional UniqId corresponding_property = 7;
required bool is_fake_override = 8;
}
message IrConstructor {
@@ -543,6 +544,7 @@ message IrField {
required bool is_external = 6;
required bool is_static = 7;
required int32 type = 8;
required bool is_fake_override = 9;
}
message IrLocalDelegatedProperty {
@@ -569,6 +571,7 @@ message IrProperty {
optional IrFunction getter = 11;
optional IrFunction setter = 12;
required bool is_expect = 13;
required bool is_fake_override = 14;
}
message IrVariable {
@@ -1058,7 +1058,7 @@ abstract class IrFileDeserializer(
isTailrec = proto.isTailrec,
isSuspend = proto.isSuspend,
isExpect = proto.base.isExpect,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
isFakeOverride = proto.isFakeOverride
)
}.apply {
proto.overriddenList.mapTo(overriddenSymbols) { deserializeIrSymbol(it) as IrSimpleFunctionSymbol }
@@ -1167,7 +1167,7 @@ abstract class IrFileDeserializer(
isFinal = proto.isFinal,
isExternal = proto.isExternal,
isStatic = proto.isStatic,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
isFakeOverride = proto.isFakeOverride
)
}.usingParent {
if (proto.hasInitializer())
@@ -1220,7 +1220,7 @@ abstract class IrFileDeserializer(
isDelegated = proto.isDelegated,
isExpect = proto.isExpect,
isExternal = proto.isExternal,
isFakeOverride = origin == IrDeclarationOrigin.FAKE_OVERRIDE
isFakeOverride = proto.isFakeOverride
)
}.apply {
if (proto.hasGetter()) {
@@ -1067,6 +1067,7 @@ open class IrFileSerializer(
.setModality(serializeModality(declaration.modality))
.setIsTailrec(declaration.isTailrec)
.setIsSuspend(declaration.isSuspend)
.setIsFakeOverride(declaration.isFakeOverride)
declaration.overriddenSymbols.forEach {
proto.addOverridden(serializeIrSymbol(it))
@@ -1110,6 +1111,7 @@ open class IrFileSerializer(
.setIsDelegated(property.isDelegated)
.setIsExternal(property.isExternal)
.setIsExpect(property.isExpect)
.setIsFakeOverride(property.isFakeOverride)
val backingField = property.backingField
val getter = property.getter
@@ -1133,6 +1135,7 @@ open class IrFileSerializer(
.setIsExternal(field.isExternal)
.setIsStatic(field.isStatic)
.setType(serializeIrType(field.type))
.setIsFakeOverride(field.isFakeOverride)
val initializer = field.initializer?.expression
if (initializer != null) {
proto.initializer = serializeIrExpressionBody(initializer)
@@ -109,6 +109,11 @@ public final class IrField extends
type_ = input.readInt32();
break;
}
case 72: {
bitField0_ |= 0x00000100;
isFakeOverride_ = input.readBool();
break;
}
}
}
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
@@ -263,6 +268,21 @@ public final class IrField extends
return type_;
}
public static final int IS_FAKE_OVERRIDE_FIELD_NUMBER = 9;
private boolean isFakeOverride_;
/**
* <code>required bool is_fake_override = 9;</code>
*/
public boolean hasIsFakeOverride() {
return ((bitField0_ & 0x00000100) == 0x00000100);
}
/**
* <code>required bool is_fake_override = 9;</code>
*/
public boolean getIsFakeOverride() {
return isFakeOverride_;
}
private void initFields() {
base_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase.getDefaultInstance();
initializer_ = 0;
@@ -272,6 +292,7 @@ public final class IrField extends
isExternal_ = false;
isStatic_ = false;
type_ = 0;
isFakeOverride_ = false;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -307,6 +328,10 @@ public final class IrField extends
memoizedIsInitialized = 0;
return false;
}
if (!hasIsFakeOverride()) {
memoizedIsInitialized = 0;
return false;
}
if (!getBase().isInitialized()) {
memoizedIsInitialized = 0;
return false;
@@ -346,6 +371,9 @@ public final class IrField extends
if (((bitField0_ & 0x00000080) == 0x00000080)) {
output.writeInt32(8, type_);
}
if (((bitField0_ & 0x00000100) == 0x00000100)) {
output.writeBool(9, isFakeOverride_);
}
output.writeRawBytes(unknownFields);
}
@@ -387,6 +415,10 @@ public final class IrField extends
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeInt32Size(8, type_);
}
if (((bitField0_ & 0x00000100) == 0x00000100)) {
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeBoolSize(9, isFakeOverride_);
}
size += unknownFields.size();
memoizedSerializedSize = size;
return size;
@@ -497,6 +529,8 @@ public final class IrField extends
bitField0_ = (bitField0_ & ~0x00000040);
type_ = 0;
bitField0_ = (bitField0_ & ~0x00000080);
isFakeOverride_ = false;
bitField0_ = (bitField0_ & ~0x00000100);
return this;
}
@@ -552,6 +586,10 @@ public final class IrField extends
to_bitField0_ |= 0x00000080;
}
result.type_ = type_;
if (((from_bitField0_ & 0x00000100) == 0x00000100)) {
to_bitField0_ |= 0x00000100;
}
result.isFakeOverride_ = isFakeOverride_;
result.bitField0_ = to_bitField0_;
return result;
}
@@ -582,6 +620,9 @@ public final class IrField extends
if (other.hasType()) {
setType(other.getType());
}
if (other.hasIsFakeOverride()) {
setIsFakeOverride(other.getIsFakeOverride());
}
setUnknownFields(
getUnknownFields().concat(other.unknownFields));
return this;
@@ -616,6 +657,10 @@ public final class IrField extends
return false;
}
if (!hasIsFakeOverride()) {
return false;
}
if (!getBase().isInitialized()) {
return false;
@@ -958,6 +1003,38 @@ public final class IrField extends
return this;
}
private boolean isFakeOverride_ ;
/**
* <code>required bool is_fake_override = 9;</code>
*/
public boolean hasIsFakeOverride() {
return ((bitField0_ & 0x00000100) == 0x00000100);
}
/**
* <code>required bool is_fake_override = 9;</code>
*/
public boolean getIsFakeOverride() {
return isFakeOverride_;
}
/**
* <code>required bool is_fake_override = 9;</code>
*/
public Builder setIsFakeOverride(boolean value) {
bitField0_ |= 0x00000100;
isFakeOverride_ = value;
return this;
}
/**
* <code>required bool is_fake_override = 9;</code>
*/
public Builder clearIsFakeOverride() {
bitField0_ = (bitField0_ & ~0x00000100);
isFakeOverride_ = false;
return this;
}
// @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.proto.IrField)
}
@@ -78,4 +78,13 @@ public interface IrFieldOrBuilder extends
* <code>required int32 type = 8;</code>
*/
int getType();
/**
* <code>required bool is_fake_override = 9;</code>
*/
boolean hasIsFakeOverride();
/**
* <code>required bool is_fake_override = 9;</code>
*/
boolean getIsFakeOverride();
}
@@ -109,6 +109,11 @@ public final class IrFunction extends
input.popLimit(limit);
break;
}
case 64: {
bitField0_ |= 0x00000010;
isFakeOverride_ = input.readBool();
break;
}
}
}
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
@@ -210,10 +215,6 @@ public final class IrFunction extends
private java.util.List<java.lang.Integer> overridden_;
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public java.util.List<java.lang.Integer>
getOverriddenList() {
@@ -221,23 +222,38 @@ public final class IrFunction extends
}
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public int getOverriddenCount() {
return overridden_.size();
}
/**
* <code>repeated int32 overridden = 5;</code>
*/
public int getOverridden(int index) {
return overridden_.get(index);
}
public static final int IS_FAKE_OVERRIDE_FIELD_NUMBER = 8;
private boolean isFakeOverride_;
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public int getOverridden(int index) {
return overridden_.get(index);
public boolean hasIsFakeOverride() {
return ((bitField0_ & 0x00000010) == 0x00000010);
}
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public boolean getIsFakeOverride() {
return isFakeOverride_;
}
private void initFields() {
@@ -246,6 +262,7 @@ public final class IrFunction extends
isTailrec_ = false;
isSuspend_ = false;
overridden_ = java.util.Collections.emptyList();
isFakeOverride_ = false;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -269,6 +286,10 @@ public final class IrFunction extends
memoizedIsInitialized = 0;
return false;
}
if (!hasIsFakeOverride()) {
memoizedIsInitialized = 0;
return false;
}
if (!getBase().isInitialized()) {
memoizedIsInitialized = 0;
return false;
@@ -295,6 +316,9 @@ public final class IrFunction extends
for (int i = 0; i < overridden_.size(); i++) {
output.writeInt32(5, overridden_.get(i));
}
if (((bitField0_ & 0x00000010) == 0x00000010)) {
output.writeBool(8, isFakeOverride_);
}
output.writeRawBytes(unknownFields);
}
@@ -329,6 +353,10 @@ public final class IrFunction extends
size += dataSize;
size += 1 * getOverriddenList().size();
}
if (((bitField0_ & 0x00000010) == 0x00000010)) {
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeBoolSize(8, isFakeOverride_);
}
size += unknownFields.size();
memoizedSerializedSize = size;
return size;
@@ -433,6 +461,8 @@ public final class IrFunction extends
bitField0_ = (bitField0_ & ~0x00000008);
overridden_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000010);
isFakeOverride_ = false;
bitField0_ = (bitField0_ & ~0x00000020);
return this;
}
@@ -477,6 +507,10 @@ public final class IrFunction extends
bitField0_ = (bitField0_ & ~0x00000010);
}
result.overridden_ = overridden_;
if (((from_bitField0_ & 0x00000020) == 0x00000020)) {
to_bitField0_ |= 0x00000010;
}
result.isFakeOverride_ = isFakeOverride_;
result.bitField0_ = to_bitField0_;
return result;
}
@@ -505,6 +539,9 @@ public final class IrFunction extends
}
}
if (other.hasIsFakeOverride()) {
setIsFakeOverride(other.getIsFakeOverride());
}
setUnknownFields(
getUnknownFields().concat(other.unknownFields));
return this;
@@ -527,6 +564,10 @@ public final class IrFunction extends
return false;
}
if (!hasIsFakeOverride()) {
return false;
}
if (!getBase().isInitialized()) {
return false;
@@ -721,10 +762,6 @@ public final class IrFunction extends
}
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public java.util.List<java.lang.Integer>
getOverriddenList() {
@@ -732,30 +769,18 @@ public final class IrFunction extends
}
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public int getOverriddenCount() {
return overridden_.size();
}
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public int getOverridden(int index) {
return overridden_.get(index);
}
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public Builder setOverridden(
int index, int value) {
@@ -766,10 +791,6 @@ public final class IrFunction extends
}
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public Builder addOverridden(int value) {
ensureOverriddenIsMutable();
@@ -779,10 +800,6 @@ public final class IrFunction extends
}
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public Builder addAllOverridden(
java.lang.Iterable<? extends java.lang.Integer> values) {
@@ -794,14 +811,58 @@ public final class IrFunction extends
}
/**
* <code>repeated int32 overridden = 5;</code>
*/
public Builder clearOverridden() {
overridden_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000010);
return this;
}
private boolean isFakeOverride_ ;
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public Builder clearOverridden() {
overridden_ = java.util.Collections.emptyList();
bitField0_ = (bitField0_ & ~0x00000010);
public boolean hasIsFakeOverride() {
return ((bitField0_ & 0x00000020) == 0x00000020);
}
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public boolean getIsFakeOverride() {
return isFakeOverride_;
}
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public Builder setIsFakeOverride(boolean value) {
bitField0_ |= 0x00000020;
isFakeOverride_ = value;
return this;
}
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
public Builder clearIsFakeOverride() {
bitField0_ = (bitField0_ & ~0x00000020);
isFakeOverride_ = false;
return this;
}
@@ -45,26 +45,31 @@ public interface IrFunctionOrBuilder extends
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
java.util.List<java.lang.Integer> getOverriddenList();
/**
* <code>repeated int32 overridden = 5;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
int getOverriddenCount();
/**
* <code>repeated int32 overridden = 5;</code>
*/
int getOverridden(int index);
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
int getOverridden(int index);
boolean hasIsFakeOverride();
/**
* <code>required bool is_fake_override = 8;</code>
*
* <pre>
*optional UniqId corresponding_property = 7;
* </pre>
*/
boolean getIsFakeOverride();
}
@@ -165,6 +165,11 @@ public final class IrProperty extends
isExpect_ = input.readBool();
break;
}
case 112: {
bitField0_ |= 0x00002000;
isFakeOverride_ = input.readBool();
break;
}
}
}
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
@@ -394,6 +399,21 @@ public final class IrProperty extends
return isExpect_;
}
public static final int IS_FAKE_OVERRIDE_FIELD_NUMBER = 14;
private boolean isFakeOverride_;
/**
* <code>required bool is_fake_override = 14;</code>
*/
public boolean hasIsFakeOverride() {
return ((bitField0_ & 0x00002000) == 0x00002000);
}
/**
* <code>required bool is_fake_override = 14;</code>
*/
public boolean getIsFakeOverride() {
return isFakeOverride_;
}
private void initFields() {
base_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrDeclarationBase.getDefaultInstance();
name_ = 0;
@@ -408,6 +428,7 @@ public final class IrProperty extends
getter_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrFunction.getDefaultInstance();
setter_ = org.jetbrains.kotlin.backend.common.serialization.proto.IrFunction.getDefaultInstance();
isExpect_ = false;
isFakeOverride_ = false;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
@@ -455,6 +476,10 @@ public final class IrProperty extends
memoizedIsInitialized = 0;
return false;
}
if (!hasIsFakeOverride()) {
memoizedIsInitialized = 0;
return false;
}
if (!getBase().isInitialized()) {
memoizedIsInitialized = 0;
return false;
@@ -527,6 +552,9 @@ public final class IrProperty extends
if (((bitField0_ & 0x00001000) == 0x00001000)) {
output.writeBool(13, isExpect_);
}
if (((bitField0_ & 0x00002000) == 0x00002000)) {
output.writeBool(14, isFakeOverride_);
}
output.writeRawBytes(unknownFields);
}
@@ -588,6 +616,10 @@ public final class IrProperty extends
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeBoolSize(13, isExpect_);
}
if (((bitField0_ & 0x00002000) == 0x00002000)) {
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeBoolSize(14, isFakeOverride_);
}
size += unknownFields.size();
memoizedSerializedSize = size;
return size;
@@ -708,6 +740,8 @@ public final class IrProperty extends
bitField0_ = (bitField0_ & ~0x00000800);
isExpect_ = false;
bitField0_ = (bitField0_ & ~0x00001000);
isFakeOverride_ = false;
bitField0_ = (bitField0_ & ~0x00002000);
return this;
}
@@ -783,6 +817,10 @@ public final class IrProperty extends
to_bitField0_ |= 0x00001000;
}
result.isExpect_ = isExpect_;
if (((from_bitField0_ & 0x00002000) == 0x00002000)) {
to_bitField0_ |= 0x00002000;
}
result.isFakeOverride_ = isFakeOverride_;
result.bitField0_ = to_bitField0_;
return result;
}
@@ -828,6 +866,9 @@ public final class IrProperty extends
if (other.hasIsExpect()) {
setIsExpect(other.getIsExpect());
}
if (other.hasIsFakeOverride()) {
setIsFakeOverride(other.getIsFakeOverride());
}
setUnknownFields(
getUnknownFields().concat(other.unknownFields));
return this;
@@ -874,6 +915,10 @@ public final class IrProperty extends
return false;
}
if (!hasIsFakeOverride()) {
return false;
}
if (!getBase().isInitialized()) {
return false;
@@ -1481,6 +1526,38 @@ public final class IrProperty extends
return this;
}
private boolean isFakeOverride_ ;
/**
* <code>required bool is_fake_override = 14;</code>
*/
public boolean hasIsFakeOverride() {
return ((bitField0_ & 0x00002000) == 0x00002000);
}
/**
* <code>required bool is_fake_override = 14;</code>
*/
public boolean getIsFakeOverride() {
return isFakeOverride_;
}
/**
* <code>required bool is_fake_override = 14;</code>
*/
public Builder setIsFakeOverride(boolean value) {
bitField0_ |= 0x00002000;
isFakeOverride_ = value;
return this;
}
/**
* <code>required bool is_fake_override = 14;</code>
*/
public Builder clearIsFakeOverride() {
bitField0_ = (bitField0_ & ~0x00002000);
isFakeOverride_ = false;
return this;
}
// @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.backend.common.serialization.proto.IrProperty)
}
@@ -123,4 +123,13 @@ public interface IrPropertyOrBuilder extends
* <code>required bool is_expect = 13;</code>
*/
boolean getIsExpect();
/**
* <code>required bool is_fake_override = 14;</code>
*/
boolean hasIsFakeOverride();
/**
* <code>required bool is_fake_override = 14;</code>
*/
boolean getIsFakeOverride();
}