don't emit location for label unless label is present
This commit is contained in:
parent
2849a79990
commit
f68b251f75
@ -902,10 +902,8 @@ bool Parser::ParseMessageField(FieldDescriptorProto* field,
|
||||
const LocationRecorder& field_location,
|
||||
const FileDescriptorProto* containing_file) {
|
||||
{
|
||||
LocationRecorder location(field_location,
|
||||
FieldDescriptorProto::kLabelFieldNumber);
|
||||
FieldDescriptorProto::Label label;
|
||||
if (ParseLabel(&label, containing_file)) {
|
||||
if (ParseLabel(&label, field_location, containing_file)) {
|
||||
field->set_label(label);
|
||||
if (label == FieldDescriptorProto::LABEL_OPTIONAL &&
|
||||
syntax_identifier_ == "proto3") {
|
||||
@ -2206,18 +2204,22 @@ bool Parser::ParseMethodOptions(const LocationRecorder& parent_location,
|
||||
// -------------------------------------------------------------------
|
||||
|
||||
bool Parser::ParseLabel(FieldDescriptorProto::Label* label,
|
||||
const LocationRecorder& field_location,
|
||||
const FileDescriptorProto* containing_file) {
|
||||
if (!LookingAt("optional") && !LookingAt("repeated") && !LookingAt("required")) {
|
||||
return false;
|
||||
}
|
||||
LocationRecorder location(field_location,
|
||||
FieldDescriptorProto::kLabelFieldNumber);
|
||||
if (TryConsume("optional")) {
|
||||
*label = FieldDescriptorProto::LABEL_OPTIONAL;
|
||||
return true;
|
||||
} else if (TryConsume("repeated")) {
|
||||
*label = FieldDescriptorProto::LABEL_REPEATED;
|
||||
return true;
|
||||
} else if (TryConsume("required")) {
|
||||
} else {
|
||||
Consume("required");
|
||||
*label = FieldDescriptorProto::LABEL_REQUIRED;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Parser::ParseType(FieldDescriptorProto::Type* type,
|
||||
|
@ -440,6 +440,7 @@ class PROTOBUF_EXPORT Parser {
|
||||
// Parse "required", "optional", or "repeated" and fill in "label"
|
||||
// with the value. Returns true if such a label is consumed.
|
||||
bool ParseLabel(FieldDescriptorProto::Label* label,
|
||||
const LocationRecorder& field_location,
|
||||
const FileDescriptorProto* containing_file);
|
||||
|
||||
// Parse a type name and fill in "type" (if it is a primitive) or
|
||||
|
Loading…
Reference in New Issue
Block a user