diff --git a/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_enum.cc b/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_enum.cc index 5510dff849..5fed21764f 100644 --- a/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_enum.cc +++ b/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_enum.cc @@ -191,7 +191,7 @@ void EnumGenerator::GenerateHeader(io::Printer* printer) { "@property(class, readonly, retain) $classname$ *$name$ " "NS_SWIFT_NAME($name$);\n", "classname", ClassName(descriptor_), "name", - canonical_values_[i]->name()); + SafeName(canonical_values_[i]->name())); } } if (!descriptor_->is_closed()) { @@ -330,11 +330,12 @@ void EnumGenerator::GenerateSource(io::Printer* printer) { for (int i = 0; i < canonical_values_.size(); i++) { if (CanGenerateProperty(canonical_values_[i])) { printer->Print( - "+ ($classname$ *) $name$ {\n" + "+ ($classname$ *) $safe_name$ {\n" " return $classname$_get_$name$();\n" "}\n", "classname", ClassName(descriptor_), "name", - canonical_values_[i]->name()); + canonical_values_[i]->name(), "safe_name", + SafeName(canonical_values_[i]->name())); } } diff --git a/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.cc b/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.cc index 9ff220f49b..49bbf425d7 100644 --- a/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.cc +++ b/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.cc @@ -229,8 +229,8 @@ std::string GetClassPrefix(const FileDescriptor *file, } // namespace -std::string SafeName(const std::string &name) { - std::string result = name; +std::string SafeName(absl::string_view name) { + std::string result = std::string(name); if (kKeywords.count(result) > 0) { result.append("_"); } @@ -700,8 +700,7 @@ bool CanGenerateProperty(const FieldDescriptor *descriptor) { } bool CanGenerateProperty(const EnumValueDescriptor *descriptor) { - return IsGenerateProperties(descriptor->file()) && - kKeywords.find(descriptor->name()) == kKeywords.end(); + return IsGenerateProperties(descriptor->file()); } void ParsePrefixLine(std::string line) { diff --git a/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.h b/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.h index d47c95f32b..3eea1dbc4f 100644 --- a/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.h +++ b/protobuf/compiler/src/google/protobuf/compiler/j2objc/j2objc_helpers.h @@ -44,7 +44,7 @@ namespace protobuf { namespace compiler { namespace j2objc { -std::string SafeName(const std::string &name); +std::string SafeName(absl::string_view name); std::string UnderscoresToCamelCase(absl::string_view input, bool cap_next_letter);