Index: third_party/protobuf/src/google/protobuf/unittest_custom_options.proto |
diff --git a/third_party/protobuf/src/google/protobuf/unittest_custom_options.proto b/third_party/protobuf/src/google/protobuf/unittest_custom_options.proto |
index b6ee03da1bd312f159f9143648b815f7c53c2ad2..a610785f1bb23bed861bc705dc13c95404a612ad 100644 |
--- a/third_party/protobuf/src/google/protobuf/unittest_custom_options.proto |
+++ b/third_party/protobuf/src/google/protobuf/unittest_custom_options.proto |
@@ -35,6 +35,12 @@ |
// A proto file used to test the "custom options" feature of proto2. |
+// Some generic_services option(s) added automatically. |
+// See: http://go/proto2-generic-services-default |
+option cc_generic_services = true; // auto-added |
+option java_generic_services = true; // auto-added |
+option py_generic_services = true; |
+ |
// A custom file option (defined below). |
option (file_opt1) = 9876543210; |
@@ -273,3 +279,88 @@ message VariousComplexOptions { |
option (complex_opt3).complexoptiontype5.plugh = 22; |
option (complexopt6).xyzzy = 24; |
} |
+ |
+// ------------------------------------------------------ |
+// Definitions for testing aggregate option parsing. |
+// See descriptor_unittest.cc. |
+ |
+message AggregateMessageSet { |
+ option message_set_wire_format = true; |
+ extensions 4 to max; |
+} |
+ |
+message AggregateMessageSetElement { |
+ extend AggregateMessageSet { |
+ optional AggregateMessageSetElement message_set_extension = 15447542; |
+ } |
+ optional string s = 1; |
+} |
+ |
+// A helper type used to test aggregate option parsing |
+message Aggregate { |
+ optional int32 i = 1; |
+ optional string s = 2; |
+ |
+ // A nested object |
+ optional Aggregate sub = 3; |
+ |
+ // To test the parsing of extensions inside aggregate values |
+ optional google.protobuf.FileOptions file = 4; |
+ extend google.protobuf.FileOptions { |
+ optional Aggregate nested = 15476903; |
+ } |
+ |
+ // An embedded message set |
+ optional AggregateMessageSet mset = 5; |
+} |
+ |
+// Allow Aggregate to be used as an option at all possible locations |
+// in the .proto grammer. |
+extend google.protobuf.FileOptions { optional Aggregate fileopt = 15478479; } |
+extend google.protobuf.MessageOptions { optional Aggregate msgopt = 15480088; } |
+extend google.protobuf.FieldOptions { optional Aggregate fieldopt = 15481374; } |
+extend google.protobuf.EnumOptions { optional Aggregate enumopt = 15483218; } |
+extend google.protobuf.EnumValueOptions { optional Aggregate enumvalopt = 15486921; } |
+extend google.protobuf.ServiceOptions { optional Aggregate serviceopt = 15497145; } |
+extend google.protobuf.MethodOptions { optional Aggregate methodopt = 15512713; } |
+ |
+// Try using AggregateOption at different points in the proto grammar |
+option (fileopt) = { |
+ s: 'FileAnnotation' |
+ // Also test the handling of comments |
+ /* of both types */ i: 100 |
+ |
+ sub { s: 'NestedFileAnnotation' } |
+ |
+ // Include a google.protobuf.FileOptions and recursively extend it with |
+ // another fileopt. |
+ file { |
+ [protobuf_unittest.fileopt] { |
+ s:'FileExtensionAnnotation' |
+ } |
+ } |
+ |
+ // A message set inside an option value |
+ mset { |
+ [protobuf_unittest.AggregateMessageSetElement.message_set_extension] { |
+ s: 'EmbeddedMessageSetElement' |
+ } |
+ } |
+}; |
+ |
+message AggregateMessage { |
+ option (msgopt) = { i:101 s:'MessageAnnotation' }; |
+ optional int32 fieldname = 1 [(fieldopt) = { s:'FieldAnnotation' }]; |
+} |
+ |
+service AggregateService { |
+ option (serviceopt) = { s:'ServiceAnnotation' }; |
+ rpc Method (AggregateMessage) returns (AggregateMessage) { |
+ option (methodopt) = { s:'MethodAnnotation' }; |
+ } |
+} |
+ |
+enum AggregateEnum { |
+ option (enumopt) = { s:'EnumAnnotation' }; |
+ VALUE = 1 [(enumvalopt) = { s:'EnumValueAnnotation' }]; |
+} |