Paul Yang 8 лет назад
Родитель
Сommit
dba8928ff5

+ 2 - 2
php/ext/google/protobuf/def.c

@@ -30,8 +30,8 @@
 
 #include "protobuf.h"
 
-const char* const kReservedNames[] = {"Empty"};
-const int kReservedNamesSize = 1;
+const char* const kReservedNames[] = {"Empty", "ECHO", "ARRAY"};
+const int kReservedNamesSize = 3;
 
 // Forward declare.
 static void descriptor_init_c_instance(Descriptor* intern TSRMLS_DC);

+ 1 - 1
php/src/Google/Protobuf/descriptor.php

@@ -236,7 +236,7 @@ function getClassNamePrefix(
         return $prefix;
     }
 
-    $reserved_words = array("Empty");
+    $reserved_words = array("Empty", "ECHO", "ARRAY");
     foreach ($reserved_words as $reserved_word) {
         if ($classname === $reserved_word) {
             if ($file_proto->getPackage() === "google.protobuf") {

+ 1 - 0
php/tests/generated_class_test.php

@@ -876,5 +876,6 @@ class GeneratedClassTest extends TestBase
         $m = new \Foo\TestMessage_Empty();
         $m = new \Foo\PBEmpty();
         $m = new \PrefixEmpty();
+        $m = new \Foo\PBARRAY();
     }
 }

+ 1 - 0
php/tests/memory_leak_test.php

@@ -8,6 +8,7 @@ require_once('generated/NoNamespaceMessage_NestedEnum.php');
 require_once('generated/PrefixEmpty.php');
 require_once('generated/PrefixTestPrefix.php');
 require_once('generated/Bar/TestInclude.php');
+require_once('generated/Foo/PBARRAY.php');
 require_once('generated/Foo/PBEmpty.php');
 require_once('generated/Foo/TestEnum.php');
 require_once('generated/Foo/TestIncludePrefixMessage.php');

+ 4 - 0
php/tests/proto/test.proto

@@ -127,6 +127,10 @@ message Empty {
   int32 a = 1;
 }
 
+message ARRAY {
+  int32 a = 1;
+}
+
 message TestPackedMessage {
   repeated int32    repeated_int32    = 90  [packed = true];
   repeated int64    repeated_int64    = 91  [packed = true];

+ 2 - 2
src/google/protobuf/compiler/php/php_generator.cc

@@ -49,8 +49,8 @@ const std::string kDescriptorMetadataFile =
     "GPBMetadata/Google/Protobuf/Internal/Descriptor.php";
 const std::string kDescriptorDirName = "Google/Protobuf/Internal";
 const std::string kDescriptorPackageName = "Google\\Protobuf\\Internal";
-const char* const kReservedNames[] = {"Empty", "ECHO"};
-const int kReservedNamesSize = 2;
+const char* const kReservedNames[] = {"ARRAY", "Empty", "ECHO"};
+const int kReservedNamesSize = 3;
 
 namespace google {
 namespace protobuf {