Support multiple version requirements on single element
This commit is contained in:
@@ -220,7 +220,7 @@ message Class {
|
||||
optional TypeTable type_table = 30;
|
||||
|
||||
// Index into the VersionRequirementTable
|
||||
optional int32 version_requirement = 31;
|
||||
repeated int32 version_requirement = 31;
|
||||
|
||||
optional VersionRequirementTable version_requirement_table = 32;
|
||||
|
||||
@@ -258,7 +258,7 @@ message Constructor {
|
||||
repeated ValueParameter value_parameter = 2;
|
||||
|
||||
// Index into the VersionRequirementTable
|
||||
optional int32 version_requirement = 31;
|
||||
repeated int32 version_requirement = 31;
|
||||
|
||||
extensions 100 to 18999;
|
||||
}
|
||||
@@ -295,7 +295,7 @@ message Function {
|
||||
optional TypeTable type_table = 30;
|
||||
|
||||
// Index into the VersionRequirementTable
|
||||
optional int32 version_requirement = 31;
|
||||
repeated int32 version_requirement = 31;
|
||||
|
||||
optional Contract contract = 32;
|
||||
|
||||
@@ -349,7 +349,7 @@ message Property {
|
||||
optional int32 setter_flags = 8;
|
||||
|
||||
// Index into the VersionRequirementTable
|
||||
optional int32 version_requirement = 31;
|
||||
repeated int32 version_requirement = 31;
|
||||
|
||||
extensions 100 to 18999;
|
||||
}
|
||||
@@ -394,7 +394,7 @@ message TypeAlias {
|
||||
repeated Annotation annotation = 8;
|
||||
|
||||
// Index into the VersionRequirementTable
|
||||
optional int32 version_requirement = 31;
|
||||
repeated int32 version_requirement = 31;
|
||||
|
||||
extensions 100 to 199;
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
+11
-7
@@ -81,16 +81,20 @@ class VersionRequirement(
|
||||
"since $version $level" + (if (errorCode != null) " error $errorCode" else "") + (if (message != null) ": $message" else "")
|
||||
|
||||
companion object {
|
||||
fun create(proto: MessageLite, nameResolver: NameResolver, table: VersionRequirementTable): VersionRequirement? {
|
||||
val id = when (proto) {
|
||||
is ProtoBuf.Class -> if (proto.hasVersionRequirement()) proto.versionRequirement else return null
|
||||
is ProtoBuf.Constructor -> if (proto.hasVersionRequirement()) proto.versionRequirement else return null
|
||||
is ProtoBuf.Function -> if (proto.hasVersionRequirement()) proto.versionRequirement else return null
|
||||
is ProtoBuf.Property -> if (proto.hasVersionRequirement()) proto.versionRequirement else return null
|
||||
is ProtoBuf.TypeAlias -> if (proto.hasVersionRequirement()) proto.versionRequirement else return null
|
||||
fun create(proto: MessageLite, nameResolver: NameResolver, table: VersionRequirementTable): List<VersionRequirement> {
|
||||
val ids = when (proto) {
|
||||
is ProtoBuf.Class -> proto.versionRequirementList
|
||||
is ProtoBuf.Constructor -> proto.versionRequirementList
|
||||
is ProtoBuf.Function -> proto.versionRequirementList
|
||||
is ProtoBuf.Property -> proto.versionRequirementList
|
||||
is ProtoBuf.TypeAlias -> proto.versionRequirementList
|
||||
else -> throw IllegalStateException("Unexpected declaration: ${proto::class.java}")
|
||||
}
|
||||
|
||||
return ids.mapNotNull { id -> create(id, nameResolver, table) }
|
||||
}
|
||||
|
||||
fun create(id: Int, nameResolver: NameResolver, table: VersionRequirementTable): VersionRequirement? {
|
||||
val info = table[id] ?: return null
|
||||
|
||||
val version = Version.decode(
|
||||
|
||||
Reference in New Issue
Block a user