From a6189acd18b00611c1dc7042299ad75486f08a1a Mon Sep 17 00:00:00 2001 From: Paul Yang Date: Wed, 26 Apr 2017 16:32:21 -0700 Subject: [PATCH] Add prefix to enum value with reserved name. (#3020) --- php/tests/proto/test.proto | 1 + src/google/protobuf/compiler/php/php_generator.cc | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/php/tests/proto/test.proto b/php/tests/proto/test.proto index f0d009c8f198..3922925451de 100644 --- a/php/tests/proto/test.proto +++ b/php/tests/proto/test.proto @@ -119,6 +119,7 @@ enum TestEnum { ZERO = 0; ONE = 1; TWO = 2; + ECHO = 3; // Test reserved name. } // Test prefix for reserved words. diff --git a/src/google/protobuf/compiler/php/php_generator.cc b/src/google/protobuf/compiler/php/php_generator.cc index 4d475b1f5488..ea850c0f45ea 100644 --- a/src/google/protobuf/compiler/php/php_generator.cc +++ b/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"}; -const int kReservedNamesSize = 1; +const char* const kReservedNames[] = {"Empty", "ECHO"}; +const int kReservedNamesSize = 2; namespace google { namespace protobuf { @@ -559,7 +559,7 @@ void GenerateEnumToPool(const EnumDescriptor* en, io::Printer* printer) { const EnumValueDescriptor* value = en->value(i); printer->Print( "->value(\"^name^\", ^number^)\n", - "name", value->name(), + "name", ClassNamePrefix(value->name(), en) + value->name(), "number", IntToString(value->number())); } printer->Print("->finalizeToPool();\n\n"); @@ -845,7 +845,7 @@ void GenerateEnumFile(const FileDescriptor* file, const EnumDescriptor* en, const EnumValueDescriptor* value = en->value(i); GenerateEnumValueDocComment(&printer, value); printer.Print("const ^name^ = ^number^;\n", - "name", value->name(), + "name", ClassNamePrefix(value->name(), en) + value->name(), "number", IntToString(value->number())); }