From 5233b80fb79ded5f158c0604d90c2d54400d5570 Mon Sep 17 00:00:00 2001 From: Thomas Van Lenten Date: Tue, 3 Sep 2024 06:43:23 -0700 Subject: [PATCH] [ObjC] Better support class renaming for extensions. The symbol renaming support has assumed folks would define a custom version of the macro, but if a developer does renaming just by #defining the class, the extension singleton names required manual handing, by changing to just wrap the class in the macro and using the compiler string concat support it becomes easier as just the class name remapping can do the work for extensions. PiperOrigin-RevId: 670536928 --- src/google/protobuf/compiler/objectivec/extension.cc | 10 +++++----- src/google/protobuf/compiler/objectivec/extension.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/google/protobuf/compiler/objectivec/extension.cc b/src/google/protobuf/compiler/objectivec/extension.cc index b733518e9a..cbd4e2d52f 100644 --- a/src/google/protobuf/compiler/objectivec/extension.cc +++ b/src/google/protobuf/compiler/objectivec/extension.cc @@ -31,9 +31,8 @@ ExtensionGenerator::ExtensionGenerator( absl::string_view root_or_message_class_name, const FieldDescriptor* descriptor, const GenerationOptions& generation_options) - : method_name_(ExtensionMethodName(descriptor)), - full_method_name_( - absl::StrCat(root_or_message_class_name, "_", method_name_)), + : root_or_message_class_name_(root_or_message_class_name), + method_name_(ExtensionMethodName(descriptor)), descriptor_(descriptor), generation_options_(generation_options) { ABSL_CHECK(!descriptor->is_map()) @@ -90,16 +89,17 @@ void ExtensionGenerator::GenerateStaticVariablesInitialization( {"extended_type", ObjCClass(containing_type)}, {"extension_type", absl::StrCat("GPBDataType", GetCapitalizedType(descriptor_))}, + {"method_name", method_name_}, {"number", descriptor_->number()}, {"options", BuildFlagsString(FLAGTYPE_EXTENSION, options)}, - {"full_method_name", full_method_name_}, + {"root_or_message_class_name", root_or_message_class_name_}, {"type", objc_type == OBJECTIVECTYPE_MESSAGE ? ObjCClass(ClassName(descriptor_->message_type())) : "Nil"}}, R"objc( { .defaultValue.$default_name$ = $default$, - .singletonName = GPBStringifySymbol($full_method_name$), + .singletonName = GPBStringifySymbol($root_or_message_class_name$) "_$method_name$", .extendedClass.clazz = $extended_type$, .messageOrGroupClass.clazz = $type$, .enumDescriptorFunc = $enum_desc_func_name$, diff --git a/src/google/protobuf/compiler/objectivec/extension.h b/src/google/protobuf/compiler/objectivec/extension.h index ae1cd40bc4..8cdcd8ca6a 100644 --- a/src/google/protobuf/compiler/objectivec/extension.h +++ b/src/google/protobuf/compiler/objectivec/extension.h @@ -40,8 +40,8 @@ class ExtensionGenerator { absl::flat_hash_set* deps) const; private: + std::string root_or_message_class_name_; std::string method_name_; - std::string full_method_name_; const FieldDescriptor* descriptor_; const GenerationOptions& generation_options_; };