From 44faee9877d0c641669cf002fdda29124d717096 Mon Sep 17 00:00:00 2001 From: Protobuf Team Bot Date: Tue, 17 Jan 2023 09:44:32 -0800 Subject: [PATCH] [ObjC] Ensure more uniqueness on generated internal function name. In the multi file case, the function to get the file descriptor has to be referenced from multiple generated source, so it can't be `static`, ensure the name is more unique to avoid issues. PiperOrigin-RevId: 502611183 --- csharp/src/Google.Protobuf.Test/testprotos.pb | Bin 356412 -> 346667 bytes .../protobuf/compiler/objectivec/file.cc | 53 ++++++++++++++---- .../protobuf/compiler/objectivec/file.h | 1 + .../protobuf/compiler/objectivec/message.cc | 10 +++- .../protobuf/compiler/objectivec/message.h | 2 + 5 files changed, 53 insertions(+), 13 deletions(-) diff --git a/csharp/src/Google.Protobuf.Test/testprotos.pb b/csharp/src/Google.Protobuf.Test/testprotos.pb index e1cef477c301574263c3c1b49c497538967b45ec..106ada82c7dc9c8f8bf83f0508ae7196e59b6cc7 100644 GIT binary patch delta 15293 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 delta 17001 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 H|MLF;(dyDe diff --git a/src/google/protobuf/compiler/objectivec/file.cc b/src/google/protobuf/compiler/objectivec/file.cc index 0dbb33e8d4..09950412ce 100644 --- a/src/google/protobuf/compiler/objectivec/file.cc +++ b/src/google/protobuf/compiler/objectivec/file.cc @@ -42,6 +42,7 @@ #include "absl/container/btree_set.h" #include "absl/container/flat_hash_map.h" #include "absl/container/flat_hash_set.h" +#include "absl/strings/ascii.h" #include "absl/strings/str_cat.h" #include "absl/strings/str_join.h" #include "google/protobuf/compiler/objectivec/enum.h" @@ -49,6 +50,7 @@ #include "google/protobuf/compiler/objectivec/import_writer.h" #include "google/protobuf/compiler/objectivec/message.h" #include "google/protobuf/compiler/objectivec/names.h" +#include "google/protobuf/descriptor.h" #include "google/protobuf/io/printer.h" // NOTE: src/google/protobuf/compiler/plugin.cc makes use of cerr for some @@ -111,7 +113,8 @@ struct FileDescriptorsOrderedByName { }; void MakeDescriptors( - const Descriptor* descriptor, const std::string& root_classname, + const Descriptor* descriptor, const std::string& root_class_name, + const std::string& file_descriptor_function_name, std::vector>* enum_generators, std::vector>* extension_generators, std::vector>* message_generators) { @@ -121,13 +124,39 @@ void MakeDescriptors( } for (int i = 0; i < descriptor->nested_type_count(); i++) { message_generators->emplace_back(std::make_unique( - root_classname, descriptor->nested_type(i))); + root_class_name, file_descriptor_function_name, + descriptor->nested_type(i))); message_generators->back()->AddExtensionGenerators(extension_generators); - MakeDescriptors(descriptor->nested_type(i), root_classname, enum_generators, + MakeDescriptors(descriptor->nested_type(i), root_class_name, + file_descriptor_function_name, enum_generators, extension_generators, message_generators); } } +std::string FilenameIdentifier(const std::string& filename) { + std::string result; + for (const auto ch : filename) { + if (absl::ascii_isalnum(ch)) { + result.push_back(ch); + } else if (ch == '/') { + result.push_back('_'); + } else { + absl::StrAppend(&result, "_", absl::Hex(static_cast(ch))); + } + } + return result; +} + +std::string FileDescriptorFunctionName( + const FileDescriptor* file, const GenerationOptions& generation_options) { + // If multi source generation, then it won't be static and so make a longer + // name to hopefully ensure it is unique. + if (generation_options.experimental_multi_source_generation) { + return absl::StrCat("FileDescriptor_", FilenameIdentifier(file->name())); + } + return FileClassName(file) + "_FileDescriptor"; +} + } // namespace const FileGenerator::CommonState::MinDepsEntry& @@ -219,6 +248,8 @@ FileGenerator::FileGenerator(const FileDescriptor* file, generation_options_(generation_options), common_state_(&common_state), root_class_name_(FileClassName(file)), + file_descriptor_function_name_( + FileDescriptorFunctionName(file, generation_options)), is_bundled_proto_(IsProtobufLibraryBundledProtoFile(file)) { for (int i = 0; i < file_->enum_type_count(); i++) { enum_generators_.emplace_back( @@ -230,9 +261,11 @@ FileGenerator::FileGenerator(const FileDescriptor* file, } for (int i = 0; i < file_->message_type_count(); i++) { message_generators_.emplace_back(std::make_unique( - root_class_name_, file_->message_type(i))); + root_class_name_, file_descriptor_function_name_, + file_->message_type(i))); message_generators_.back()->AddExtensionGenerators(&extension_generators_); - MakeDescriptors(file_->message_type(i), root_class_name_, &enum_generators_, + MakeDescriptors(file_->message_type(i), root_class_name_, + file_descriptor_function_name_, &enum_generators_, &extension_generators_, &message_generators_); } } @@ -437,8 +470,8 @@ void FileGenerator::GenerateSourceForMessage(int idx, io::Printer* p) const { GenerateFile(p, GeneratedFileType::kSource, ignored_warnings, {}, [&] { p->Print( - "extern GPBFileDescriptor *$root_class_name$_FileDescriptor(void);\n\n", - "root_class_name", root_class_name_); + "extern GPBFileDescriptor *$file_descriptor_function_name$(void);\n\n", + "file_descriptor_function_name", file_descriptor_function_name_); if (!fwd_decls.empty()) { p->Print( @@ -692,7 +725,7 @@ void FileGenerator::PrintFileDescriptorImplementation(io::Printer* p) const { const std::string objc_prefix(FileClassPrefix(file_)); absl::flat_hash_map vars; - vars["root_class_name"] = root_class_name_; + vars["file_descriptor_function_name"] = file_descriptor_function_name_; vars["package"] = file_->package(); switch (file_->syntax()) { case FileDescriptor::SYNTAX_UNKNOWN: @@ -722,9 +755,9 @@ void FileGenerator::PrintFileDescriptorImplementation(io::Printer* p) const { // clang-format off p->Print( vars, - "#pragma mark - $root_class_name$_FileDescriptor\n" + "#pragma mark - $file_descriptor_function_name$\n" "\n" - "$file_desc_scope$GPBFileDescriptor *$root_class_name$_FileDescriptor(void) {\n" + "$file_desc_scope$GPBFileDescriptor *$file_descriptor_function_name$(void) {\n" " // This is called by +initialize so there is no need to worry\n" " // about thread safety of the singleton.\n" " static GPBFileDescriptor *descriptor = NULL;\n" diff --git a/src/google/protobuf/compiler/objectivec/file.h b/src/google/protobuf/compiler/objectivec/file.h index de4e504627..73e501db28 100644 --- a/src/google/protobuf/compiler/objectivec/file.h +++ b/src/google/protobuf/compiler/objectivec/file.h @@ -121,6 +121,7 @@ class FileGenerator { const GenerationOptions& generation_options_; mutable CommonState* common_state_; const std::string root_class_name_; + const std::string file_descriptor_function_name_; const bool is_bundled_proto_; std::vector> enum_generators_; diff --git a/src/google/protobuf/compiler/objectivec/message.cc b/src/google/protobuf/compiler/objectivec/message.cc index 51a404737b..7330ef08a9 100644 --- a/src/google/protobuf/compiler/objectivec/message.cc +++ b/src/google/protobuf/compiler/objectivec/message.cc @@ -181,9 +181,12 @@ const FieldDescriptor** SortFieldsByStorageSize(const Descriptor* descriptor) { } // namespace -MessageGenerator::MessageGenerator(const std::string& root_classname, - const Descriptor* descriptor) +MessageGenerator::MessageGenerator( + const std::string& root_classname, + const std::string& file_descriptor_function_name, + const Descriptor* descriptor) : root_classname_(root_classname), + file_descriptor_function_name_(file_descriptor_function_name), descriptor_(descriptor), field_generators_(descriptor), class_name_(ClassName(descriptor_)), @@ -453,6 +456,7 @@ void MessageGenerator::GenerateSource(io::Printer* printer) const { absl::flat_hash_map vars; vars["classname"] = class_name_; vars["rootclassname"] = root_classname_; + vars["file_descriptor_function_name"] = file_descriptor_function_name_; vars["fields"] = has_fields ? "fields" : "NULL"; if (has_fields) { vars["fields_count"] = absl::StrCat("(uint32_t)(sizeof(fields) / sizeof(", @@ -481,7 +485,7 @@ void MessageGenerator::GenerateSource(io::Printer* printer) const { " GPBDescriptor *localDescriptor =\n" " [GPBDescriptor allocDescriptorForClass:[$classname$ class]\n" " rootClass:[$rootclassname$ class]\n" - " file:$rootclassname$_FileDescriptor()\n" + " file:$file_descriptor_function_name$()\n" " fields:$fields$\n" " fieldCount:$fields_count$\n" " storageSize:sizeof($classname$__storage_)\n" diff --git a/src/google/protobuf/compiler/objectivec/message.h b/src/google/protobuf/compiler/objectivec/message.h index 32ec4deec3..ed5ee0b617 100644 --- a/src/google/protobuf/compiler/objectivec/message.h +++ b/src/google/protobuf/compiler/objectivec/message.h @@ -52,6 +52,7 @@ class ExtensionGenerator; class MessageGenerator { public: MessageGenerator(const std::string& root_classname, + const std::string& file_descriptor_function_name, const Descriptor* descriptor); ~MessageGenerator() = default; @@ -73,6 +74,7 @@ class MessageGenerator { private: const std::string root_classname_; + const std::string file_descriptor_function_name_; const Descriptor* descriptor_; FieldGeneratorMap field_generators_; const std::string class_name_;