From 6a3c79bb9e765b916817b8b05e76a7be89b17f4e Mon Sep 17 00:00:00 2001 From: pyos Date: Wed, 30 Jun 2021 16:08:07 +0200 Subject: [PATCH] JVM: support on-the-fly generation of property delegates in metadata Optimizations may remove the `x$delegate` field, in which case there should be a `getX$delegate` method to reconstruct the value if needed due to a call to `KProperty{0,1,2}.getDelegate`. We need to know the signature of this method somehow. --- .../incremental/ProtoCompareGenerated.kt | 9 + .../kotlin/metadata/jvm/DebugJvmProtoBuf.java | 284 +++++++++++++++++- core/metadata.jvm/src/jvm_metadata.proto | 4 + .../kotlin/metadata/jvm/JvmProtoBuf.java | 164 ++++++++++ 4 files changed, 452 insertions(+), 9 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt b/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt index 3fef9df3ebc..2a5970ce817 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/ProtoCompareGenerated.kt @@ -1104,6 +1104,11 @@ open class ProtoCompareGenerated( if (!checkEquals(old.setter, new.setter)) return false } + if (old.hasDelegateMethod() != new.hasDelegateMethod()) return false + if (old.hasDelegateMethod()) { + if (!checkEquals(old.delegateMethod, new.delegateMethod)) return false + } + return true } @@ -2353,6 +2358,10 @@ fun JvmProtoBuf.JvmPropertySignature.hashCode(stringIndexes: (Int) -> Int, fqNam hashCode = 31 * hashCode + setter.hashCode(stringIndexes, fqNameIndexes, typeById) } + if (hasDelegateMethod()) { + hashCode = 31 * hashCode + delegateMethod.hashCode(stringIndexes, fqNameIndexes, typeById) + } + return hashCode } diff --git a/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java b/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java index e236c70e974..86afe38fe9e 100644 --- a/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java +++ b/build-common/test/org/jetbrains/kotlin/metadata/jvm/DebugJvmProtoBuf.java @@ -3443,6 +3443,34 @@ public final class DebugJvmProtoBuf { * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature setter = 4; */ org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignatureOrBuilder getSetterOrBuilder(); + + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + boolean hasDelegateMethod(); + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature getDelegateMethod(); + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignatureOrBuilder getDelegateMethodOrBuilder(); } /** * Protobuf type {@code org.jetbrains.kotlin.metadata.jvm.JvmPropertySignature} @@ -3548,6 +3576,19 @@ public final class DebugJvmProtoBuf { bitField0_ |= 0x00000008; break; } + case 42: { + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = delegateMethod_.toBuilder(); + } + delegateMethod_ = input.readMessage(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(delegateMethod_); + delegateMethod_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -3684,11 +3725,48 @@ public final class DebugJvmProtoBuf { return setter_; } + public static final int DELEGATE_METHOD_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature delegateMethod_; + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + public boolean hasDelegateMethod() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + public org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature getDelegateMethod() { + return delegateMethod_; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + public org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignatureOrBuilder getDelegateMethodOrBuilder() { + return delegateMethod_; + } + private void initFields() { field_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmFieldSignature.getDefaultInstance(); syntheticMethod_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance(); getter_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance(); setter_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -3715,6 +3793,9 @@ public final class DebugJvmProtoBuf { if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeMessage(4, setter_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, delegateMethod_); + } getUnknownFields().writeTo(output); } @@ -3740,6 +3821,10 @@ public final class DebugJvmProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(4, setter_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, delegateMethod_); + } size += getUnknownFields().getSerializedSize(); memoizedSerializedSize = size; return size; @@ -3853,6 +3938,7 @@ public final class DebugJvmProtoBuf { getSyntheticMethodFieldBuilder(); getGetterFieldBuilder(); getSetterFieldBuilder(); + getDelegateMethodFieldBuilder(); } } private static Builder create() { @@ -3885,6 +3971,12 @@ public final class DebugJvmProtoBuf { setterBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000008); + if (delegateMethodBuilder_ == null) { + delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + } else { + delegateMethodBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -3945,6 +4037,14 @@ public final class DebugJvmProtoBuf { } else { result.setter_ = setterBuilder_.build(); } + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + if (delegateMethodBuilder_ == null) { + result.delegateMethod_ = delegateMethod_; + } else { + result.delegateMethod_ = delegateMethodBuilder_.build(); + } result.bitField0_ = to_bitField0_; onBuilt(); return result; @@ -3973,6 +4073,9 @@ public final class DebugJvmProtoBuf { if (other.hasSetter()) { mergeSetter(other.getSetter()); } + if (other.hasDelegateMethod()) { + mergeDelegateMethod(other.getDelegateMethod()); + } this.mergeUnknownFields(other.getUnknownFields()); return this; } @@ -4500,6 +4603,167 @@ public final class DebugJvmProtoBuf { return setterBuilder_; } + private org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + private org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature, org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.Builder, org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignatureOrBuilder> delegateMethodBuilder_; + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public boolean hasDelegateMethod() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature getDelegateMethod() { + if (delegateMethodBuilder_ == null) { + return delegateMethod_; + } else { + return delegateMethodBuilder_.getMessage(); + } + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder setDelegateMethod(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature value) { + if (delegateMethodBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + delegateMethod_ = value; + onChanged(); + } else { + delegateMethodBuilder_.setMessage(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder setDelegateMethod( + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.Builder builderForValue) { + if (delegateMethodBuilder_ == null) { + delegateMethod_ = builderForValue.build(); + onChanged(); + } else { + delegateMethodBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder mergeDelegateMethod(org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature value) { + if (delegateMethodBuilder_ == null) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + delegateMethod_ != org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance()) { + delegateMethod_ = + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.newBuilder(delegateMethod_).mergeFrom(value).buildPartial(); + } else { + delegateMethod_ = value; + } + onChanged(); + } else { + delegateMethodBuilder_.mergeFrom(value); + } + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder clearDelegateMethod() { + if (delegateMethodBuilder_ == null) { + delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + onChanged(); + } else { + delegateMethodBuilder_.clear(); + } + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.Builder getDelegateMethodBuilder() { + bitField0_ |= 0x00000010; + onChanged(); + return getDelegateMethodFieldBuilder().getBuilder(); + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignatureOrBuilder getDelegateMethodOrBuilder() { + if (delegateMethodBuilder_ != null) { + return delegateMethodBuilder_.getMessageOrBuilder(); + } else { + return delegateMethod_; + } + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + private org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature, org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.Builder, org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignatureOrBuilder> + getDelegateMethodFieldBuilder() { + if (delegateMethodBuilder_ == null) { + delegateMethodBuilder_ = new org.jetbrains.kotlin.protobuf.SingleFieldBuilder< + org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature, org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignature.Builder, org.jetbrains.kotlin.metadata.jvm.DebugJvmProtoBuf.JvmMethodSignatureOrBuilder>( + getDelegateMethod(), + getParentForChildren(), + isClean()); + delegateMethod_ = null; + } + return delegateMethodBuilder_; + } + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.jvm.JvmPropertySignature) } @@ -4740,7 +5004,7 @@ public final class DebugJvmProtoBuf { "\020DESC_TO_CLASS_ID\020\002\"<\n\022JvmMethodSignatur" + "e\022\022\n\004name\030\001 \001(\005B\004\230\265\030\001\022\022\n\004desc\030\002 \001(\005B\004\230\265\030" + "\001\";\n\021JvmFieldSignature\022\022\n\004name\030\001 \001(\005B\004\230\265" + - "\030\001\022\022\n\004desc\030\002 \001(\005B\004\230\265\030\001\"\272\002\n\024JvmPropertySi" + + "\030\001\022\022\n\004desc\030\002 \001(\005B\004\230\265\030\001\"\212\003\n\024JvmPropertySi" + "gnature\022C\n\005field\030\001 \001(\01324.org.jetbrains.k" + "otlin.metadata.jvm.JvmFieldSignature\022O\n\020", "synthetic_method\030\002 \001(\01325.org.jetbrains.k" + @@ -4748,11 +5012,13 @@ public final class DebugJvmProtoBuf { "\006getter\030\003 \001(\01325.org.jetbrains.kotlin.met" + "adata.jvm.JvmMethodSignature\022E\n\006setter\030\004" + " \001(\01325.org.jetbrains.kotlin.metadata.jvm" + + ".JvmMethodSignature\022N\n\017delegate_method\030\005" + + " \001(\01325.org.jetbrains.kotlin.metadata.jvm" + ".JvmMethodSignature:\200\001\n\025constructor_sign" + "ature\022*.org.jetbrains.kotlin.metadata.Co" + - "nstructor\030d \001(\01325.org.jetbrains.kotlin.m" + + "nstructor\030d \001(\01325.org.jetbrains.kotlin.m", "etadata.jvm.JvmMethodSignature:x\n\020method" + - "_signature\022\'.org.jetbrains.kotlin.metada", + "_signature\022\'.org.jetbrains.kotlin.metada" + "ta.Function\030d \001(\01325.org.jetbrains.kotlin" + ".metadata.jvm.JvmMethodSignature:O\n\030lamb" + "da_class_origin_name\022\'.org.jetbrains.kot" + @@ -4760,9 +5026,9 @@ public final class DebugJvmProtoBuf { "perty_signature\022\'.org.jetbrains.kotlin.m" + "etadata.Property\030d \001(\01327.org.jetbrains.k" + "otlin.metadata.jvm.JvmPropertySignature:" + - "9\n\005flags\022\'.org.jetbrains.kotlin.metadata" + + "9\n\005flags\022\'.org.jetbrains.kotlin.metadata", ".Property\030e \001(\005:\0010:g\n\017type_annotation\022#." + - "org.jetbrains.kotlin.metadata.Type\030d \003(\013", + "org.jetbrains.kotlin.metadata.Type\030d \003(\013" + "2).org.jetbrains.kotlin.metadata.Annotat" + "ion:3\n\006is_raw\022#.org.jetbrains.kotlin.met" + "adata.Type\030e \001(\010:z\n\031type_parameter_annot" + @@ -4770,9 +5036,9 @@ public final class DebugJvmProtoBuf { "peParameter\030d \003(\0132).org.jetbrains.kotlin" + ".metadata.Annotation:E\n\021class_module_nam" + "e\022$.org.jetbrains.kotlin.metadata.Class\030" + - "e \001(\005B\004\230\265\030\001:k\n\024class_local_variable\022$.or" + + "e \001(\005B\004\230\265\030\001:k\n\024class_local_variable\022$.or", "g.jetbrains.kotlin.metadata.Class\030f \003(\0132" + - "\'.org.jetbrains.kotlin.metadata.Property", + "\'.org.jetbrains.kotlin.metadata.Property" + ":P\n\034anonymous_object_origin_name\022$.org.j" + "etbrains.kotlin.metadata.Class\030g \001(\005B\004\230\265" + "\030\001:@\n\017jvm_class_flags\022$.org.jetbrains.ko" + @@ -4780,7 +5046,7 @@ public final class DebugJvmProtoBuf { "module_name\022&.org.jetbrains.kotlin.metad" + "ata.Package\030e \001(\005B\004\230\265\030\001:o\n\026package_local" + "_variable\022&.org.jetbrains.kotlin.metadat" + - "a.Package\030f \003(\0132\'.org.jetbrains.kotlin.m" + + "a.Package\030f \003(\0132\'.org.jetbrains.kotlin.m", "etadata.PropertyB\022B\020DebugJvmProtoBuf" }; org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = @@ -4826,7 +5092,7 @@ public final class DebugJvmProtoBuf { internal_static_org_jetbrains_kotlin_metadata_jvm_JvmPropertySignature_fieldAccessorTable = new org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable( internal_static_org_jetbrains_kotlin_metadata_jvm_JvmPropertySignature_descriptor, - new java.lang.String[] { "Field", "SyntheticMethod", "Getter", "Setter", }); + new java.lang.String[] { "Field", "SyntheticMethod", "Getter", "Setter", "DelegateMethod", }); constructorSignature.internalInit(descriptor.getExtensions().get(0)); methodSignature.internalInit(descriptor.getExtensions().get(1)); lambdaClassOriginName.internalInit(descriptor.getExtensions().get(2)); diff --git a/core/metadata.jvm/src/jvm_metadata.proto b/core/metadata.jvm/src/jvm_metadata.proto index 6a377f4c78d..562698c0ca6 100644 --- a/core/metadata.jvm/src/jvm_metadata.proto +++ b/core/metadata.jvm/src/jvm_metadata.proto @@ -86,6 +86,10 @@ message JvmPropertySignature { optional JvmMethodSignature getter = 3; optional JvmMethodSignature setter = 4; + + // The delegate field of delegated properties may be optimized out; `getDelegate` should + // then call this method instead + optional JvmMethodSignature delegate_method = 5; } extend Constructor { diff --git a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java index f698aa3764d..60e35c15cd6 100644 --- a/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java +++ b/core/metadata.jvm/src/org/jetbrains/kotlin/metadata/jvm/JvmProtoBuf.java @@ -3068,6 +3068,25 @@ public final class JvmProtoBuf { * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature setter = 4; */ org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature getSetter(); + + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + boolean hasDelegateMethod(); + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature getDelegateMethod(); } /** * Protobuf type {@code org.jetbrains.kotlin.metadata.jvm.JvmPropertySignature} @@ -3171,6 +3190,19 @@ public final class JvmProtoBuf { bitField0_ |= 0x00000008; break; } + case 42: { + org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.Builder subBuilder = null; + if (((bitField0_ & 0x00000010) == 0x00000010)) { + subBuilder = delegateMethod_.toBuilder(); + } + delegateMethod_ = input.readMessage(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.PARSER, extensionRegistry); + if (subBuilder != null) { + subBuilder.mergeFrom(delegateMethod_); + delegateMethod_ = subBuilder.buildPartial(); + } + bitField0_ |= 0x00000010; + break; + } } } } catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) { @@ -3273,11 +3305,37 @@ public final class JvmProtoBuf { return setter_; } + public static final int DELEGATE_METHOD_FIELD_NUMBER = 5; + private org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature delegateMethod_; + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + public boolean hasDelegateMethod() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+     * The delegate field of delegated properties may be optimized out; `getDelegate` should
+     * then call this method instead
+     * 
+ */ + public org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature getDelegateMethod() { + return delegateMethod_; + } + private void initFields() { field_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmFieldSignature.getDefaultInstance(); syntheticMethod_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); getter_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); setter_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); } private byte memoizedIsInitialized = -1; public final boolean isInitialized() { @@ -3304,6 +3362,9 @@ public final class JvmProtoBuf { if (((bitField0_ & 0x00000008) == 0x00000008)) { output.writeMessage(4, setter_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + output.writeMessage(5, delegateMethod_); + } output.writeRawBytes(unknownFields); } @@ -3329,6 +3390,10 @@ public final class JvmProtoBuf { size += org.jetbrains.kotlin.protobuf.CodedOutputStream .computeMessageSize(4, setter_); } + if (((bitField0_ & 0x00000010) == 0x00000010)) { + size += org.jetbrains.kotlin.protobuf.CodedOutputStream + .computeMessageSize(5, delegateMethod_); + } size += unknownFields.size(); memoizedSerializedSize = size; return size; @@ -3431,6 +3496,8 @@ public final class JvmProtoBuf { bitField0_ = (bitField0_ & ~0x00000004); setter_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); bitField0_ = (bitField0_ & ~0x00000008); + delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + bitField0_ = (bitField0_ & ~0x00000010); return this; } @@ -3470,6 +3537,10 @@ public final class JvmProtoBuf { to_bitField0_ |= 0x00000008; } result.setter_ = setter_; + if (((from_bitField0_ & 0x00000010) == 0x00000010)) { + to_bitField0_ |= 0x00000010; + } + result.delegateMethod_ = delegateMethod_; result.bitField0_ = to_bitField0_; return result; } @@ -3488,6 +3559,9 @@ public final class JvmProtoBuf { if (other.hasSetter()) { mergeSetter(other.getSetter()); } + if (other.hasDelegateMethod()) { + mergeDelegateMethod(other.getDelegateMethod()); + } setUnknownFields( getUnknownFields().concat(other.unknownFields)); return this; @@ -3780,6 +3854,96 @@ public final class JvmProtoBuf { return this; } + private org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public boolean hasDelegateMethod() { + return ((bitField0_ & 0x00000010) == 0x00000010); + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature getDelegateMethod() { + return delegateMethod_; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder setDelegateMethod(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature value) { + if (value == null) { + throw new NullPointerException(); + } + delegateMethod_ = value; + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder setDelegateMethod( + org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.Builder builderForValue) { + delegateMethod_ = builderForValue.build(); + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder mergeDelegateMethod(org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature value) { + if (((bitField0_ & 0x00000010) == 0x00000010) && + delegateMethod_ != org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance()) { + delegateMethod_ = + org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.newBuilder(delegateMethod_).mergeFrom(value).buildPartial(); + } else { + delegateMethod_ = value; + } + + bitField0_ |= 0x00000010; + return this; + } + /** + * optional .org.jetbrains.kotlin.metadata.jvm.JvmMethodSignature delegate_method = 5; + * + *
+       * The delegate field of delegated properties may be optimized out; `getDelegate` should
+       * then call this method instead
+       * 
+ */ + public Builder clearDelegateMethod() { + delegateMethod_ = org.jetbrains.kotlin.metadata.jvm.JvmProtoBuf.JvmMethodSignature.getDefaultInstance(); + + bitField0_ = (bitField0_ & ~0x00000010); + return this; + } + // @@protoc_insertion_point(builder_scope:org.jetbrains.kotlin.metadata.jvm.JvmPropertySignature) }