Internal Change

PiperOrigin-RevId: 636584465
pull/16916/head
Protobuf Team Bot 9 months ago committed by Copybara-Service
parent 046a07eead
commit dffec0c7d6
  1. 4
      conformance/test_protos/test_messages_edition2023.proto
  2. 1
      conformance/text_format_conformance_suite.cc
  3. 8
      src/google/protobuf/text_format.cc
  4. 4
      src/google/protobuf/text_format_unittest.cc
  5. 9
      src/google/protobuf/unittest_atomicmessage.proto
  6. 38
      src/google/protobuf/unittest_metadata.proto
  7. 11
      src/google/protobuf/unittest_testextensions_atomicmessage.proto

@ -13,6 +13,10 @@ option java_package = "com.google.protobuf_test_messages.edition2023";
option java_multiple_files = true;
option objc_class_prefix = "Editions";
message ComplexMessage {
int32 d = 1;
}
message TestAllTypesEdition2023 {
message NestedMessage {
int32 a = 1;

@ -261,6 +261,7 @@ void TextFormatConformanceTestSuiteImpl<MessageType>::RunDelimitedTests() {
"DelimitedFieldExtension", REQUIRED,
"[protobuf_test_messages.editions.delimited_ext] { c: 1 }");
// Test that lower-cased group name (i.e. implicit field name) are accepted.
RunValidTextFormatTest("DelimitedFieldLowercased", REQUIRED,
"groupliketype { group_int32: 1 }");

@ -11,7 +11,6 @@
#include "google/protobuf/text_format.h"
#include <float.h>
#include <stdio.h>
#include <algorithm>
@ -21,16 +20,20 @@
#include <cstddef>
#include <cstdint>
#include <limits>
#include <memory>
#include <string>
#include <utility>
#include <vector>
#include "absl/container/btree_set.h"
#include "absl/log/absl_check.h"
#include "absl/strings/ascii.h"
#include "absl/strings/cord.h"
#include "absl/strings/escaping.h"
#include "absl/strings/match.h"
#include "absl/strings/numbers.h"
#include "absl/strings/str_cat.h"
#include "absl/strings/str_format.h"
#include "absl/strings/str_join.h"
#include "absl/strings/string_view.h"
#include "google/protobuf/any.h"
@ -41,7 +44,6 @@
#include "google/protobuf/io/strtod.h"
#include "google/protobuf/io/tokenizer.h"
#include "google/protobuf/io/zero_copy_stream.h"
#include "google/protobuf/io/zero_copy_stream_impl.h"
#include "google/protobuf/io/zero_copy_stream_impl_lite.h"
#include "google/protobuf/map_field.h"
#include "google/protobuf/message.h"
@ -499,7 +501,6 @@ class TextFormat::Parser::ParserImpl {
return true;
}
// Consumes the current field (as returned by the tokenizer) on the
// passed in message.
bool ConsumeField(Message* message) {
@ -620,7 +621,6 @@ class TextFormat::Parser::ParserImpl {
reserved_field = descriptor->IsReservedName(field_name);
}
}
if (field == nullptr && !reserved_field) {
if (!allow_unknown_field_) {
ReportError(absl::StrCat("Message type \"", descriptor->full_name(),

@ -39,6 +39,7 @@
#include "google/protobuf/descriptor.h"
#include "google/protobuf/io/tokenizer.h"
#include "google/protobuf/io/zero_copy_stream_impl.h"
#include "google/protobuf/io/zero_copy_stream_impl_lite.h"
#include "google/protobuf/map_unittest.pb.h"
#include "google/protobuf/message.h"
#include "google/protobuf/test_util.h"
@ -121,6 +122,7 @@ class TextFormatTest : public TextFormatTestBase {
protected:
// Text format read from text_format_unittest_data.txt.
const std::string proto_text_format_;
private:
static std::string static_proto_text_format_;
};
@ -994,6 +996,7 @@ TEST_F(TextFormatExtensionsTest, ParseExtensions) {
TestUtil::ExpectAllExtensionsSet(proto_);
}
TEST_F(TextFormatTest, ParseEnumFieldFromNumber) {
// Create a parse string with a numerical value for an enum field.
std::string parse_string =
@ -2037,6 +2040,7 @@ TEST_F(TextFormatParserTest, InvalidToken) {
1, 1);
}
TEST_F(TextFormatParserTest, InvalidFieldName) {
ExpectFailure(
"invalid_field: somevalue\n",

@ -0,0 +1,9 @@
syntax = "proto2";
package protobuf_unittest;
option java_multiple_files = true;
message AtomicExtensionMessage {
optional int32 e = 1;
}

@ -0,0 +1,38 @@
syntax = "proto2";
package protobuf_unittest;
option java_multiple_files = true;
message SimpleMessage {
optional int32 c = 1;
optional int32 d = 2;
}
message ComplexMessage {
optional int32 d = 1;
}
message TestExtensionsWithMetadata {
extensions 1 [metadata = {
type: "int32",
name: "optional_primitive_extension",
}];
extensions 2 [metadata = {
type: "protobuf_unittest.SimpleMessage",
name: "optional_message_extension",
}];
extensions 3 [metadata = {
type: "protobuf_unittest.ComplexMessage",
name: "optional_complex_message_extension",
}];
extensions 4 [metadata = {
type: "protobuf_unittest.AtomicExtensionMessage",
name: "optional_atomic_extension",
}];
}
extend TestExtensionsWithMetadata {
optional int32 optional_primitive_extension = 1;
optional protobuf_unittest.SimpleMessage optional_message_extension = 2;
}

@ -0,0 +1,11 @@
syntax = "proto2";
package protobuf_unittest;
import "//google/protobuf/unittest_atomicmessage.proto";
option java_multiple_files = true;
extend TestExtensionsWithMetadata {
optional protobuf_unittest.AtomicExtensionMessage optional_atomic_extension = 4;
}
Loading…
Cancel
Save