Index: third_party/protobuf/src/google/protobuf/compiler/parser.cc |
diff --git a/third_party/protobuf/src/google/protobuf/compiler/parser.cc b/third_party/protobuf/src/google/protobuf/compiler/parser.cc |
index 90ded4de2144b254d6adf7da4c34d03abc6eb90d..09c7a2b65d1a228f004c1d3bf639fdb601f625e6 100644 |
--- a/third_party/protobuf/src/google/protobuf/compiler/parser.cc |
+++ b/third_party/protobuf/src/google/protobuf/compiler/parser.cc |
@@ -525,7 +525,6 @@ bool Parser::Parse(io::Tokenizer* input, FileDescriptorProto* file) { |
SourceCodeInfo source_code_info; |
source_code_info_ = &source_code_info; |
- vector<string> top_doc_comments; |
if (LookingAtType(io::Tokenizer::TYPE_START)) { |
// Advance to first token. |
input_->NextWithComments(NULL, &upcoming_detached_comments_, |
@@ -571,6 +570,7 @@ bool Parser::Parse(io::Tokenizer* input, FileDescriptorProto* file) { |
input_ = NULL; |
source_code_info_ = NULL; |
+ assert(file != NULL); |
source_code_info.Swap(file->mutable_source_code_info()); |
return !had_errors_; |
} |
@@ -1630,6 +1630,16 @@ bool Parser::ParseOneof(OneofDescriptorProto* oneof_decl, |
return false; |
} |
+ if (LookingAt("option")) { |
+ LocationRecorder option_location( |
+ oneof_location, OneofDescriptorProto::kOptionsFieldNumber); |
+ if (!ParseOption(oneof_decl->mutable_options(), option_location, |
+ containing_file, OPTION_STATEMENT)) { |
+ return false; |
+ } |
+ continue; |
+ } |
+ |
// Print a nice error if the user accidentally tries to place a label |
// on an individual member of a oneof. |
if (LookingAt("required") || |