Commit a6189acd authored by Paul Yang's avatar Paul Yang Committed by GitHub

Add prefix to enum value with reserved name. (#3020)

parent 3c0855e9
...@@ -119,6 +119,7 @@ enum TestEnum { ...@@ -119,6 +119,7 @@ enum TestEnum {
ZERO = 0; ZERO = 0;
ONE = 1; ONE = 1;
TWO = 2; TWO = 2;
ECHO = 3; // Test reserved name.
} }
// Test prefix for reserved words. // Test prefix for reserved words.
......
...@@ -49,8 +49,8 @@ const std::string kDescriptorMetadataFile = ...@@ -49,8 +49,8 @@ const std::string kDescriptorMetadataFile =
"GPBMetadata/Google/Protobuf/Internal/Descriptor.php"; "GPBMetadata/Google/Protobuf/Internal/Descriptor.php";
const std::string kDescriptorDirName = "Google/Protobuf/Internal"; const std::string kDescriptorDirName = "Google/Protobuf/Internal";
const std::string kDescriptorPackageName = "Google\\Protobuf\\Internal"; const std::string kDescriptorPackageName = "Google\\Protobuf\\Internal";
const char* const kReservedNames[] = {"Empty"}; const char* const kReservedNames[] = {"Empty", "ECHO"};
const int kReservedNamesSize = 1; const int kReservedNamesSize = 2;
namespace google { namespace google {
namespace protobuf { namespace protobuf {
...@@ -559,7 +559,7 @@ void GenerateEnumToPool(const EnumDescriptor* en, io::Printer* printer) { ...@@ -559,7 +559,7 @@ void GenerateEnumToPool(const EnumDescriptor* en, io::Printer* printer) {
const EnumValueDescriptor* value = en->value(i); const EnumValueDescriptor* value = en->value(i);
printer->Print( printer->Print(
"->value(\"^name^\", ^number^)\n", "->value(\"^name^\", ^number^)\n",
"name", value->name(), "name", ClassNamePrefix(value->name(), en) + value->name(),
"number", IntToString(value->number())); "number", IntToString(value->number()));
} }
printer->Print("->finalizeToPool();\n\n"); printer->Print("->finalizeToPool();\n\n");
...@@ -845,7 +845,7 @@ void GenerateEnumFile(const FileDescriptor* file, const EnumDescriptor* en, ...@@ -845,7 +845,7 @@ void GenerateEnumFile(const FileDescriptor* file, const EnumDescriptor* en,
const EnumValueDescriptor* value = en->value(i); const EnumValueDescriptor* value = en->value(i);
GenerateEnumValueDocComment(&printer, value); GenerateEnumValueDocComment(&printer, value);
printer.Print("const ^name^ = ^number^;\n", printer.Print("const ^name^ = ^number^;\n",
"name", value->name(), "name", ClassNamePrefix(value->name(), en) + value->name(),
"number", IntToString(value->number())); "number", IntToString(value->number()));
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment