From 10cc5d84af72824237d8e7be0d15d39dffd84068 Mon Sep 17 00:00:00 2001 From: Gary Peck Date: Sun, 5 Jan 2020 15:41:12 -0800 Subject: [PATCH] Fix PrematureEofInPackedField.BOOL conformance test failure Fixes https://github.com/cretz/pb-and-k/issues/12. Using the fix from https://github.com/cretz/pb-and-k/pull/16. --- .../conformance/pb/test_messages_proto2.kt | 10 +++++----- .../conformance/pb/test_messages_proto3.kt | 18 +++++++++--------- .../src/main/kotlin/pbandk/gen/File.kt | 4 ++-- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto2.kt b/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto2.kt index 3d960091..bcd93730 100644 --- a/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto2.kt +++ b/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto2.kt @@ -1331,7 +1331,7 @@ private fun TestAllTypesProto2.protoSizeImpl(): Int { if (packedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(84) + pbandk.Sizer.packedRepeatedSize(packedSfixed64, pbandk.Sizer::sFixed64Size) if (packedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(85) + pbandk.Sizer.packedRepeatedSize(packedFloat, pbandk.Sizer::floatSize) if (packedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(86) + pbandk.Sizer.packedRepeatedSize(packedDouble, pbandk.Sizer::doubleSize) - if (packedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(87) * packedBool.size) + packedBool.sumBy(pbandk.Sizer::boolSize) + if (packedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(87) + pbandk.Sizer.packedRepeatedSize(packedBool, pbandk.Sizer::boolSize) if (packedNestedEnum.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(88) * packedNestedEnum.size) + packedNestedEnum.sumBy(pbandk.Sizer::enumSize) if (unpackedInt32.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(89) * unpackedInt32.size) + unpackedInt32.sumBy(pbandk.Sizer::int32Size) if (unpackedInt64.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(90) * unpackedInt64.size) + unpackedInt64.sumBy(pbandk.Sizer::int64Size) @@ -1474,7 +1474,7 @@ private fun TestAllTypesProto2.protoMarshalImpl(protoMarshal: pbandk.Marshaller) if (packedSfixed64.isNotEmpty()) protoMarshal.writeTag(674).writePackedRepeated(packedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64) if (packedFloat.isNotEmpty()) protoMarshal.writeTag(682).writePackedRepeated(packedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat) if (packedDouble.isNotEmpty()) protoMarshal.writeTag(690).writePackedRepeated(packedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble) - if (packedBool.isNotEmpty()) packedBool.forEach { protoMarshal.writeTag(696).writeBool(it) } + if (packedBool.isNotEmpty()) protoMarshal.writeTag(698).writePackedRepeated(packedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool) if (packedNestedEnum.isNotEmpty()) packedNestedEnum.forEach { protoMarshal.writeTag(704).writeEnum(it) } if (unpackedInt32.isNotEmpty()) unpackedInt32.forEach { protoMarshal.writeTag(712).writeInt32(it) } if (unpackedInt64.isNotEmpty()) unpackedInt64.forEach { protoMarshal.writeTag(720).writeInt64(it) } @@ -1693,7 +1693,7 @@ private fun TestAllTypesProto2.Companion.protoUnmarshalImpl(protoUnmarshal: pban 321, 322 -> repeatedSfixed64 = protoUnmarshal.readRepeated(repeatedSfixed64, protoUnmarshal::readSFixed64, false) 333, 330 -> repeatedFloat = protoUnmarshal.readRepeated(repeatedFloat, protoUnmarshal::readFloat, false) 337, 338 -> repeatedDouble = protoUnmarshal.readRepeated(repeatedDouble, protoUnmarshal::readDouble, false) - 344, 346 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, true) + 344, 346 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, false) 354 -> repeatedString = protoUnmarshal.readRepeated(repeatedString, protoUnmarshal::readString, true) 362 -> repeatedBytes = protoUnmarshal.readRepeated(repeatedBytes, protoUnmarshal::readBytes, true) 386 -> repeatedNestedMessage = protoUnmarshal.readRepeatedMessage(repeatedNestedMessage, pbandk.conformance.pb.TestAllTypesProto2.NestedMessage.Companion, true) @@ -1733,7 +1733,7 @@ private fun TestAllTypesProto2.Companion.protoUnmarshalImpl(protoUnmarshal: pban 674, 673 -> packedSfixed64 = protoUnmarshal.readRepeated(packedSfixed64, protoUnmarshal::readSFixed64, false) 682, 685 -> packedFloat = protoUnmarshal.readRepeated(packedFloat, protoUnmarshal::readFloat, false) 690, 689 -> packedDouble = protoUnmarshal.readRepeated(packedDouble, protoUnmarshal::readDouble, false) - 696, 698 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, true) + 698, 696 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, false) 704, 706 -> packedNestedEnum = protoUnmarshal.readRepeatedEnum(packedNestedEnum, pbandk.conformance.pb.TestAllTypesProto2.NestedEnum.Companion) 712, 714 -> unpackedInt32 = protoUnmarshal.readRepeated(unpackedInt32, protoUnmarshal::readInt32, false) 720, 722 -> unpackedInt64 = protoUnmarshal.readRepeated(unpackedInt64, protoUnmarshal::readInt64, false) @@ -1747,7 +1747,7 @@ private fun TestAllTypesProto2.Companion.protoUnmarshalImpl(protoUnmarshal: pban 785, 786 -> unpackedSfixed64 = protoUnmarshal.readRepeated(unpackedSfixed64, protoUnmarshal::readSFixed64, false) 797, 794 -> unpackedFloat = protoUnmarshal.readRepeated(unpackedFloat, protoUnmarshal::readFloat, false) 801, 802 -> unpackedDouble = protoUnmarshal.readRepeated(unpackedDouble, protoUnmarshal::readDouble, false) - 808, 810 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, true) + 808, 810 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, false) 816, 818 -> unpackedNestedEnum = protoUnmarshal.readRepeatedEnum(unpackedNestedEnum, pbandk.conformance.pb.TestAllTypesProto2.NestedEnum.Companion) 888 -> oneofField = TestAllTypesProto2.OneofField.OneofUint32(protoUnmarshal.readUInt32()) 898 -> oneofField = TestAllTypesProto2.OneofField.OneofNestedMessage(protoUnmarshal.readMessage(pbandk.conformance.pb.TestAllTypesProto2.NestedMessage.Companion)) diff --git a/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto3.kt b/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto3.kt index 15027b4d..3faf6184 100644 --- a/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto3.kt +++ b/conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto3.kt @@ -1266,7 +1266,7 @@ private fun TestAllTypesProto3.protoSizeImpl(): Int { if (repeatedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(40) + pbandk.Sizer.packedRepeatedSize(repeatedSfixed64, pbandk.Sizer::sFixed64Size) if (repeatedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(41) + pbandk.Sizer.packedRepeatedSize(repeatedFloat, pbandk.Sizer::floatSize) if (repeatedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(42) + pbandk.Sizer.packedRepeatedSize(repeatedDouble, pbandk.Sizer::doubleSize) - if (repeatedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(43) * repeatedBool.size) + repeatedBool.sumBy(pbandk.Sizer::boolSize) + if (repeatedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(43) + pbandk.Sizer.packedRepeatedSize(repeatedBool, pbandk.Sizer::boolSize) if (repeatedString.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(44) * repeatedString.size) + repeatedString.sumBy(pbandk.Sizer::stringSize) if (repeatedBytes.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(45) * repeatedBytes.size) + repeatedBytes.sumBy(pbandk.Sizer::bytesSize) if (repeatedNestedMessage.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(48) * repeatedNestedMessage.size) + repeatedNestedMessage.sumBy(pbandk.Sizer::messageSize) @@ -1287,7 +1287,7 @@ private fun TestAllTypesProto3.protoSizeImpl(): Int { if (packedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(84) + pbandk.Sizer.packedRepeatedSize(packedSfixed64, pbandk.Sizer::sFixed64Size) if (packedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(85) + pbandk.Sizer.packedRepeatedSize(packedFloat, pbandk.Sizer::floatSize) if (packedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(86) + pbandk.Sizer.packedRepeatedSize(packedDouble, pbandk.Sizer::doubleSize) - if (packedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(87) * packedBool.size) + packedBool.sumBy(pbandk.Sizer::boolSize) + if (packedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(87) + pbandk.Sizer.packedRepeatedSize(packedBool, pbandk.Sizer::boolSize) if (packedNestedEnum.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(88) * packedNestedEnum.size) + packedNestedEnum.sumBy(pbandk.Sizer::enumSize) if (unpackedInt32.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(89) + pbandk.Sizer.packedRepeatedSize(unpackedInt32, pbandk.Sizer::int32Size) if (unpackedInt64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(90) + pbandk.Sizer.packedRepeatedSize(unpackedInt64, pbandk.Sizer::int64Size) @@ -1301,7 +1301,7 @@ private fun TestAllTypesProto3.protoSizeImpl(): Int { if (unpackedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(98) + pbandk.Sizer.packedRepeatedSize(unpackedSfixed64, pbandk.Sizer::sFixed64Size) if (unpackedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(99) + pbandk.Sizer.packedRepeatedSize(unpackedFloat, pbandk.Sizer::floatSize) if (unpackedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(100) + pbandk.Sizer.packedRepeatedSize(unpackedDouble, pbandk.Sizer::doubleSize) - if (unpackedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(101) * unpackedBool.size) + unpackedBool.sumBy(pbandk.Sizer::boolSize) + if (unpackedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(101) + pbandk.Sizer.packedRepeatedSize(unpackedBool, pbandk.Sizer::boolSize) if (unpackedNestedEnum.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(102) * unpackedNestedEnum.size) + unpackedNestedEnum.sumBy(pbandk.Sizer::enumSize) if (mapInt32Int32.isNotEmpty()) protoSize += pbandk.Sizer.mapSize(56, mapInt32Int32, pbandk.conformance.pb.TestAllTypesProto3::MapInt32Int32Entry) if (mapInt64Int64.isNotEmpty()) protoSize += pbandk.Sizer.mapSize(57, mapInt64Int64, pbandk.conformance.pb.TestAllTypesProto3::MapInt64Int64Entry) @@ -1422,7 +1422,7 @@ private fun TestAllTypesProto3.protoMarshalImpl(protoMarshal: pbandk.Marshaller) if (repeatedSfixed64.isNotEmpty()) protoMarshal.writeTag(322).writePackedRepeated(repeatedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64) if (repeatedFloat.isNotEmpty()) protoMarshal.writeTag(330).writePackedRepeated(repeatedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat) if (repeatedDouble.isNotEmpty()) protoMarshal.writeTag(338).writePackedRepeated(repeatedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble) - if (repeatedBool.isNotEmpty()) repeatedBool.forEach { protoMarshal.writeTag(344).writeBool(it) } + if (repeatedBool.isNotEmpty()) protoMarshal.writeTag(346).writePackedRepeated(repeatedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool) if (repeatedString.isNotEmpty()) repeatedString.forEach { protoMarshal.writeTag(354).writeString(it) } if (repeatedBytes.isNotEmpty()) repeatedBytes.forEach { protoMarshal.writeTag(362).writeBytes(it) } if (repeatedNestedMessage.isNotEmpty()) repeatedNestedMessage.forEach { protoMarshal.writeTag(386).writeMessage(it) } @@ -1462,7 +1462,7 @@ private fun TestAllTypesProto3.protoMarshalImpl(protoMarshal: pbandk.Marshaller) if (packedSfixed64.isNotEmpty()) protoMarshal.writeTag(674).writePackedRepeated(packedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64) if (packedFloat.isNotEmpty()) protoMarshal.writeTag(682).writePackedRepeated(packedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat) if (packedDouble.isNotEmpty()) protoMarshal.writeTag(690).writePackedRepeated(packedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble) - if (packedBool.isNotEmpty()) packedBool.forEach { protoMarshal.writeTag(696).writeBool(it) } + if (packedBool.isNotEmpty()) protoMarshal.writeTag(698).writePackedRepeated(packedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool) if (packedNestedEnum.isNotEmpty()) packedNestedEnum.forEach { protoMarshal.writeTag(704).writeEnum(it) } if (unpackedInt32.isNotEmpty()) protoMarshal.writeTag(714).writePackedRepeated(unpackedInt32, pbandk.Sizer::int32Size, protoMarshal::writeInt32) if (unpackedInt64.isNotEmpty()) protoMarshal.writeTag(722).writePackedRepeated(unpackedInt64, pbandk.Sizer::int64Size, protoMarshal::writeInt64) @@ -1476,7 +1476,7 @@ private fun TestAllTypesProto3.protoMarshalImpl(protoMarshal: pbandk.Marshaller) if (unpackedSfixed64.isNotEmpty()) protoMarshal.writeTag(786).writePackedRepeated(unpackedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64) if (unpackedFloat.isNotEmpty()) protoMarshal.writeTag(794).writePackedRepeated(unpackedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat) if (unpackedDouble.isNotEmpty()) protoMarshal.writeTag(802).writePackedRepeated(unpackedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble) - if (unpackedBool.isNotEmpty()) unpackedBool.forEach { protoMarshal.writeTag(808).writeBool(it) } + if (unpackedBool.isNotEmpty()) protoMarshal.writeTag(810).writePackedRepeated(unpackedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool) if (unpackedNestedEnum.isNotEmpty()) unpackedNestedEnum.forEach { protoMarshal.writeTag(816).writeEnum(it) } if (oneofField is TestAllTypesProto3.OneofField.OneofUint32) protoMarshal.writeTag(888).writeUInt32(oneofField.value) if (oneofField is TestAllTypesProto3.OneofField.OneofNestedMessage) protoMarshal.writeTag(898).writeMessage(oneofField.value) @@ -1753,7 +1753,7 @@ private fun TestAllTypesProto3.Companion.protoUnmarshalImpl(protoUnmarshal: pban 322, 321 -> repeatedSfixed64 = protoUnmarshal.readRepeated(repeatedSfixed64, protoUnmarshal::readSFixed64, false) 330, 333 -> repeatedFloat = protoUnmarshal.readRepeated(repeatedFloat, protoUnmarshal::readFloat, false) 338, 337 -> repeatedDouble = protoUnmarshal.readRepeated(repeatedDouble, protoUnmarshal::readDouble, false) - 344, 346 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, true) + 346, 344 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, false) 354 -> repeatedString = protoUnmarshal.readRepeated(repeatedString, protoUnmarshal::readString, true) 362 -> repeatedBytes = protoUnmarshal.readRepeated(repeatedBytes, protoUnmarshal::readBytes, true) 386 -> repeatedNestedMessage = protoUnmarshal.readRepeatedMessage(repeatedNestedMessage, pbandk.conformance.pb.TestAllTypesProto3.NestedMessage.Companion, true) @@ -1793,7 +1793,7 @@ private fun TestAllTypesProto3.Companion.protoUnmarshalImpl(protoUnmarshal: pban 674, 673 -> packedSfixed64 = protoUnmarshal.readRepeated(packedSfixed64, protoUnmarshal::readSFixed64, false) 682, 685 -> packedFloat = protoUnmarshal.readRepeated(packedFloat, protoUnmarshal::readFloat, false) 690, 689 -> packedDouble = protoUnmarshal.readRepeated(packedDouble, protoUnmarshal::readDouble, false) - 696, 698 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, true) + 698, 696 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, false) 704, 706 -> packedNestedEnum = protoUnmarshal.readRepeatedEnum(packedNestedEnum, pbandk.conformance.pb.TestAllTypesProto3.NestedEnum.Companion) 714, 712 -> unpackedInt32 = protoUnmarshal.readRepeated(unpackedInt32, protoUnmarshal::readInt32, false) 722, 720 -> unpackedInt64 = protoUnmarshal.readRepeated(unpackedInt64, protoUnmarshal::readInt64, false) @@ -1807,7 +1807,7 @@ private fun TestAllTypesProto3.Companion.protoUnmarshalImpl(protoUnmarshal: pban 786, 785 -> unpackedSfixed64 = protoUnmarshal.readRepeated(unpackedSfixed64, protoUnmarshal::readSFixed64, false) 794, 797 -> unpackedFloat = protoUnmarshal.readRepeated(unpackedFloat, protoUnmarshal::readFloat, false) 802, 801 -> unpackedDouble = protoUnmarshal.readRepeated(unpackedDouble, protoUnmarshal::readDouble, false) - 808, 810 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, true) + 810, 808 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, false) 816, 818 -> unpackedNestedEnum = protoUnmarshal.readRepeatedEnum(unpackedNestedEnum, pbandk.conformance.pb.TestAllTypesProto3.NestedEnum.Companion) 888 -> oneofField = TestAllTypesProto3.OneofField.OneofUint32(protoUnmarshal.readUInt32()) 898 -> oneofField = TestAllTypesProto3.OneofField.OneofNestedMessage(protoUnmarshal.readMessage(pbandk.conformance.pb.TestAllTypesProto3.NestedMessage.Companion)) diff --git a/protoc-gen-kotlin/protoc-gen-kotlin-common/src/main/kotlin/pbandk/gen/File.kt b/protoc-gen-kotlin/protoc-gen-kotlin-common/src/main/kotlin/pbandk/gen/File.kt index 83fcf590..f23427c1 100644 --- a/protoc-gen-kotlin/protoc-gen-kotlin-common/src/main/kotlin/pbandk/gen/File.kt +++ b/protoc-gen-kotlin/protoc-gen-kotlin-common/src/main/kotlin/pbandk/gen/File.kt @@ -80,8 +80,8 @@ data class File( SFIXED32, SFIXED64, SINT32, SINT64, STRING, UINT32, UINT64; val neverPacked get() = - this == File.Field.Type.BOOL || this == File.Field.Type.BYTES || this == File.Field.Type.ENUM || + this == File.Field.Type.BYTES || this == File.Field.Type.ENUM || this == File.Field.Type.MESSAGE || this == File.Field.Type.STRING } } -} \ No newline at end of file +}