Skip to content

Commit fba39e8

Browse files
committed
Fix PrematureEofInPackedField.BOOL conformance test failure
Fixes cretz/pb-and-k#12. Using the fix from cretz/pb-and-k#16.
1 parent 61b10a2 commit fba39e8

File tree

3 files changed

+16
-16
lines changed

3 files changed

+16
-16
lines changed

conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto2.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1331,7 +1331,7 @@ private fun TestAllTypesProto2.protoSizeImpl(): Int {
13311331
if (packedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(84) + pbandk.Sizer.packedRepeatedSize(packedSfixed64, pbandk.Sizer::sFixed64Size)
13321332
if (packedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(85) + pbandk.Sizer.packedRepeatedSize(packedFloat, pbandk.Sizer::floatSize)
13331333
if (packedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(86) + pbandk.Sizer.packedRepeatedSize(packedDouble, pbandk.Sizer::doubleSize)
1334-
if (packedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(87) * packedBool.size) + packedBool.sumBy(pbandk.Sizer::boolSize)
1334+
if (packedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(87) + pbandk.Sizer.packedRepeatedSize(packedBool, pbandk.Sizer::boolSize)
13351335
if (packedNestedEnum.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(88) * packedNestedEnum.size) + packedNestedEnum.sumBy(pbandk.Sizer::enumSize)
13361336
if (unpackedInt32.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(89) * unpackedInt32.size) + unpackedInt32.sumBy(pbandk.Sizer::int32Size)
13371337
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)
14741474
if (packedSfixed64.isNotEmpty()) protoMarshal.writeTag(674).writePackedRepeated(packedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64)
14751475
if (packedFloat.isNotEmpty()) protoMarshal.writeTag(682).writePackedRepeated(packedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat)
14761476
if (packedDouble.isNotEmpty()) protoMarshal.writeTag(690).writePackedRepeated(packedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble)
1477-
if (packedBool.isNotEmpty()) packedBool.forEach { protoMarshal.writeTag(696).writeBool(it) }
1477+
if (packedBool.isNotEmpty()) protoMarshal.writeTag(698).writePackedRepeated(packedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool)
14781478
if (packedNestedEnum.isNotEmpty()) packedNestedEnum.forEach { protoMarshal.writeTag(704).writeEnum(it) }
14791479
if (unpackedInt32.isNotEmpty()) unpackedInt32.forEach { protoMarshal.writeTag(712).writeInt32(it) }
14801480
if (unpackedInt64.isNotEmpty()) unpackedInt64.forEach { protoMarshal.writeTag(720).writeInt64(it) }
@@ -1693,7 +1693,7 @@ private fun TestAllTypesProto2.Companion.protoUnmarshalImpl(protoUnmarshal: pban
16931693
321, 322 -> repeatedSfixed64 = protoUnmarshal.readRepeated(repeatedSfixed64, protoUnmarshal::readSFixed64, false)
16941694
333, 330 -> repeatedFloat = protoUnmarshal.readRepeated(repeatedFloat, protoUnmarshal::readFloat, false)
16951695
337, 338 -> repeatedDouble = protoUnmarshal.readRepeated(repeatedDouble, protoUnmarshal::readDouble, false)
1696-
344, 346 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, true)
1696+
344, 346 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, false)
16971697
354 -> repeatedString = protoUnmarshal.readRepeated(repeatedString, protoUnmarshal::readString, true)
16981698
362 -> repeatedBytes = protoUnmarshal.readRepeated(repeatedBytes, protoUnmarshal::readBytes, true)
16991699
386 -> repeatedNestedMessage = protoUnmarshal.readRepeatedMessage(repeatedNestedMessage, pbandk.conformance.pb.TestAllTypesProto2.NestedMessage.Companion, true)
@@ -1733,7 +1733,7 @@ private fun TestAllTypesProto2.Companion.protoUnmarshalImpl(protoUnmarshal: pban
17331733
674, 673 -> packedSfixed64 = protoUnmarshal.readRepeated(packedSfixed64, protoUnmarshal::readSFixed64, false)
17341734
682, 685 -> packedFloat = protoUnmarshal.readRepeated(packedFloat, protoUnmarshal::readFloat, false)
17351735
690, 689 -> packedDouble = protoUnmarshal.readRepeated(packedDouble, protoUnmarshal::readDouble, false)
1736-
696, 698 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, true)
1736+
698, 696 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, false)
17371737
704, 706 -> packedNestedEnum = protoUnmarshal.readRepeatedEnum(packedNestedEnum, pbandk.conformance.pb.TestAllTypesProto2.NestedEnum.Companion)
17381738
712, 714 -> unpackedInt32 = protoUnmarshal.readRepeated(unpackedInt32, protoUnmarshal::readInt32, false)
17391739
720, 722 -> unpackedInt64 = protoUnmarshal.readRepeated(unpackedInt64, protoUnmarshal::readInt64, false)
@@ -1747,7 +1747,7 @@ private fun TestAllTypesProto2.Companion.protoUnmarshalImpl(protoUnmarshal: pban
17471747
785, 786 -> unpackedSfixed64 = protoUnmarshal.readRepeated(unpackedSfixed64, protoUnmarshal::readSFixed64, false)
17481748
797, 794 -> unpackedFloat = protoUnmarshal.readRepeated(unpackedFloat, protoUnmarshal::readFloat, false)
17491749
801, 802 -> unpackedDouble = protoUnmarshal.readRepeated(unpackedDouble, protoUnmarshal::readDouble, false)
1750-
808, 810 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, true)
1750+
808, 810 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, false)
17511751
816, 818 -> unpackedNestedEnum = protoUnmarshal.readRepeatedEnum(unpackedNestedEnum, pbandk.conformance.pb.TestAllTypesProto2.NestedEnum.Companion)
17521752
888 -> oneofField = TestAllTypesProto2.OneofField.OneofUint32(protoUnmarshal.readUInt32())
17531753
898 -> oneofField = TestAllTypesProto2.OneofField.OneofNestedMessage(protoUnmarshal.readMessage(pbandk.conformance.pb.TestAllTypesProto2.NestedMessage.Companion))

conformance/conformance-common/src/main/kotlin/pbandk/conformance/pb/test_messages_proto3.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1266,7 +1266,7 @@ private fun TestAllTypesProto3.protoSizeImpl(): Int {
12661266
if (repeatedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(40) + pbandk.Sizer.packedRepeatedSize(repeatedSfixed64, pbandk.Sizer::sFixed64Size)
12671267
if (repeatedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(41) + pbandk.Sizer.packedRepeatedSize(repeatedFloat, pbandk.Sizer::floatSize)
12681268
if (repeatedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(42) + pbandk.Sizer.packedRepeatedSize(repeatedDouble, pbandk.Sizer::doubleSize)
1269-
if (repeatedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(43) * repeatedBool.size) + repeatedBool.sumBy(pbandk.Sizer::boolSize)
1269+
if (repeatedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(43) + pbandk.Sizer.packedRepeatedSize(repeatedBool, pbandk.Sizer::boolSize)
12701270
if (repeatedString.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(44) * repeatedString.size) + repeatedString.sumBy(pbandk.Sizer::stringSize)
12711271
if (repeatedBytes.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(45) * repeatedBytes.size) + repeatedBytes.sumBy(pbandk.Sizer::bytesSize)
12721272
if (repeatedNestedMessage.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(48) * repeatedNestedMessage.size) + repeatedNestedMessage.sumBy(pbandk.Sizer::messageSize)
@@ -1287,7 +1287,7 @@ private fun TestAllTypesProto3.protoSizeImpl(): Int {
12871287
if (packedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(84) + pbandk.Sizer.packedRepeatedSize(packedSfixed64, pbandk.Sizer::sFixed64Size)
12881288
if (packedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(85) + pbandk.Sizer.packedRepeatedSize(packedFloat, pbandk.Sizer::floatSize)
12891289
if (packedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(86) + pbandk.Sizer.packedRepeatedSize(packedDouble, pbandk.Sizer::doubleSize)
1290-
if (packedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(87) * packedBool.size) + packedBool.sumBy(pbandk.Sizer::boolSize)
1290+
if (packedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(87) + pbandk.Sizer.packedRepeatedSize(packedBool, pbandk.Sizer::boolSize)
12911291
if (packedNestedEnum.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(88) * packedNestedEnum.size) + packedNestedEnum.sumBy(pbandk.Sizer::enumSize)
12921292
if (unpackedInt32.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(89) + pbandk.Sizer.packedRepeatedSize(unpackedInt32, pbandk.Sizer::int32Size)
12931293
if (unpackedInt64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(90) + pbandk.Sizer.packedRepeatedSize(unpackedInt64, pbandk.Sizer::int64Size)
@@ -1301,7 +1301,7 @@ private fun TestAllTypesProto3.protoSizeImpl(): Int {
13011301
if (unpackedSfixed64.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(98) + pbandk.Sizer.packedRepeatedSize(unpackedSfixed64, pbandk.Sizer::sFixed64Size)
13021302
if (unpackedFloat.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(99) + pbandk.Sizer.packedRepeatedSize(unpackedFloat, pbandk.Sizer::floatSize)
13031303
if (unpackedDouble.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(100) + pbandk.Sizer.packedRepeatedSize(unpackedDouble, pbandk.Sizer::doubleSize)
1304-
if (unpackedBool.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(101) * unpackedBool.size) + unpackedBool.sumBy(pbandk.Sizer::boolSize)
1304+
if (unpackedBool.isNotEmpty()) protoSize += pbandk.Sizer.tagSize(101) + pbandk.Sizer.packedRepeatedSize(unpackedBool, pbandk.Sizer::boolSize)
13051305
if (unpackedNestedEnum.isNotEmpty()) protoSize += (pbandk.Sizer.tagSize(102) * unpackedNestedEnum.size) + unpackedNestedEnum.sumBy(pbandk.Sizer::enumSize)
13061306
if (mapInt32Int32.isNotEmpty()) protoSize += pbandk.Sizer.mapSize(56, mapInt32Int32, pbandk.conformance.pb.TestAllTypesProto3::MapInt32Int32Entry)
13071307
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)
14221422
if (repeatedSfixed64.isNotEmpty()) protoMarshal.writeTag(322).writePackedRepeated(repeatedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64)
14231423
if (repeatedFloat.isNotEmpty()) protoMarshal.writeTag(330).writePackedRepeated(repeatedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat)
14241424
if (repeatedDouble.isNotEmpty()) protoMarshal.writeTag(338).writePackedRepeated(repeatedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble)
1425-
if (repeatedBool.isNotEmpty()) repeatedBool.forEach { protoMarshal.writeTag(344).writeBool(it) }
1425+
if (repeatedBool.isNotEmpty()) protoMarshal.writeTag(346).writePackedRepeated(repeatedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool)
14261426
if (repeatedString.isNotEmpty()) repeatedString.forEach { protoMarshal.writeTag(354).writeString(it) }
14271427
if (repeatedBytes.isNotEmpty()) repeatedBytes.forEach { protoMarshal.writeTag(362).writeBytes(it) }
14281428
if (repeatedNestedMessage.isNotEmpty()) repeatedNestedMessage.forEach { protoMarshal.writeTag(386).writeMessage(it) }
@@ -1462,7 +1462,7 @@ private fun TestAllTypesProto3.protoMarshalImpl(protoMarshal: pbandk.Marshaller)
14621462
if (packedSfixed64.isNotEmpty()) protoMarshal.writeTag(674).writePackedRepeated(packedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64)
14631463
if (packedFloat.isNotEmpty()) protoMarshal.writeTag(682).writePackedRepeated(packedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat)
14641464
if (packedDouble.isNotEmpty()) protoMarshal.writeTag(690).writePackedRepeated(packedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble)
1465-
if (packedBool.isNotEmpty()) packedBool.forEach { protoMarshal.writeTag(696).writeBool(it) }
1465+
if (packedBool.isNotEmpty()) protoMarshal.writeTag(698).writePackedRepeated(packedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool)
14661466
if (packedNestedEnum.isNotEmpty()) packedNestedEnum.forEach { protoMarshal.writeTag(704).writeEnum(it) }
14671467
if (unpackedInt32.isNotEmpty()) protoMarshal.writeTag(714).writePackedRepeated(unpackedInt32, pbandk.Sizer::int32Size, protoMarshal::writeInt32)
14681468
if (unpackedInt64.isNotEmpty()) protoMarshal.writeTag(722).writePackedRepeated(unpackedInt64, pbandk.Sizer::int64Size, protoMarshal::writeInt64)
@@ -1476,7 +1476,7 @@ private fun TestAllTypesProto3.protoMarshalImpl(protoMarshal: pbandk.Marshaller)
14761476
if (unpackedSfixed64.isNotEmpty()) protoMarshal.writeTag(786).writePackedRepeated(unpackedSfixed64, pbandk.Sizer::sFixed64Size, protoMarshal::writeSFixed64)
14771477
if (unpackedFloat.isNotEmpty()) protoMarshal.writeTag(794).writePackedRepeated(unpackedFloat, pbandk.Sizer::floatSize, protoMarshal::writeFloat)
14781478
if (unpackedDouble.isNotEmpty()) protoMarshal.writeTag(802).writePackedRepeated(unpackedDouble, pbandk.Sizer::doubleSize, protoMarshal::writeDouble)
1479-
if (unpackedBool.isNotEmpty()) unpackedBool.forEach { protoMarshal.writeTag(808).writeBool(it) }
1479+
if (unpackedBool.isNotEmpty()) protoMarshal.writeTag(810).writePackedRepeated(unpackedBool, pbandk.Sizer::boolSize, protoMarshal::writeBool)
14801480
if (unpackedNestedEnum.isNotEmpty()) unpackedNestedEnum.forEach { protoMarshal.writeTag(816).writeEnum(it) }
14811481
if (oneofField is TestAllTypesProto3.OneofField.OneofUint32) protoMarshal.writeTag(888).writeUInt32(oneofField.value)
14821482
if (oneofField is TestAllTypesProto3.OneofField.OneofNestedMessage) protoMarshal.writeTag(898).writeMessage(oneofField.value)
@@ -1753,7 +1753,7 @@ private fun TestAllTypesProto3.Companion.protoUnmarshalImpl(protoUnmarshal: pban
17531753
322, 321 -> repeatedSfixed64 = protoUnmarshal.readRepeated(repeatedSfixed64, protoUnmarshal::readSFixed64, false)
17541754
330, 333 -> repeatedFloat = protoUnmarshal.readRepeated(repeatedFloat, protoUnmarshal::readFloat, false)
17551755
338, 337 -> repeatedDouble = protoUnmarshal.readRepeated(repeatedDouble, protoUnmarshal::readDouble, false)
1756-
344, 346 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, true)
1756+
346, 344 -> repeatedBool = protoUnmarshal.readRepeated(repeatedBool, protoUnmarshal::readBool, false)
17571757
354 -> repeatedString = protoUnmarshal.readRepeated(repeatedString, protoUnmarshal::readString, true)
17581758
362 -> repeatedBytes = protoUnmarshal.readRepeated(repeatedBytes, protoUnmarshal::readBytes, true)
17591759
386 -> repeatedNestedMessage = protoUnmarshal.readRepeatedMessage(repeatedNestedMessage, pbandk.conformance.pb.TestAllTypesProto3.NestedMessage.Companion, true)
@@ -1793,7 +1793,7 @@ private fun TestAllTypesProto3.Companion.protoUnmarshalImpl(protoUnmarshal: pban
17931793
674, 673 -> packedSfixed64 = protoUnmarshal.readRepeated(packedSfixed64, protoUnmarshal::readSFixed64, false)
17941794
682, 685 -> packedFloat = protoUnmarshal.readRepeated(packedFloat, protoUnmarshal::readFloat, false)
17951795
690, 689 -> packedDouble = protoUnmarshal.readRepeated(packedDouble, protoUnmarshal::readDouble, false)
1796-
696, 698 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, true)
1796+
698, 696 -> packedBool = protoUnmarshal.readRepeated(packedBool, protoUnmarshal::readBool, false)
17971797
704, 706 -> packedNestedEnum = protoUnmarshal.readRepeatedEnum(packedNestedEnum, pbandk.conformance.pb.TestAllTypesProto3.NestedEnum.Companion)
17981798
714, 712 -> unpackedInt32 = protoUnmarshal.readRepeated(unpackedInt32, protoUnmarshal::readInt32, false)
17991799
722, 720 -> unpackedInt64 = protoUnmarshal.readRepeated(unpackedInt64, protoUnmarshal::readInt64, false)
@@ -1807,7 +1807,7 @@ private fun TestAllTypesProto3.Companion.protoUnmarshalImpl(protoUnmarshal: pban
18071807
786, 785 -> unpackedSfixed64 = protoUnmarshal.readRepeated(unpackedSfixed64, protoUnmarshal::readSFixed64, false)
18081808
794, 797 -> unpackedFloat = protoUnmarshal.readRepeated(unpackedFloat, protoUnmarshal::readFloat, false)
18091809
802, 801 -> unpackedDouble = protoUnmarshal.readRepeated(unpackedDouble, protoUnmarshal::readDouble, false)
1810-
808, 810 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, true)
1810+
810, 808 -> unpackedBool = protoUnmarshal.readRepeated(unpackedBool, protoUnmarshal::readBool, false)
18111811
816, 818 -> unpackedNestedEnum = protoUnmarshal.readRepeatedEnum(unpackedNestedEnum, pbandk.conformance.pb.TestAllTypesProto3.NestedEnum.Companion)
18121812
888 -> oneofField = TestAllTypesProto3.OneofField.OneofUint32(protoUnmarshal.readUInt32())
18131813
898 -> oneofField = TestAllTypesProto3.OneofField.OneofNestedMessage(protoUnmarshal.readMessage(pbandk.conformance.pb.TestAllTypesProto3.NestedMessage.Companion))

protoc-gen-kotlin/protoc-gen-kotlin-common/src/main/kotlin/pbandk/gen/File.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ data class File(
8080
SFIXED32, SFIXED64, SINT32, SINT64, STRING, UINT32, UINT64;
8181

8282
val neverPacked get() =
83-
this == File.Field.Type.BOOL || this == File.Field.Type.BYTES || this == File.Field.Type.ENUM ||
83+
this == File.Field.Type.BYTES || this == File.Field.Type.ENUM ||
8484
this == File.Field.Type.MESSAGE || this == File.Field.Type.STRING
8585
}
8686
}
87-
}
87+
}

0 commit comments

Comments
 (0)