Fix proto comparison for fields mapped to type table
This commit is contained in:
committed by
romanart
parent
c694752b4f
commit
28e6219b0b
File diff suppressed because it is too large
Load Diff
@@ -82,9 +82,21 @@ abstract class DifferenceCalculator {
|
||||
val result = hashSetOf<String>()
|
||||
|
||||
val oldMap =
|
||||
oldList.groupBy { it.getHashCode({ compareObject.oldGetIndexOfString(it) }, { compareObject.oldGetIndexOfClassId(it) }) }
|
||||
oldList.groupBy {
|
||||
it.getHashCode(
|
||||
compareObject::oldGetIndexOfString,
|
||||
compareObject::oldGetIndexOfClassId,
|
||||
compareObject::oldGetTypeById
|
||||
)
|
||||
}
|
||||
val newMap =
|
||||
newList.groupBy { it.getHashCode({ compareObject.newGetIndexOfString(it) }, { compareObject.newGetIndexOfClassId(it) }) }
|
||||
newList.groupBy {
|
||||
it.getHashCode(
|
||||
compareObject::newGetIndexOfString,
|
||||
compareObject::newGetIndexOfClassId,
|
||||
compareObject::newGetTypeById
|
||||
)
|
||||
}
|
||||
|
||||
val hashes = oldMap.keys + newMap.keys
|
||||
for (hash in hashes) {
|
||||
@@ -134,12 +146,12 @@ abstract class DifferenceCalculator {
|
||||
return oldNames.union(newNames) - oldNames.intersect(newNames)
|
||||
}
|
||||
|
||||
private fun MessageLite.getHashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
|
||||
private fun MessageLite.getHashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int, typeTable: (Int) -> ProtoBuf.Type): Int {
|
||||
return when (this) {
|
||||
is ProtoBuf.Constructor -> hashCode(stringIndexes, fqNameIndexes)
|
||||
is ProtoBuf.Function -> hashCode(stringIndexes, fqNameIndexes)
|
||||
is ProtoBuf.Property -> hashCode(stringIndexes, fqNameIndexes)
|
||||
is ProtoBuf.TypeAlias -> hashCode(stringIndexes, fqNameIndexes)
|
||||
is ProtoBuf.Constructor -> hashCode(stringIndexes, fqNameIndexes, typeTable)
|
||||
is ProtoBuf.Function -> hashCode(stringIndexes, fqNameIndexes, typeTable)
|
||||
is ProtoBuf.Property -> hashCode(stringIndexes, fqNameIndexes, typeTable)
|
||||
is ProtoBuf.TypeAlias -> hashCode(stringIndexes, fqNameIndexes, typeTable)
|
||||
else -> error("Unknown message: $this")
|
||||
}
|
||||
}
|
||||
@@ -159,7 +171,12 @@ class DifferenceCalculatorForClass(
|
||||
private val oldData: ClassProtoData,
|
||||
private val newData: ClassProtoData
|
||||
) : DifferenceCalculator() {
|
||||
override val compareObject = ProtoCompareGenerated(oldData.nameResolver, newData.nameResolver)
|
||||
override val compareObject = ProtoCompareGenerated(
|
||||
oldNameResolver = oldData.nameResolver,
|
||||
newNameResolver = newData.nameResolver,
|
||||
oldTypeTable = oldData.proto.typeTableOrNull,
|
||||
newTypeTable = newData.proto.typeTableOrNull
|
||||
)
|
||||
|
||||
override fun difference(): Difference {
|
||||
val (oldProto, oldNameResolver) = oldData
|
||||
@@ -273,7 +290,12 @@ class DifferenceCalculatorForPackageFacade(
|
||||
private val oldData: PackagePartProtoData,
|
||||
private val newData: PackagePartProtoData
|
||||
) : DifferenceCalculator() {
|
||||
override val compareObject = ProtoCompareGenerated(oldData.nameResolver, newData.nameResolver)
|
||||
override val compareObject = ProtoCompareGenerated(
|
||||
oldNameResolver = oldData.nameResolver,
|
||||
newNameResolver = newData.nameResolver,
|
||||
oldTypeTable = oldData.proto.typeTableOrNull,
|
||||
newTypeTable = newData.proto.typeTableOrNull
|
||||
)
|
||||
|
||||
override fun difference(): Difference {
|
||||
val oldProto = oldData.proto
|
||||
@@ -322,3 +344,9 @@ class DifferenceCalculatorForPackageFacade(
|
||||
|
||||
private val ProtoBuf.Class.isSealed: Boolean
|
||||
get() = ProtoBuf.Modality.SEALED == Flags.MODALITY.get(flags)
|
||||
|
||||
val ProtoBuf.Class.typeTableOrNull: ProtoBuf.TypeTable?
|
||||
get() = if (hasTypeTable()) typeTable else null
|
||||
|
||||
val ProtoBuf.Package.typeTableOrNull: ProtoBuf.TypeTable?
|
||||
get() = if (hasTypeTable()) typeTable else null
|
||||
@@ -11,6 +11,7 @@ public final class DebugExtOptionsProtoBuf {
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.fqNameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
}
|
||||
public static final int SKIP_IN_COMPARISON_FIELD_NUMBER = 50000;
|
||||
/**
|
||||
@@ -56,6 +57,17 @@ public final class DebugExtOptionsProtoBuf {
|
||||
.newFileScopedGeneratedExtension(
|
||||
java.lang.Boolean.class,
|
||||
null);
|
||||
public static final int TYPE_ID_IN_TABLE_FIELD_NUMBER = 50004;
|
||||
/**
|
||||
* <code>extend .google.protobuf.FieldOptions { ... }</code>
|
||||
*/
|
||||
public static final
|
||||
org.jetbrains.kotlin.protobuf.GeneratedMessage.GeneratedExtension<
|
||||
org.jetbrains.kotlin.protobuf.DescriptorProtos.FieldOptions,
|
||||
java.lang.Boolean> typeIdInTable = org.jetbrains.kotlin.protobuf.GeneratedMessage
|
||||
.newFileScopedGeneratedExtension(
|
||||
java.lang.Boolean.class,
|
||||
null);
|
||||
|
||||
public static org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
|
||||
getDescriptor() {
|
||||
@@ -73,8 +85,9 @@ public final class DebugExtOptionsProtoBuf {
|
||||
"rotobuf.FieldOptions\030\321\206\003 \001(\010:<\n\023fq_name_" +
|
||||
"id_in_table\022\035.google.protobuf.FieldOptio" +
|
||||
"ns\030\322\206\003 \001(\010:;\n\022string_id_in_table\022\035.googl" +
|
||||
"e.protobuf.FieldOptions\030\323\206\003 \001(\010B\031B\027Debug" +
|
||||
"ExtOptionsProtoBuf"
|
||||
"e.protobuf.FieldOptions\030\323\206\003 \001(\010:9\n\020type_" +
|
||||
"id_in_table\022\035.google.protobuf.FieldOptio",
|
||||
"ns\030\324\206\003 \001(\010B\031B\027DebugExtOptionsProtoBuf"
|
||||
};
|
||||
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
||||
new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
|
||||
@@ -93,6 +106,7 @@ public final class DebugExtOptionsProtoBuf {
|
||||
nameIdInTable.internalInit(descriptor.getExtensions().get(1));
|
||||
fqNameIdInTable.internalInit(descriptor.getExtensions().get(2));
|
||||
stringIdInTable.internalInit(descriptor.getExtensions().get(3));
|
||||
typeIdInTable.internalInit(descriptor.getExtensions().get(4));
|
||||
org.jetbrains.kotlin.protobuf.DescriptorProtos.getDescriptor();
|
||||
}
|
||||
|
||||
|
||||
@@ -34331,115 +34331,117 @@ public final class DebugProtoBuf {
|
||||
"E\020\000\022\010\n\004CHAR\020\001\022\t\n\005SHORT\020\002\022\007\n\003INT\020\003\022\010\n\004LON" +
|
||||
"G\020\004\022\t\n\005FLOAT\020\005\022\n\n\006DOUBLE\020\006\022\013\n\007BOOLEAN\020\007\022",
|
||||
"\n\n\006STRING\020\010\022\t\n\005CLASS\020\t\022\010\n\004ENUM\020\n\022\016\n\nANNO" +
|
||||
"TATION\020\013\022\t\n\005ARRAY\020\014\"\373\005\n\004Type\022>\n\010argument" +
|
||||
"TATION\020\013\022\t\n\005ARRAY\020\014\"\223\006\n\004Type\022>\n\010argument" +
|
||||
"\030\002 \003(\0132,.org.jetbrains.kotlin.metadata.T" +
|
||||
"ype.Argument\022\027\n\010nullable\030\003 \001(\010:\005false\022+\n" +
|
||||
"\035flexible_type_capabilities_id\030\004 \001(\005B\004\230\265" +
|
||||
"\030\001\022A\n\024flexible_upper_bound\030\005 \001(\0132#.org.j" +
|
||||
"etbrains.kotlin.metadata.Type\022\037\n\027flexibl" +
|
||||
"e_upper_bound_id\030\010 \001(\005\022\030\n\nclass_name\030\006 \001" +
|
||||
"(\005B\004\220\265\030\001\022\026\n\016type_parameter\030\007 \001(\005\022!\n\023type" +
|
||||
"_parameter_name\030\t \001(\005B\004\210\265\030\001\022\035\n\017type_alia",
|
||||
"s_name\030\014 \001(\005B\004\220\265\030\001\0227\n\nouter_type\030\n \001(\0132#" +
|
||||
".org.jetbrains.kotlin.metadata.Type\022\025\n\ro" +
|
||||
"uter_type_id\030\013 \001(\005\022=\n\020abbreviated_type\030\r" +
|
||||
"etbrains.kotlin.metadata.Type\022%\n\027flexibl" +
|
||||
"e_upper_bound_id\030\010 \001(\005B\004\240\265\030\001\022\030\n\nclass_na" +
|
||||
"me\030\006 \001(\005B\004\220\265\030\001\022\026\n\016type_parameter\030\007 \001(\005\022!" +
|
||||
"\n\023type_parameter_name\030\t \001(\005B\004\210\265\030\001\022\035\n\017typ",
|
||||
"e_alias_name\030\014 \001(\005B\004\220\265\030\001\0227\n\nouter_type\030\n" +
|
||||
" \001(\0132#.org.jetbrains.kotlin.metadata.Typ" +
|
||||
"e\022\033\n\023abbreviated_type_id\030\016 \001(\005\022\r\n\005flags\030" +
|
||||
"\001 \001(\005\032\322\001\n\010Argument\022P\n\nprojection\030\001 \001(\01627" +
|
||||
".org.jetbrains.kotlin.metadata.Type.Argu" +
|
||||
"ment.Projection:\003INV\0221\n\004type\030\002 \001(\0132#.org" +
|
||||
".jetbrains.kotlin.metadata.Type\022\017\n\007type_" +
|
||||
"id\030\003 \001(\005\"0\n\nProjection\022\006\n\002IN\020\000\022\007\n\003OUT\020\001\022",
|
||||
"\007\n\003INV\020\002\022\010\n\004STAR\020\003*\005\010d\020\310\001\"\230\002\n\rTypeParame" +
|
||||
"ter\022\n\n\002id\030\001 \002(\005\022\022\n\004name\030\002 \002(\005B\004\210\265\030\001\022\026\n\007r" +
|
||||
"eified\030\003 \001(\010:\005false\022L\n\010variance\030\004 \001(\01625." +
|
||||
"org.jetbrains.kotlin.metadata.TypeParame" +
|
||||
"ter.Variance:\003INV\0228\n\013upper_bound\030\005 \003(\0132#" +
|
||||
".org.jetbrains.kotlin.metadata.Type\022\032\n\016u" +
|
||||
"pper_bound_id\030\006 \003(\005B\002\020\001\"$\n\010Variance\022\006\n\002I" +
|
||||
"N\020\000\022\007\n\003OUT\020\001\022\007\n\003INV\020\002*\005\010d\020\350\007\"\244\007\n\005Class\022\020" +
|
||||
"\n\005flags\030\001 \001(\005:\0016\022\025\n\007fq_name\030\003 \002(\005B\004\220\265\030\001\022" +
|
||||
"#\n\025companion_object_name\030\004 \001(\005B\004\210\265\030\001\022D\n\016",
|
||||
"type_parameter\030\005 \003(\0132,.org.jetbrains.kot" +
|
||||
"lin.metadata.TypeParameter\0226\n\tsupertype\030" +
|
||||
"\006 \003(\0132#.org.jetbrains.kotlin.metadata.Ty" +
|
||||
"pe\022\030\n\014supertype_id\030\002 \003(\005B\002\020\001\022!\n\021nested_c" +
|
||||
"lass_name\030\007 \003(\005B\006\020\001\210\265\030\001\022?\n\013constructor\030\010" +
|
||||
" \003(\0132*.org.jetbrains.kotlin.metadata.Con" +
|
||||
"structor\0229\n\010function\030\t \003(\0132\'.org.jetbrai" +
|
||||
"ns.kotlin.metadata.Function\0229\n\010property\030" +
|
||||
"\n \003(\0132\'.org.jetbrains.kotlin.metadata.Pr" +
|
||||
"operty\022<\n\ntype_alias\030\013 \003(\0132(.org.jetbrai",
|
||||
"ns.kotlin.metadata.TypeAlias\022<\n\nenum_ent" +
|
||||
"ry\030\r \003(\0132(.org.jetbrains.kotlin.metadata" +
|
||||
".EnumEntry\022\'\n\027sealed_subclass_fq_name\030\020 " +
|
||||
"\003(\005B\006\020\001\220\265\030\001\022<\n\ntype_table\030\036 \001(\0132(.org.je" +
|
||||
"tbrains.kotlin.metadata.TypeTable\022\033\n\023ver" +
|
||||
"sion_requirement\030\037 \003(\005\022Y\n\031version_requir" +
|
||||
"ement_table\030 \001(\01326.org.jetbrains.kotlin" +
|
||||
".metadata.VersionRequirementTable\"x\n\004Kin" +
|
||||
"d\022\t\n\005CLASS\020\000\022\r\n\tINTERFACE\020\001\022\016\n\nENUM_CLAS" +
|
||||
"S\020\002\022\016\n\nENUM_ENTRY\020\003\022\024\n\020ANNOTATION_CLASS\020",
|
||||
"\004\022\n\n\006OBJECT\020\005\022\024\n\020COMPANION_OBJECT\020\006*\006\010d\020" +
|
||||
"\270\224\001\"\335\002\n\007Package\0229\n\010function\030\003 \003(\0132\'.org." +
|
||||
"jetbrains.kotlin.metadata.Function\0229\n\010pr" +
|
||||
"operty\030\004 \003(\0132\'.org.jetbrains.kotlin.meta" +
|
||||
"data.Property\022<\n\ntype_alias\030\005 \003(\0132(.org." +
|
||||
"jetbrains.kotlin.metadata.TypeAlias\022<\n\nt" +
|
||||
"ype_table\030\036 \001(\0132(.org.jetbrains.kotlin.m" +
|
||||
"etadata.TypeTable\022Y\n\031version_requirement" +
|
||||
"_table\030 \001(\01326.org.jetbrains.kotlin.meta" +
|
||||
"data.VersionRequirementTable*\005\010d\020\310\001\"Z\n\tT",
|
||||
"ypeTable\0221\n\004type\030\001 \003(\0132#.org.jetbrains.k" +
|
||||
"otlin.metadata.Type\022\032\n\016first_nullable\030\002 " +
|
||||
"\001(\005:\002-1\"\214\001\n\013Constructor\022\020\n\005flags\030\001 \001(\005:\001" +
|
||||
"6\022F\n\017value_parameter\030\002 \003(\0132-.org.jetbrai" +
|
||||
"ns.kotlin.metadata.ValueParameter\022\033\n\023ver" +
|
||||
"sion_requirement\030\037 \003(\005*\006\010d\020\270\224\001\"\232\004\n\010Funct" +
|
||||
"ion\022\020\n\005flags\030\t \001(\005:\0016\022\024\n\told_flags\030\001 \001(\005" +
|
||||
":\0016\022\022\n\004name\030\002 \002(\005B\004\210\265\030\001\0228\n\013return_type\030\003" +
|
||||
" \001(\0132#.org.jetbrains.kotlin.metadata.Typ" +
|
||||
"e\022\026\n\016return_type_id\030\007 \001(\005\022D\n\016type_parame",
|
||||
"ter\030\004 \003(\0132,.org.jetbrains.kotlin.metadat" +
|
||||
"a.TypeParameter\022:\n\rreceiver_type\030\005 \001(\0132#" +
|
||||
".org.jetbrains.kotlin.metadata.Type\022\030\n\020r" +
|
||||
"eceiver_type_id\030\010 \001(\005\022F\n\017value_parameter" +
|
||||
"\030\006 \003(\0132-.org.jetbrains.kotlin.metadata.V" +
|
||||
"alueParameter\022<\n\ntype_table\030\036 \001(\0132(.org." +
|
||||
"jetbrains.kotlin.metadata.TypeTable\022\033\n\023v" +
|
||||
"ersion_requirement\030\037 \003(\005\0229\n\010contract\030 \001" +
|
||||
"(\0132\'.org.jetbrains.kotlin.metadata.Contr" +
|
||||
"act*\006\010d\020\270\224\001\"\331\003\n\010Property\022\022\n\005flags\030\013 \001(\005:",
|
||||
"\003518\022\027\n\told_flags\030\001 \001(\005:\0042054\022\022\n\004name\030\002 " +
|
||||
"\002(\005B\004\210\265\030\001\0228\n\013return_type\030\003 \001(\0132#.org.jet" +
|
||||
"brains.kotlin.metadata.Type\022\026\n\016return_ty" +
|
||||
"pe_id\030\t \001(\005\022D\n\016type_parameter\030\004 \003(\0132,.or" +
|
||||
"g.jetbrains.kotlin.metadata.TypeParamete" +
|
||||
"r\022:\n\rreceiver_type\030\005 \001(\0132#.org.jetbrains" +
|
||||
".kotlin.metadata.Type\022\030\n\020receiver_type_i" +
|
||||
"d\030\n \001(\005\022M\n\026setter_value_parameter\030\006 \001(\0132" +
|
||||
"-.org.jetbrains.kotlin.metadata.ValuePar" +
|
||||
"ameter\022\024\n\014getter_flags\030\007 \001(\005\022\024\n\014setter_f",
|
||||
"lags\030\010 \001(\005\022\033\n\023version_requirement\030\037 \003(\005*" +
|
||||
"\006\010d\020\270\224\001\"\343\001\n\016ValueParameter\022\020\n\005flags\030\001 \001(" +
|
||||
"\005:\0010\022\022\n\004name\030\002 \002(\005B\004\210\265\030\001\0221\n\004type\030\003 \001(\0132#" +
|
||||
".org.jetbrains.kotlin.metadata.Type\022\017\n\007t" +
|
||||
"ype_id\030\005 \001(\005\022@\n\023vararg_element_type\030\004 \001(" +
|
||||
"\0132#.org.jetbrains.kotlin.metadata.Type\022\036" +
|
||||
"\n\026vararg_element_type_id\030\006 \001(\005*\005\010d\020\310\001\"\212\003" +
|
||||
"\n\tTypeAlias\022\020\n\005flags\030\001 \001(\005:\0016\022\022\n\004name\030\002 " +
|
||||
"\002(\005B\004\210\265\030\001\022D\n\016type_parameter\030\003 \003(\0132,.org." +
|
||||
"jetbrains.kotlin.metadata.TypeParameter\022",
|
||||
"<\n\017underlying_type\030\004 \001(\0132#.org.jetbrains" +
|
||||
".kotlin.metadata.Type\022\032\n\022underlying_type" +
|
||||
"_id\030\005 \001(\005\022:\n\rexpanded_type\030\006 \001(\0132#.org.j" +
|
||||
"etbrains.kotlin.metadata.Type\022\030\n\020expande" +
|
||||
"d_type_id\030\007 \001(\005\022=\n\nannotation\030\010 \003(\0132).or" +
|
||||
"e\022\033\n\router_type_id\030\013 \001(\005B\004\240\265\030\001\022=\n\020abbrev" +
|
||||
"iated_type\030\r \001(\0132#.org.jetbrains.kotlin." +
|
||||
"metadata.Type\022!\n\023abbreviated_type_id\030\016 \001" +
|
||||
"(\005B\004\240\265\030\001\022\r\n\005flags\030\001 \001(\005\032\330\001\n\010Argument\022P\n\n" +
|
||||
"projection\030\001 \001(\01627.org.jetbrains.kotlin." +
|
||||
"metadata.Type.Argument.Projection:\003INV\0221" +
|
||||
"\n\004type\030\002 \001(\0132#.org.jetbrains.kotlin.meta" +
|
||||
"data.Type\022\025\n\007type_id\030\003 \001(\005B\004\240\265\030\001\"0\n\nProj",
|
||||
"ection\022\006\n\002IN\020\000\022\007\n\003OUT\020\001\022\007\n\003INV\020\002\022\010\n\004STAR" +
|
||||
"\020\003*\005\010d\020\310\001\"\234\002\n\rTypeParameter\022\n\n\002id\030\001 \002(\005\022" +
|
||||
"\022\n\004name\030\002 \002(\005B\004\210\265\030\001\022\026\n\007reified\030\003 \001(\010:\005fa" +
|
||||
"lse\022L\n\010variance\030\004 \001(\01625.org.jetbrains.ko" +
|
||||
"tlin.metadata.TypeParameter.Variance:\003IN" +
|
||||
"V\0228\n\013upper_bound\030\005 \003(\0132#.org.jetbrains.k" +
|
||||
"otlin.metadata.Type\022\036\n\016upper_bound_id\030\006 " +
|
||||
"\003(\005B\006\020\001\240\265\030\001\"$\n\010Variance\022\006\n\002IN\020\000\022\007\n\003OUT\020\001" +
|
||||
"\022\007\n\003INV\020\002*\005\010d\020\350\007\"\250\007\n\005Class\022\020\n\005flags\030\001 \001(" +
|
||||
"\005:\0016\022\025\n\007fq_name\030\003 \002(\005B\004\220\265\030\001\022#\n\025companion",
|
||||
"_object_name\030\004 \001(\005B\004\210\265\030\001\022D\n\016type_paramet" +
|
||||
"er\030\005 \003(\0132,.org.jetbrains.kotlin.metadata" +
|
||||
".TypeParameter\0226\n\tsupertype\030\006 \003(\0132#.org." +
|
||||
"jetbrains.kotlin.metadata.Type\022\034\n\014supert" +
|
||||
"ype_id\030\002 \003(\005B\006\020\001\240\265\030\001\022!\n\021nested_class_nam" +
|
||||
"e\030\007 \003(\005B\006\020\001\210\265\030\001\022?\n\013constructor\030\010 \003(\0132*.o" +
|
||||
"rg.jetbrains.kotlin.metadata.Constructor" +
|
||||
"\0229\n\010function\030\t \003(\0132\'.org.jetbrains.kotli" +
|
||||
"n.metadata.Function\0229\n\010property\030\n \003(\0132\'." +
|
||||
"org.jetbrains.kotlin.metadata.Property\022<",
|
||||
"\n\ntype_alias\030\013 \003(\0132(.org.jetbrains.kotli" +
|
||||
"n.metadata.TypeAlias\022<\n\nenum_entry\030\r \003(\013" +
|
||||
"2(.org.jetbrains.kotlin.metadata.EnumEnt" +
|
||||
"ry\022\'\n\027sealed_subclass_fq_name\030\020 \003(\005B\006\020\001\220" +
|
||||
"\265\030\001\022<\n\ntype_table\030\036 \001(\0132(.org.jetbrains." +
|
||||
"kotlin.metadata.TypeTable\022\033\n\023version_req" +
|
||||
"uirement\030\037 \003(\005\022Y\n\031version_requirement_ta" +
|
||||
"ble\030 \001(\01326.org.jetbrains.kotlin.metadat" +
|
||||
"a.VersionRequirementTable\"x\n\004Kind\022\t\n\005CLA" +
|
||||
"SS\020\000\022\r\n\tINTERFACE\020\001\022\016\n\nENUM_CLASS\020\002\022\016\n\nE",
|
||||
"NUM_ENTRY\020\003\022\024\n\020ANNOTATION_CLASS\020\004\022\n\n\006OBJ" +
|
||||
"ECT\020\005\022\024\n\020COMPANION_OBJECT\020\006*\006\010d\020\270\224\001\"\335\002\n\007" +
|
||||
"Package\0229\n\010function\030\003 \003(\0132\'.org.jetbrain" +
|
||||
"s.kotlin.metadata.Function\0229\n\010property\030\004" +
|
||||
" \003(\0132\'.org.jetbrains.kotlin.metadata.Pro" +
|
||||
"perty\022<\n\ntype_alias\030\005 \003(\0132(.org.jetbrain" +
|
||||
"s.kotlin.metadata.TypeAlias\022<\n\ntype_tabl" +
|
||||
"e\030\036 \001(\0132(.org.jetbrains.kotlin.metadata." +
|
||||
"TypeTable\022Y\n\031version_requirement_table\030 " +
|
||||
" \001(\01326.org.jetbrains.kotlin.metadata.Ver",
|
||||
"sionRequirementTable*\005\010d\020\310\001\"Z\n\tTypeTable" +
|
||||
"\0221\n\004type\030\001 \003(\0132#.org.jetbrains.kotlin.me" +
|
||||
"tadata.Type\022\032\n\016first_nullable\030\002 \001(\005:\002-1\"" +
|
||||
"\214\001\n\013Constructor\022\020\n\005flags\030\001 \001(\005:\0016\022F\n\017val" +
|
||||
"ue_parameter\030\002 \003(\0132-.org.jetbrains.kotli" +
|
||||
"n.metadata.ValueParameter\022\033\n\023version_req" +
|
||||
"uirement\030\037 \003(\005*\006\010d\020\270\224\001\"\246\004\n\010Function\022\020\n\005f" +
|
||||
"lags\030\t \001(\005:\0016\022\024\n\told_flags\030\001 \001(\005:\0016\022\022\n\004n" +
|
||||
"ame\030\002 \002(\005B\004\210\265\030\001\0228\n\013return_type\030\003 \001(\0132#.o" +
|
||||
"rg.jetbrains.kotlin.metadata.Type\022\034\n\016ret",
|
||||
"urn_type_id\030\007 \001(\005B\004\240\265\030\001\022D\n\016type_paramete" +
|
||||
"r\030\004 \003(\0132,.org.jetbrains.kotlin.metadata." +
|
||||
"TypeParameter\022:\n\rreceiver_type\030\005 \001(\0132#.o" +
|
||||
"rg.jetbrains.kotlin.metadata.Type\022\036\n\020rec" +
|
||||
"eiver_type_id\030\010 \001(\005B\004\240\265\030\001\022F\n\017value_param" +
|
||||
"eter\030\006 \003(\0132-.org.jetbrains.kotlin.metada" +
|
||||
"ta.ValueParameter\022<\n\ntype_table\030\036 \001(\0132(." +
|
||||
"org.jetbrains.kotlin.metadata.TypeTable\022" +
|
||||
"\033\n\023version_requirement\030\037 \003(\005\0229\n\010contract" +
|
||||
"\030 \001(\0132\'.org.jetbrains.kotlin.metadata.C",
|
||||
"ontract*\006\010d\020\270\224\001\"\345\003\n\010Property\022\022\n\005flags\030\013 " +
|
||||
"\001(\005:\003518\022\027\n\told_flags\030\001 \001(\005:\0042054\022\022\n\004nam" +
|
||||
"e\030\002 \002(\005B\004\210\265\030\001\0228\n\013return_type\030\003 \001(\0132#.org" +
|
||||
".jetbrains.kotlin.metadata.Type\022\034\n\016retur" +
|
||||
"n_type_id\030\t \001(\005B\004\240\265\030\001\022D\n\016type_parameter\030" +
|
||||
"\004 \003(\0132,.org.jetbrains.kotlin.metadata.Ty" +
|
||||
"peParameter\022:\n\rreceiver_type\030\005 \001(\0132#.org" +
|
||||
".jetbrains.kotlin.metadata.Type\022\036\n\020recei" +
|
||||
"ver_type_id\030\n \001(\005B\004\240\265\030\001\022M\n\026setter_value_" +
|
||||
"parameter\030\006 \001(\0132-.org.jetbrains.kotlin.m",
|
||||
"etadata.ValueParameter\022\024\n\014getter_flags\030\007" +
|
||||
" \001(\005\022\024\n\014setter_flags\030\010 \001(\005\022\033\n\023version_re" +
|
||||
"quirement\030\037 \003(\005*\006\010d\020\270\224\001\"\357\001\n\016ValueParamet" +
|
||||
"er\022\020\n\005flags\030\001 \001(\005:\0010\022\022\n\004name\030\002 \002(\005B\004\210\265\030\001" +
|
||||
"\0221\n\004type\030\003 \001(\0132#.org.jetbrains.kotlin.me" +
|
||||
"tadata.Type\022\025\n\007type_id\030\005 \001(\005B\004\240\265\030\001\022@\n\023va" +
|
||||
"rarg_element_type\030\004 \001(\0132#.org.jetbrains." +
|
||||
"kotlin.metadata.Type\022$\n\026vararg_element_t" +
|
||||
"ype_id\030\006 \001(\005B\004\240\265\030\001*\005\010d\020\310\001\"\226\003\n\tTypeAlias\022" +
|
||||
"\020\n\005flags\030\001 \001(\005:\0016\022\022\n\004name\030\002 \002(\005B\004\210\265\030\001\022D\n",
|
||||
"\016type_parameter\030\003 \003(\0132,.org.jetbrains.ko" +
|
||||
"tlin.metadata.TypeParameter\022<\n\017underlyin" +
|
||||
"g_type\030\004 \001(\0132#.org.jetbrains.kotlin.meta" +
|
||||
"data.Type\022 \n\022underlying_type_id\030\005 \001(\005B\004\240" +
|
||||
"\265\030\001\022:\n\rexpanded_type\030\006 \001(\0132#.org.jetbrai" +
|
||||
"ns.kotlin.metadata.Type\022\036\n\020expanded_type" +
|
||||
"_id\030\007 \001(\005B\004\240\265\030\001\022=\n\nannotation\030\010 \003(\0132).or" +
|
||||
"g.jetbrains.kotlin.metadata.Annotation\022\033" +
|
||||
"\n\023version_requirement\030\037 \003(\005*\005\010d\020\310\001\"&\n\tEn" +
|
||||
"umEntry\022\022\n\004name\030\001 \001(\005B\004\210\265\030\001*\005\010d\020\310\001\"\225\003\n\022V" +
|
||||
"umEntry\022\022\n\004name\030\001 \001(\005B\004\210\265\030\001*\005\010d\020\310\001\"\225\003\n\022V",
|
||||
"ersionRequirement\022\017\n\007version\030\001 \001(\005\022\024\n\014ve" +
|
||||
"rsion_full\030\002 \001(\005\022M\n\005level\030\003 \001(\01627.org.je",
|
||||
"rsion_full\030\002 \001(\005\022M\n\005level\030\003 \001(\01627.org.je" +
|
||||
"tbrains.kotlin.metadata.VersionRequireme" +
|
||||
"nt.Level:\005ERROR\022\022\n\nerror_code\030\004 \001(\005\022\025\n\007m" +
|
||||
"essage\030\005 \001(\005B\004\230\265\030\001\022e\n\014version_kind\030\006 \001(\016" +
|
||||
@@ -34447,9 +34449,9 @@ public final class DebugProtoBuf {
|
||||
"Requirement.VersionKind:\020LANGUAGE_VERSIO" +
|
||||
"N\"+\n\005Level\022\013\n\007WARNING\020\000\022\t\n\005ERROR\020\001\022\n\n\006HI" +
|
||||
"DDEN\020\002\"J\n\013VersionKind\022\024\n\020LANGUAGE_VERSIO" +
|
||||
"N\020\000\022\024\n\020COMPILER_VERSION\020\001\022\017\n\013API_VERSION" +
|
||||
"N\020\000\022\024\n\020COMPILER_VERSION\020\001\022\017\n\013API_VERSION",
|
||||
"\020\002\"a\n\027VersionRequirementTable\022F\n\013require" +
|
||||
"ment\030\001 \003(\01321.org.jetbrains.kotlin.metada",
|
||||
"ment\030\001 \003(\01321.org.jetbrains.kotlin.metada" +
|
||||
"ta.VersionRequirement\"\217\002\n\017PackageFragmen" +
|
||||
"t\022;\n\007strings\030\001 \001(\0132*.org.jetbrains.kotli" +
|
||||
"n.metadata.StringTable\022J\n\017qualified_name" +
|
||||
@@ -34457,9 +34459,9 @@ public final class DebugProtoBuf {
|
||||
"QualifiedNameTable\0227\n\007package\030\003 \001(\0132&.or" +
|
||||
"g.jetbrains.kotlin.metadata.Package\0223\n\005c" +
|
||||
"lass\030\004 \003(\0132$.org.jetbrains.kotlin.metada" +
|
||||
"ta.Class*\005\010d\020\310\001\"A\n\010Contract\0225\n\006effect\030\001 " +
|
||||
"ta.Class*\005\010d\020\310\001\"A\n\010Contract\0225\n\006effect\030\001 ",
|
||||
"\003(\0132%.org.jetbrains.kotlin.metadata.Effe" +
|
||||
"ct\"\306\003\n\006Effect\022E\n\013effect_type\030\001 \001(\01620.org",
|
||||
"ct\"\306\003\n\006Effect\022E\n\013effect_type\030\001 \001(\01620.org" +
|
||||
".jetbrains.kotlin.metadata.Effect.Effect" +
|
||||
"Type\022N\n\033effect_constructor_argument\030\002 \003(" +
|
||||
"\0132).org.jetbrains.kotlin.metadata.Expres" +
|
||||
@@ -34467,27 +34469,27 @@ public final class DebugProtoBuf {
|
||||
"\030\003 \001(\0132).org.jetbrains.kotlin.metadata.E" +
|
||||
"xpression\022B\n\004kind\030\004 \001(\01624.org.jetbrains." +
|
||||
"kotlin.metadata.Effect.InvocationKind\"C\n" +
|
||||
"\nEffectType\022\024\n\020RETURNS_CONSTANT\020\000\022\t\n\005CAL" +
|
||||
"\nEffectType\022\024\n\020RETURNS_CONSTANT\020\000\022\t\n\005CAL",
|
||||
"LS\020\001\022\024\n\020RETURNS_NOT_NULL\020\002\"G\n\016Invocation" +
|
||||
"Kind\022\020\n\014AT_MOST_ONCE\020\000\022\020\n\014EXACTLY_ONCE\020\001",
|
||||
"\022\021\n\rAT_LEAST_ONCE\020\002\"\237\003\n\nExpression\022\020\n\005fl" +
|
||||
"Kind\022\020\n\014AT_MOST_ONCE\020\000\022\020\n\014EXACTLY_ONCE\020\001" +
|
||||
"\022\021\n\rAT_LEAST_ONCE\020\002\"\245\003\n\nExpression\022\020\n\005fl" +
|
||||
"ags\030\001 \001(\005:\0010\022!\n\031value_parameter_referenc" +
|
||||
"e\030\002 \001(\005\022O\n\016constant_value\030\003 \001(\01627.org.je" +
|
||||
"tbrains.kotlin.metadata.Expression.Const" +
|
||||
"antValue\022=\n\020is_instance_type\030\004 \001(\0132#.org" +
|
||||
".jetbrains.kotlin.metadata.Type\022\033\n\023is_in" +
|
||||
"stance_type_id\030\005 \001(\005\022?\n\014and_argument\030\006 \003" +
|
||||
"(\0132).org.jetbrains.kotlin.metadata.Expre" +
|
||||
"ssion\022>\n\013or_argument\030\007 \003(\0132).org.jetbrai" +
|
||||
"ns.kotlin.metadata.Expression\".\n\rConstan",
|
||||
"tValue\022\010\n\004TRUE\020\000\022\t\n\005FALSE\020\001\022\010\n\004NULL\020\002*9\n" +
|
||||
"\010Modality\022\t\n\005FINAL\020\000\022\010\n\004OPEN\020\001\022\014\n\010ABSTRA" +
|
||||
"CT\020\002\022\n\n\006SEALED\020\003*b\n\nVisibility\022\014\n\010INTERN" +
|
||||
"AL\020\000\022\013\n\007PRIVATE\020\001\022\r\n\tPROTECTED\020\002\022\n\n\006PUBL" +
|
||||
"IC\020\003\022\023\n\017PRIVATE_TO_THIS\020\004\022\t\n\005LOCAL\020\005*Q\n\n" +
|
||||
"MemberKind\022\017\n\013DECLARATION\020\000\022\021\n\rFAKE_OVER" +
|
||||
"RIDE\020\001\022\016\n\nDELEGATION\020\002\022\017\n\013SYNTHESIZED\020\003B" +
|
||||
"\017B\rDebugProtoBuf"
|
||||
".jetbrains.kotlin.metadata.Type\022!\n\023is_in" +
|
||||
"stance_type_id\030\005 \001(\005B\004\240\265\030\001\022?\n\014and_argume" +
|
||||
"nt\030\006 \003(\0132).org.jetbrains.kotlin.metadata",
|
||||
".Expression\022>\n\013or_argument\030\007 \003(\0132).org.j" +
|
||||
"etbrains.kotlin.metadata.Expression\".\n\rC" +
|
||||
"onstantValue\022\010\n\004TRUE\020\000\022\t\n\005FALSE\020\001\022\010\n\004NUL" +
|
||||
"L\020\002*9\n\010Modality\022\t\n\005FINAL\020\000\022\010\n\004OPEN\020\001\022\014\n\010" +
|
||||
"ABSTRACT\020\002\022\n\n\006SEALED\020\003*b\n\nVisibility\022\014\n\010" +
|
||||
"INTERNAL\020\000\022\013\n\007PRIVATE\020\001\022\r\n\tPROTECTED\020\002\022\n" +
|
||||
"\n\006PUBLIC\020\003\022\023\n\017PRIVATE_TO_THIS\020\004\022\t\n\005LOCAL" +
|
||||
"\020\005*Q\n\nMemberKind\022\017\n\013DECLARATION\020\000\022\021\n\rFAK" +
|
||||
"E_OVERRIDE\020\001\022\016\n\nDELEGATION\020\002\022\017\n\013SYNTHESI" +
|
||||
"ZED\020\003B\017B\rDebugProtoBuf"
|
||||
};
|
||||
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
|
||||
new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
|
||||
@@ -34654,20 +34656,35 @@ public final class DebugProtoBuf {
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.fqNameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.fqNameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.fqNameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.fqNameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.fqNameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.fqNameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.nameIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.stringIdInTable);
|
||||
registry.add(org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.typeIdInTable);
|
||||
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
|
||||
.internalUpdateFileDescriptor(descriptor, registry);
|
||||
org.jetbrains.kotlin.metadata.DebugExtOptionsProtoBuf.getDescriptor();
|
||||
|
||||
@@ -25,4 +25,5 @@ extend google.protobuf.FieldOptions {
|
||||
optional bool name_id_in_table = 50001;
|
||||
optional bool fq_name_id_in_table = 50002;
|
||||
optional bool string_id_in_table = 50003;
|
||||
optional bool type_id_in_table = 50004;
|
||||
}
|
||||
|
||||
@@ -123,7 +123,7 @@ message Type {
|
||||
|
||||
// When projection is STAR, no type is written, otherwise type must be specified
|
||||
optional Type type = 2;
|
||||
optional int32 type_id = 3;
|
||||
optional int32 type_id = 3 [(type_id_in_table) = true];
|
||||
}
|
||||
|
||||
repeated Argument argument = 2;
|
||||
@@ -135,7 +135,7 @@ message Type {
|
||||
optional int32 flexible_type_capabilities_id = 4 [(string_id_in_table) = true];
|
||||
|
||||
optional Type flexible_upper_bound = 5;
|
||||
optional int32 flexible_upper_bound_id = 8;
|
||||
optional int32 flexible_upper_bound_id = 8 [(type_id_in_table) = true];
|
||||
|
||||
// Only one of [class_name, type_parameter, type_parameter_name, type_alias_name] should be present
|
||||
|
||||
@@ -150,10 +150,10 @@ message Type {
|
||||
|
||||
// Outer type may be present only if class_name or type_alias_name is present
|
||||
optional Type outer_type = 10;
|
||||
optional int32 outer_type_id = 11;
|
||||
optional int32 outer_type_id = 11 [(type_id_in_table) = true];
|
||||
|
||||
optional Type abbreviated_type = 13;
|
||||
optional int32 abbreviated_type_id = 14;
|
||||
optional int32 abbreviated_type_id = 14 [(type_id_in_table) = true];
|
||||
|
||||
/*
|
||||
suspend
|
||||
@@ -178,7 +178,7 @@ message TypeParameter {
|
||||
optional Variance variance = 4 [default = INV];
|
||||
|
||||
repeated Type upper_bound = 5;
|
||||
repeated int32 upper_bound_id = 6 [packed = true];
|
||||
repeated int32 upper_bound_id = 6 [packed = true, (type_id_in_table) = true];
|
||||
|
||||
extensions 100 to 999;
|
||||
}
|
||||
@@ -215,7 +215,7 @@ message Class {
|
||||
repeated TypeParameter type_parameter = 5;
|
||||
|
||||
repeated Type supertype = 6;
|
||||
repeated int32 supertype_id = 2 [packed = true];
|
||||
repeated int32 supertype_id = 2 [packed = true, (type_id_in_table) = true];
|
||||
|
||||
repeated int32 nested_class_name = 7 [packed = true, (name_id_in_table) = true];
|
||||
|
||||
@@ -294,12 +294,12 @@ message Function {
|
||||
required int32 name = 2 [(name_id_in_table) = true];
|
||||
|
||||
optional Type return_type = 3;
|
||||
optional int32 return_type_id = 7;
|
||||
optional int32 return_type_id = 7 [(type_id_in_table) = true];
|
||||
|
||||
repeated TypeParameter type_parameter = 4;
|
||||
|
||||
optional Type receiver_type = 5;
|
||||
optional int32 receiver_type_id = 8;
|
||||
optional int32 receiver_type_id = 8 [(type_id_in_table) = true];
|
||||
|
||||
repeated ValueParameter value_parameter = 6;
|
||||
|
||||
@@ -335,12 +335,12 @@ message Property {
|
||||
required int32 name = 2 [(name_id_in_table) = true];
|
||||
|
||||
optional Type return_type = 3;
|
||||
optional int32 return_type_id = 9;
|
||||
optional int32 return_type_id = 9 [(type_id_in_table) = true];
|
||||
|
||||
repeated TypeParameter type_parameter = 4;
|
||||
|
||||
optional Type receiver_type = 5;
|
||||
optional int32 receiver_type_id = 10;
|
||||
optional int32 receiver_type_id = 10 [(type_id_in_table) = true];
|
||||
|
||||
optional ValueParameter setter_value_parameter = 6;
|
||||
|
||||
@@ -377,10 +377,10 @@ message ValueParameter {
|
||||
required int32 name = 2 [(name_id_in_table) = true];
|
||||
|
||||
optional Type type = 3;
|
||||
optional int32 type_id = 5;
|
||||
optional int32 type_id = 5 [(type_id_in_table) = true];
|
||||
|
||||
optional Type vararg_element_type = 4;
|
||||
optional int32 vararg_element_type_id = 6;
|
||||
optional int32 vararg_element_type_id = 6 [(type_id_in_table) = true];
|
||||
|
||||
extensions 100 to 199;
|
||||
}
|
||||
@@ -397,10 +397,10 @@ message TypeAlias {
|
||||
repeated TypeParameter type_parameter = 3;
|
||||
|
||||
optional Type underlying_type = 4;
|
||||
optional int32 underlying_type_id = 5;
|
||||
optional int32 underlying_type_id = 5 [(type_id_in_table) = true];
|
||||
|
||||
optional Type expanded_type = 6;
|
||||
optional int32 expanded_type_id = 7;
|
||||
optional int32 expanded_type_id = 7 [(type_id_in_table) = true];
|
||||
|
||||
repeated Annotation annotation = 8;
|
||||
|
||||
@@ -557,7 +557,7 @@ message Expression {
|
||||
// present => this expression is IsInstancePredicate, with 'variableName' as LHS
|
||||
// and with type encoded in either one of next two fields as RHS.
|
||||
optional Type is_instance_type = 4;
|
||||
optional int32 is_instance_type_id = 5;
|
||||
optional int32 is_instance_type_id = 5 [(type_id_in_table) = true];
|
||||
|
||||
// non-empty => this expression is boolean formula of form 'andArguments[0] && andArguments[1] && ...'
|
||||
// Additionally, if first argument of formula is primitive expression (i.e. predicate or value),
|
||||
|
||||
+20
-3
@@ -119,7 +119,14 @@ class GenerateProtoBufCompare {
|
||||
p.println("/** This file is generated by org.jetbrains.kotlin.generators.protobuf.GenerateProtoBufCompare. DO NOT MODIFY MANUALLY */")
|
||||
p.println()
|
||||
|
||||
p.println("open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameResolver: NameResolver) {")
|
||||
p.println("open class ProtoCompareGenerated(")
|
||||
p.pushIndent()
|
||||
p.println("val oldNameResolver: NameResolver,")
|
||||
p.println("val newNameResolver: NameResolver,")
|
||||
p.println("oldTypeTable: ProtoBuf.TypeTable?,")
|
||||
p.println("newTypeTable: ProtoBuf.TypeTable?")
|
||||
p.popIndent()
|
||||
p.println(") {")
|
||||
p.pushIndent()
|
||||
|
||||
p.println("private val strings = Interner<String>()")
|
||||
@@ -127,6 +134,8 @@ class GenerateProtoBufCompare {
|
||||
p.println("val $NEW_PREFIX${STRING_INDEXES_NAME}Map: MutableMap<Int, Int> = hashMapOf()")
|
||||
p.println("val $OLD_PREFIX${CLASS_ID_INDEXES_NAME}Map: MutableMap<Int, Int> = hashMapOf()")
|
||||
p.println("val $NEW_PREFIX${CLASS_ID_INDEXES_NAME}Map: MutableMap<Int, Int> = hashMapOf()")
|
||||
p.println("val oldTypeTable: ProtoBuf.TypeTable = oldTypeTable ?: ProtoBuf.TypeTable.getDefaultInstance()")
|
||||
p.println("val newTypeTable: ProtoBuf.TypeTable = newTypeTable ?: ProtoBuf.TypeTable.getDefaultInstance()")
|
||||
|
||||
p.println()
|
||||
p.println("private val classIds = Interner<ClassId>()")
|
||||
@@ -162,6 +171,10 @@ class GenerateProtoBufCompare {
|
||||
}
|
||||
|
||||
fun generateAuxiliaryMethods(p: Printer) {
|
||||
p.println("fun oldGetTypeById(id: Int): ProtoBuf.Type = oldTypeTable.getType(id) ?: error(\"Unknown type id: ${'$'}id\")")
|
||||
p.println("fun newGetTypeById(id: Int): ProtoBuf.Type = newTypeTable.getType(id) ?: error(\"Unknown type id: ${'$'}id\")")
|
||||
p.println()
|
||||
|
||||
p.println("fun oldGetIndexOfString(index: Int): Int = getIndexOfString(index, oldStringIndexesMap, oldNameResolver)")
|
||||
p.println("fun newGetIndexOfString(index: Int): Int = getIndexOfString(index, newStringIndexesMap, newNameResolver)")
|
||||
p.println()
|
||||
@@ -206,7 +219,7 @@ class GenerateProtoBufCompare {
|
||||
val extFields = extensions[descriptor]?.filter { !it.isSkip } ?: emptyList()
|
||||
|
||||
p.println()
|
||||
p.println("fun $typeName.$HASH_CODE_NAME(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {")
|
||||
p.println("fun $typeName.$HASH_CODE_NAME(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int, typeById: (Int) -> ProtoBuf.Type): Int {")
|
||||
p.pushIndent()
|
||||
|
||||
p.println("var $HASH_CODE_NAME = 1")
|
||||
@@ -426,6 +439,8 @@ class GenerateProtoBufCompare {
|
||||
|
||||
private fun ifWithComparison(field: Descriptors.FieldDescriptor, expr: String, statement: String) =
|
||||
when {
|
||||
field.options.getExtension(DebugExtOptionsProtoBuf.typeIdInTable) ->
|
||||
"if (!$CHECK_EQUALS_NAME(oldTypeTable.getType(old.$expr), newTypeTable.getType(new.$expr))) $statement"
|
||||
field.options.getExtension(DebugExtOptionsProtoBuf.stringIdInTable) ||
|
||||
field.options.getExtension(DebugExtOptionsProtoBuf.nameIdInTable) ->
|
||||
"if (!$CHECK_STRING_EQUALS_NAME(old.$expr, new.$expr)) $statement"
|
||||
@@ -449,6 +464,8 @@ class GenerateProtoBufCompare {
|
||||
|
||||
private fun fieldToHashCode(field: Descriptors.FieldDescriptor, expr: String): String =
|
||||
when {
|
||||
field.options.getExtension(DebugExtOptionsProtoBuf.typeIdInTable) ->
|
||||
"typeById($expr).$HASH_CODE_NAME(stringIndexes, fqNameIndexes, typeById)"
|
||||
field.options.getExtension(DebugExtOptionsProtoBuf.stringIdInTable) ||
|
||||
field.options.getExtension(DebugExtOptionsProtoBuf.nameIdInTable) ->
|
||||
"stringIndexes($expr)"
|
||||
@@ -459,7 +476,7 @@ class GenerateProtoBufCompare {
|
||||
field.javaType in JAVA_TYPES_WITH_INLINED_EQUALS ->
|
||||
"$expr.$HASH_CODE_NAME()"
|
||||
else ->
|
||||
"$expr.$HASH_CODE_NAME(stringIndexes, fqNameIndexes)"
|
||||
"$expr.$HASH_CODE_NAME(stringIndexes, fqNameIndexes, typeById)"
|
||||
}
|
||||
|
||||
private val Descriptors.Descriptor.typeName: String
|
||||
|
||||
+12
-2
@@ -58,10 +58,20 @@ abstract class AbstractProtoComparisonTest<PROTO_DATA> : TestWithWorkingDir() {
|
||||
|
||||
val rawProtoDifference = when {
|
||||
oldData is ClassProtoData && newData is ClassProtoData -> {
|
||||
ProtoCompareGenerated(oldData.nameResolver, newData.nameResolver).difference(oldData.proto, newData.proto)
|
||||
ProtoCompareGenerated(
|
||||
oldNameResolver = oldData.nameResolver,
|
||||
newNameResolver = newData.nameResolver,
|
||||
oldTypeTable = oldData.proto.typeTableOrNull,
|
||||
newTypeTable = newData.proto.typeTableOrNull
|
||||
).difference(oldData.proto, newData.proto)
|
||||
}
|
||||
oldData is PackagePartProtoData && newData is PackagePartProtoData -> {
|
||||
ProtoCompareGenerated(oldData.nameResolver, newData.nameResolver).difference(oldData.proto, newData.proto)
|
||||
ProtoCompareGenerated(
|
||||
oldNameResolver = oldData.nameResolver,
|
||||
newNameResolver = newData.nameResolver,
|
||||
oldTypeTable = oldData.proto.typeTableOrNull,
|
||||
newTypeTable = newData.proto.typeTableOrNull
|
||||
).difference(oldData.proto, newData.proto)
|
||||
}
|
||||
else -> null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user