Fixed PHP to support field numbers >=2**28. (#8235)
diff --git a/php/tests/EncodeDecodeTest.php b/php/tests/EncodeDecodeTest.php
index 6368a18..d471a5a 100644
--- a/php/tests/EncodeDecodeTest.php
+++ b/php/tests/EncodeDecodeTest.php
@@ -14,6 +14,7 @@
use Foo\TestBytesValue;
use Foo\TestAny;
use Foo\TestEnum;
+use Foo\TestLargeFieldNumber;
use Foo\TestMessage;
use Foo\TestMessage\Sub;
use Foo\TestPackedMessage;
@@ -529,6 +530,15 @@
$this->assertSame("", $data);
}
+ public function testLargeFieldNumber()
+ {
+ $m = new TestLargeFieldNumber(['large_field_number' => 5]);
+ $data = $m->serializeToString();
+ $m2 = new TestLargeFieldNumber();
+ $m2->mergeFromString($data);
+ $this->assertSame(5, $m2->getLargeFieldNumber());
+ }
+
public function testDecodeInvalidInt32()
{
$this->expectException(Exception::class);
diff --git a/php/tests/proto/test.proto b/php/tests/proto/test.proto
index 368b19e..8835729 100644
--- a/php/tests/proto/test.proto
+++ b/php/tests/proto/test.proto
@@ -220,6 +220,10 @@
string tag14 = 160;
}
+message TestLargeFieldNumber {
+ int32 large_field_number = 536870911;
+}
+
message TestReverseFieldOrder {
repeated int32 a = 2;
string b = 1;