move check to helper

pull/13479/head
Josh Humphries 2 years ago
parent 5468b82bff
commit 4d95e9b839
  1. 43
      src/google/protobuf/compiler/parser.cc
  2. 1
      src/google/protobuf/compiler/parser.h

@ -571,6 +571,27 @@ void Parser::SkipRestOfBlock() {
// ===================================================================
bool Parser::ValidateMessage(const DescriptorProto* proto) {
for (int i = 0; i < proto->options().uninterpreted_option_size(); i++) {
const UninterpretedOption& option = proto->options().uninterpreted_option(i);
if (option.name_size() > 0 &&
!option.name(0).is_extension() &&
option.name(0).name_part() == "map_entry") {
int line = -1, col = 0; // indicates line and column not known
if (source_location_table_ != nullptr) {
source_location_table_->Find(&option,
DescriptorPool::ErrorCollector::OPTION_NAME,
&line, &col);
}
RecordError(line, col,
"map_entry should not be set explicitly. "
"Use map<KeyType, ValueType> instead.");
return false;
}
}
return true;
}
bool Parser::ValidateEnum(const EnumDescriptorProto* proto) {
bool has_allow_alias = false;
bool allow_alias = false;
@ -867,6 +888,7 @@ bool IsMessageSetWireFormatMessage(const DescriptorProto& message) {
for (int i = 0; i < options.uninterpreted_option_size(); ++i) {
const UninterpretedOption& uninterpreted = options.uninterpreted_option(i);
if (uninterpreted.name_size() == 1 &&
!uninterpreted.name(0).is_extension() &&
uninterpreted.name(0).name_part() == "message_set_wire_format" &&
uninterpreted.identifier_value() == "true") {
return true;
@ -932,25 +954,8 @@ bool Parser::ParseMessageBlock(DescriptorProto* message,
AdjustReservedRangesWithMaxEndNumber(message);
}
// check if map_entry option was explicitly set
if (message->has_options()) {
const MessageOptions& opts = message->options();
for (int i = 0; i < opts.uninterpreted_option_size(); i++) {
const UninterpretedOption& opt = opts.uninterpreted_option(i);
if (opt.name_size() > 0 && !opt.name(0).is_extension()
&& opt.name(0).name_part() == "map_entry") {
int line = -1, col = 0;
if (source_location_table_ != nullptr) {
source_location_table_->Find(&opt,
DescriptorPool::ErrorCollector::OPTION_NAME,
&line, &col);
}
RecordError(line, col,
"map_entry should not be set explicitly. "
"Use map<KeyType, ValueType> instead.");
}
}
}
DO(ValidateMessage(message));
return true;
}

@ -534,6 +534,7 @@ class PROTOBUF_EXPORT Parser {
return syntax_identifier_ == "proto3";
}
bool ValidateMessage(const DescriptorProto* proto);
bool ValidateEnum(const EnumDescriptorProto* proto);
// =================================================================

Loading…
Cancel
Save