From 1b5ad0b6ad4fc076d6d02e8d8e4c8b348c561ec3 Mon Sep 17 00:00:00 2001 From: Protobuf Team Bot Date: Wed, 26 Apr 2023 14:20:29 -0700 Subject: [PATCH] Automated rollback of commit e286482430b2844fbbe759a4f61f7d9114a8a5d7. PiperOrigin-RevId: 527373317 --- .../java/com/google/protobuf/Descriptors.java | 4 -- src/google/protobuf/descriptor.cc | 57 ++++++++----------- src/google/protobuf/descriptor.h | 33 +---------- src/google/protobuf/descriptor_legacy.h | 13 +---- 4 files changed, 28 insertions(+), 79 deletions(-) diff --git a/java/core/src/main/java/com/google/protobuf/Descriptors.java b/java/core/src/main/java/com/google/protobuf/Descriptors.java index e866d199b3ca8..be7c76a5b52c1 100644 --- a/java/core/src/main/java/com/google/protobuf/Descriptors.java +++ b/java/core/src/main/java/com/google/protobuf/Descriptors.java @@ -162,8 +162,6 @@ public List getPublicDependencies() { } /** The syntax of the .proto file. */ - @Deprecated - public enum Syntax { UNKNOWN("unknown"), PROTO2("proto2"), @@ -177,8 +175,6 @@ enum Syntax { } /** Get the syntax of the .proto file. */ - @Deprecated - public Syntax getSyntax() { if (Syntax.PROTO3.name.equals(proto.getSyntax())) { return Syntax.PROTO3; diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc index 51b6dd9a01c84..c12e9dcbce0b9 100644 --- a/src/google/protobuf/descriptor.cc +++ b/src/google/protobuf/descriptor.cc @@ -2612,12 +2612,10 @@ void FileDescriptor::CopyHeadingTo(FileDescriptorProto* proto) const { } // TODO(liujisi): Also populate when syntax="proto2". - FileDescriptorLegacy::Syntax syntax = FileDescriptorLegacy(this).syntax(); - if (syntax == FileDescriptorLegacy::Syntax::SYNTAX_PROTO3 + if (syntax() == SYNTAX_PROTO3 ) { - proto->set_syntax(FileDescriptorLegacy::SyntaxName(syntax)); + proto->set_syntax(SyntaxName(syntax())); } - if (&options() != &FileOptions::default_instance()) { *proto->mutable_options() = options(); } @@ -3012,9 +3010,8 @@ std::string FileDescriptor::DebugStringWithOptions( SourceLocationCommentPrinter syntax_comment(this, path, "", debug_string_options); syntax_comment.AddPreComment(&contents); - absl::SubstituteAndAppend( - &contents, "syntax = \"$0\";\n\n", - FileDescriptorLegacy::SyntaxName(FileDescriptorLegacy(this).syntax())); + absl::SubstituteAndAppend(&contents, "syntax = \"$0\";\n\n", + SyntaxName(syntax())); syntax_comment.AddPostComment(&contents); } @@ -3285,7 +3282,7 @@ void FieldDescriptor::DebugString( // Label is omitted for maps, oneof, and plain proto3 fields. if (is_map() || real_containing_oneof() || - (is_optional() && !FieldDescriptorLegacy(this).has_optional_keyword())) { + (is_optional() && !has_optional_keyword())) { label.clear(); } @@ -3576,8 +3573,7 @@ bool FileDescriptor::GetSourceLocation(SourceLocation* out_location) const { bool FieldDescriptor::is_packed() const { if (!is_packable()) return false; - if (FileDescriptorLegacy(file_).syntax() == - FileDescriptorLegacy::Syntax::SYNTAX_PROTO2) { + if (file_->syntax() == FileDescriptor::SYNTAX_PROTO2) { return (options_ != nullptr) && options_->packed(); } else { return options_ == nullptr || !options_->has_packed() || options_->packed(); @@ -3586,8 +3582,7 @@ bool FieldDescriptor::is_packed() const { bool FieldDescriptor::requires_utf8_validation() const { return type() == TYPE_STRING && - FileDescriptorLegacy(file_).syntax() == - FileDescriptorLegacy::Syntax::SYNTAX_PROTO3; + file()->syntax() == FileDescriptor::SYNTAX_PROTO3; } bool Descriptor::GetSourceLocation(SourceLocation* out_location) const { @@ -3994,7 +3989,7 @@ class DescriptorBuilder { const Descriptor* result); void CheckFieldJsonNameUniqueness(const std::string& message_name, const DescriptorProto& message, - FileDescriptorLegacy::Syntax syntax, + FileDescriptor::Syntax syntax, bool use_custom_names); void CheckEnumValueUniqueness(const EnumDescriptorProto& proto, const EnumDescriptor* result); @@ -4716,7 +4711,7 @@ FileDescriptor* DescriptorPool::NewPlaceholderFileWithMutexHeld( placeholder->tables_ = &FileDescriptorTables::GetEmptyInstance(); placeholder->source_code_info_ = &SourceCodeInfo::default_instance(); placeholder->is_placeholder_ = true; - placeholder->syntax_ = FileDescriptorLegacy::SYNTAX_UNKNOWN; + placeholder->syntax_ = FileDescriptor::SYNTAX_UNKNOWN; placeholder->finished_building_ = true; // All other fields are zero or nullptr. @@ -5231,11 +5226,11 @@ FileDescriptor* DescriptorBuilder::BuildFileImpl( // TODO(liujisi): Report error when the syntax is empty after all the protos // have added the syntax statement. if (proto.syntax().empty() || proto.syntax() == "proto2") { - file_->syntax_ = FileDescriptorLegacy::SYNTAX_PROTO2; + file_->syntax_ = FileDescriptor::SYNTAX_PROTO2; } else if (proto.syntax() == "proto3") { - file_->syntax_ = FileDescriptorLegacy::SYNTAX_PROTO3; + file_->syntax_ = FileDescriptor::SYNTAX_PROTO3; } else { - file_->syntax_ = FileDescriptorLegacy::SYNTAX_UNKNOWN; + file_->syntax_ = FileDescriptor::SYNTAX_UNKNOWN; AddError(proto.name(), proto, DescriptorPool::ErrorCollector::OTHER, [&] { return absl::StrCat("Unrecognized syntax: ", proto.syntax()); }); @@ -5686,12 +5681,11 @@ void DescriptorBuilder::BuildMessage(const DescriptorProto& proto, void DescriptorBuilder::CheckFieldJsonNameUniqueness( const DescriptorProto& proto, const Descriptor* result) { - FileDescriptorLegacy::Syntax syntax = - FileDescriptorLegacy(result->file()).syntax(); + FileDescriptor::Syntax syntax = result->file()->syntax(); std::string message_name = result->full_name(); if (pool_->deprecated_legacy_json_field_conflicts_ || IsLegacyJsonFieldConflictEnabled(result->options())) { - if (syntax == FileDescriptorLegacy::Syntax::SYNTAX_PROTO3) { + if (syntax == FileDescriptor::SYNTAX_PROTO3) { // Only check default JSON names for conflicts in proto3. This is legacy // behavior that will be removed in a later version. CheckFieldJsonNameUniqueness(message_name, proto, syntax, false); @@ -5731,7 +5725,7 @@ bool JsonNameLooksLikeExtension(std::string name) { void DescriptorBuilder::CheckFieldJsonNameUniqueness( const std::string& message_name, const DescriptorProto& message, - FileDescriptorLegacy::Syntax syntax, bool use_custom_names) { + FileDescriptor::Syntax syntax, bool use_custom_names) { absl::flat_hash_map name_to_field; for (const FieldDescriptorProto& field : message.field()) { JsonNameDetails details = GetJsonNameDetails(&field, use_custom_names); @@ -5775,7 +5769,7 @@ void DescriptorBuilder::CheckFieldJsonNameUniqueness( }; bool involves_default = !details.is_custom || !match.is_custom; - if (syntax == FileDescriptorLegacy::SYNTAX_PROTO2 && involves_default) { + if (syntax == FileDescriptor::SYNTAX_PROTO2 && involves_default) { // TODO(b/261750676) Upgrade this to an error once downstream protos have // been fixed. AddWarning(message_name, field, DescriptorPool::ErrorCollector::NAME, @@ -5814,8 +5808,7 @@ void DescriptorBuilder::BuildFieldOrExtension(const FieldDescriptorProto& proto, result->proto3_optional_ = proto.proto3_optional(); if (proto.proto3_optional() && - FileDescriptorLegacy(file_).syntax() != - FileDescriptorLegacy::Syntax::SYNTAX_PROTO3) { + file_->syntax() != FileDescriptor::SYNTAX_PROTO3) { AddError(result->full_name(), proto, DescriptorPool::ErrorCollector::TYPE, [&] { return absl::StrCat( @@ -6228,8 +6221,7 @@ void DescriptorBuilder::CheckEnumValueUniqueness( // compatibility we issue only a warning for proto2. if ((pool_->deprecated_legacy_json_field_conflicts_ || IsLegacyJsonFieldConflictEnabled(result->options())) && - FileDescriptorLegacy(result->file()).syntax() == - FileDescriptorLegacy::Syntax::SYNTAX_PROTO2) { + result->file()->syntax() == FileDescriptor::SYNTAX_PROTO2) { AddWarning(value->full_name(), proto.value(i), DescriptorPool::ErrorCollector::NAME, make_error); continue; @@ -6593,7 +6585,7 @@ void DescriptorBuilder::CrossLinkMessage(Descriptor* message, const FieldDescriptor* field = message->field(i); if (field->proto3_optional_) { if (!field->containing_oneof() || - !OneofDescriptorLegacy(field->containing_oneof()).is_synthetic()) { + !field->containing_oneof()->is_synthetic()) { AddError(message->full_name(), proto.field(i), DescriptorPool::ErrorCollector::OTHER, "Fields with proto3_optional set must be " @@ -6606,7 +6598,7 @@ void DescriptorBuilder::CrossLinkMessage(Descriptor* message, int first_synthetic = -1; for (int i = 0; i < message->oneof_decl_count(); i++) { const OneofDescriptor* oneof = message->oneof_decl(i); - if (OneofDescriptorLegacy(oneof).is_synthetic()) { + if (oneof->is_synthetic()) { if (first_synthetic == -1) { first_synthetic = i; } @@ -7148,8 +7140,7 @@ void DescriptorBuilder::ValidateFileOptions(FileDescriptor* file, } } } - if (FileDescriptorLegacy(file).syntax() == - FileDescriptorLegacy::Syntax::SYNTAX_PROTO3) { + if (file->syntax() == FileDescriptor::SYNTAX_PROTO3) { ValidateProto3(file, proto); } } @@ -7212,10 +7203,8 @@ void DescriptorBuilder::ValidateProto3Field(FieldDescriptor* field, } if (field->cpp_type() == FieldDescriptor::CPPTYPE_ENUM && field->enum_type() && - FileDescriptorLegacy(field->enum_type()->file()).syntax() != - FileDescriptorLegacy::Syntax::SYNTAX_PROTO3 && - FileDescriptorLegacy(field->enum_type()->file()).syntax() != - FileDescriptorLegacy::Syntax::SYNTAX_UNKNOWN) { + field->enum_type()->file()->syntax() != FileDescriptor::SYNTAX_PROTO3 && + field->enum_type()->file()->syntax() != FileDescriptor::SYNTAX_UNKNOWN) { // Proto3 messages can only use Proto3 enum types; otherwise we can't // guarantee that the default value is zero. AddError( diff --git a/src/google/protobuf/descriptor.h b/src/google/protobuf/descriptor.h index 1f0d5164cc001..97829d2e2f1c7 100644 --- a/src/google/protobuf/descriptor.h +++ b/src/google/protobuf/descriptor.h @@ -922,15 +922,10 @@ class PROTOBUF_EXPORT FieldDescriptor : private internal::SymbolBase { friend class Reflection; friend class FieldDescriptorLegacy; - - public: - ABSL_DEPRECATED("Syntax is deprecated in favor of editions") // Returns true if this field was syntactically written with "optional" in the // .proto file. Excludes singular proto3 fields that do not have a label. bool has_optional_keyword() const; - private: - // Fill the json_name field of FieldDescriptorProto. void CopyJsonNameTo(FieldDescriptorProto* proto) const; @@ -1088,15 +1083,10 @@ class PROTOBUF_EXPORT OneofDescriptor : private internal::SymbolBase { friend class compiler::cpp::Formatter; friend class OneofDescriptorLegacy; - - public: - ABSL_DEPRECATED("Syntax is deprecated in favor of editions") // Returns whether this oneof was inserted by the compiler to wrap a proto3 // optional field. If this returns true, code generators should *not* emit it. bool is_synthetic() const; - private: - // See Descriptor::DebugString(). void DebugString(int depth, std::string* contents, const DebugStringOptions& options) const; @@ -1667,13 +1657,12 @@ class PROTOBUF_EXPORT FileDescriptor : private internal::SymbolBase { // descriptor.proto, and any available extensions of that message. const FileOptions& options() const; + private: // With the upcoming release of editions, syntax should not be used for // business logic. Instead, the various feature helpers defined in this file // should be used to query more targeted behaviors. For example: // has_presence, is_closed, requires_utf8_validation. - enum - ABSL_DEPRECATED("Syntax is deprecated in favor of editions") - Syntax + enum Syntax #ifndef SWIG : int #endif // !SWIG @@ -1682,19 +1671,13 @@ class PROTOBUF_EXPORT FileDescriptor : private internal::SymbolBase { SYNTAX_PROTO2 = 2, SYNTAX_PROTO3 = 3, }; - PROTOBUF_IGNORE_DEPRECATION_START - ABSL_DEPRECATED("Syntax is deprecated in favor of editions") Syntax syntax() const; - PROTOBUF_IGNORE_DEPRECATION_STOP // Define a visibility-restricted wrapper for internal use until the migration // is complete. friend class FileDescriptorLegacy; - PROTOBUF_IGNORE_DEPRECATION_START - ABSL_DEPRECATED("Syntax is deprecated in favor of editions") static const char* SyntaxName(Syntax syntax); - PROTOBUF_IGNORE_DEPRECATION_STOP public: @@ -2331,9 +2314,7 @@ PROTOBUF_DEFINE_ARRAY_ACCESSOR(EnumDescriptor, reserved_range, PROTOBUF_DEFINE_ACCESSOR(EnumDescriptor, reserved_name_count, int) inline bool EnumDescriptor::is_closed() const { - PROTOBUF_IGNORE_DEPRECATION_START return file()->syntax() != FileDescriptor::SYNTAX_PROTO3; - PROTOBUF_IGNORE_DEPRECATION_STOP } PROTOBUF_DEFINE_NAME_ACCESSOR(EnumValueDescriptor) @@ -2484,33 +2465,25 @@ inline bool FieldDescriptor::is_map() const { } inline bool FieldDescriptor::has_optional_keyword() const { - PROTOBUF_IGNORE_DEPRECATION_START return proto3_optional_ || (file()->syntax() == FileDescriptor::SYNTAX_PROTO2 && is_optional() && !containing_oneof()); - PROTOBUF_IGNORE_DEPRECATION_STOP } inline const OneofDescriptor* FieldDescriptor::real_containing_oneof() const { - PROTOBUF_IGNORE_DEPRECATION_START auto* oneof = containing_oneof(); return oneof && !oneof->is_synthetic() ? oneof : nullptr; - PROTOBUF_IGNORE_DEPRECATION_STOP } inline bool FieldDescriptor::has_presence() const { - PROTOBUF_IGNORE_DEPRECATION_START if (is_repeated()) return false; return cpp_type() == CPPTYPE_MESSAGE || containing_oneof() || file()->syntax() == FileDescriptor::SYNTAX_PROTO2; - PROTOBUF_IGNORE_DEPRECATION_STOP } inline bool FieldDescriptor::legacy_enum_field_treated_as_closed() const { - PROTOBUF_IGNORE_DEPRECATION_START return type() == TYPE_ENUM && file()->syntax() == FileDescriptor::SYNTAX_PROTO2; - PROTOBUF_IGNORE_DEPRECATION_STOP } // To save space, index() is computed by looking at the descriptor's position @@ -2613,11 +2586,9 @@ inline const FileDescriptor* FileDescriptor::weak_dependency(int index) const { return dependency(weak_dependencies_[index]); } -PROTOBUF_IGNORE_DEPRECATION_START inline FileDescriptor::Syntax FileDescriptor::syntax() const { return static_cast(syntax_); } -PROTOBUF_IGNORE_DEPRECATION_STOP namespace internal { diff --git a/src/google/protobuf/descriptor_legacy.h b/src/google/protobuf/descriptor_legacy.h index 75b9cfa9ba256..763f4477e8fd7 100644 --- a/src/google/protobuf/descriptor_legacy.h +++ b/src/google/protobuf/descriptor_legacy.h @@ -66,7 +66,6 @@ namespace google { namespace protobuf { -PROTOBUF_IGNORE_DEPRECATION_START // Wraps FileDescriptor. class PROTOBUF_EXPORT FileDescriptorLegacy { @@ -75,15 +74,10 @@ class PROTOBUF_EXPORT FileDescriptorLegacy { // Any dependencies on file-level syntax keyword should be replaced by // feature-level switches to support go/protobuf-editions. - enum Syntax { - SYNTAX_UNKNOWN = FileDescriptor::SYNTAX_UNKNOWN, - SYNTAX_PROTO2 = FileDescriptor::SYNTAX_PROTO2, - SYNTAX_PROTO3 = FileDescriptor::SYNTAX_PROTO3, - }; - Syntax syntax() const { return static_cast(desc_->syntax()); } + using Syntax = FileDescriptor::Syntax; + Syntax syntax() const { return desc_->syntax(); } static absl::string_view SyntaxName(Syntax syntax) { - return FileDescriptor::SyntaxName( - static_cast(syntax)); + return FileDescriptor::SyntaxName(syntax); } private: @@ -110,7 +104,6 @@ class PROTOBUF_EXPORT OneofDescriptorLegacy { const OneofDescriptor* desc_; }; -PROTOBUF_IGNORE_DEPRECATION_STOP } // namespace protobuf } // namespace google