• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1syntax = "proto3";
2
3package foo;
4
5import 'google/protobuf/any.proto';
6import 'google/protobuf/struct.proto';
7import 'google/protobuf/wrappers.proto';
8import 'proto/test_empty_php_namespace.proto';
9import 'proto/test_include.proto';
10import 'proto/test_no_namespace.proto';
11import 'proto/test_php_namespace.proto';
12import 'proto/test_prefix.proto';
13
14message TestMessage {
15  // Singular
16  int32 optional_int32 = 1;
17  int64 optional_int64 = 2;
18  uint32 optional_uint32 = 3;
19  uint64 optional_uint64 = 4;
20  sint32 optional_sint32 = 5;
21  sint64 optional_sint64 = 6;
22  fixed32 optional_fixed32 = 7;
23  fixed64 optional_fixed64 = 8;
24  sfixed32 optional_sfixed32 = 9;
25  sfixed64 optional_sfixed64 = 10;
26  float optional_float = 11;
27  double optional_double = 12;
28  bool optional_bool = 13;
29  string optional_string = 14;
30  bytes optional_bytes = 15;
31
32  TestEnum optional_enum = 16;
33  Sub optional_message = 17;
34  bar.TestInclude optional_included_message = 18;
35  TestMessage recursive = 19;
36
37  // True optional
38  optional int32 true_optional_int32 = 201;
39  optional int64 true_optional_int64 = 202;
40  optional uint32 true_optional_uint32 = 203;
41  optional uint64 true_optional_uint64 = 204;
42  optional sint32 true_optional_sint32 = 205;
43  optional sint64 true_optional_sint64 = 206;
44  optional fixed32 true_optional_fixed32 = 207;
45  optional fixed64 true_optional_fixed64 = 208;
46  optional sfixed32 true_optional_sfixed32 = 209;
47  optional sfixed64 true_optional_sfixed64 = 210;
48  optional float true_optional_float = 211;
49  optional double true_optional_double = 212;
50  optional bool true_optional_bool = 213;
51  optional string true_optional_string = 214;
52  optional bytes true_optional_bytes = 215;
53
54  optional TestEnum true_optional_enum = 216;
55  optional Sub true_optional_message = 217;
56  optional bar.TestInclude true_optional_included_message = 218;
57
58  // Repeated
59  repeated int32 repeated_int32 = 31;
60  repeated int64 repeated_int64 = 32;
61  repeated uint32 repeated_uint32 = 33;
62  repeated uint64 repeated_uint64 = 34;
63  repeated sint32 repeated_sint32 = 35;
64  repeated sint64 repeated_sint64 = 36;
65  repeated fixed32 repeated_fixed32 = 37;
66  repeated fixed64 repeated_fixed64 = 38;
67  repeated sfixed32 repeated_sfixed32 = 39;
68  repeated sfixed64 repeated_sfixed64 = 40;
69  repeated float repeated_float = 41;
70  repeated double repeated_double = 42;
71  repeated bool repeated_bool = 43;
72  repeated string repeated_string = 44;
73  repeated bytes repeated_bytes = 45;
74
75  repeated TestEnum repeated_enum = 46;
76  repeated Sub repeated_message = 47;
77  repeated TestMessage repeated_recursive = 48;
78
79  oneof my_oneof {
80    int32 oneof_int32 = 51;
81    int64 oneof_int64 = 52;
82    uint32 oneof_uint32 = 53;
83    uint64 oneof_uint64 = 54;
84    uint32 oneof_sint32 = 55;
85    uint64 oneof_sint64 = 56;
86    uint32 oneof_fixed32 = 57;
87    uint64 oneof_fixed64 = 58;
88    uint32 oneof_sfixed32 = 59;
89    uint64 oneof_sfixed64 = 60;
90    double oneof_double = 61;
91    float oneof_float = 62;
92    bool oneof_bool = 63;
93    string oneof_string = 64;
94    bytes oneof_bytes = 65;
95    TestEnum oneof_enum = 66;
96    Sub oneof_message = 67;
97  }
98
99  map<int32, int32> map_int32_int32 = 71;
100  map<int64, int64> map_int64_int64 = 72;
101  map<uint32, uint32> map_uint32_uint32 = 73;
102  map<uint64, uint64> map_uint64_uint64 = 74;
103  map<sint32, sint32> map_sint32_sint32 = 75;
104  map<sint64, sint64> map_sint64_sint64 = 76;
105  map<fixed32, fixed32> map_fixed32_fixed32 = 77;
106  map<fixed64, fixed64> map_fixed64_fixed64 = 78;
107  map<sfixed32, sfixed32> map_sfixed32_sfixed32 = 79;
108  map<sfixed64, sfixed64> map_sfixed64_sfixed64 = 80;
109  map<int32, float> map_int32_float = 81;
110  map<int32, double> map_int32_double = 82;
111  map<bool, bool> map_bool_bool = 83;
112  map<string, string> map_string_string = 84;
113  map<int32, bytes> map_int32_bytes = 85;
114  map<int32, TestEnum> map_int32_enum = 86;
115  map<int32, Sub> map_int32_message = 87;
116
117  map<int32, TestMessage> map_recursive = 88;
118
119  message Sub {
120    int32 a = 1;
121    repeated int32 b = 2;
122  }
123
124  // Reserved for non-existing field test.
125  // int32 non_exist = 89;
126
127  NoNamespaceMessage optional_no_namespace_message = 91;
128  NoNamespaceEnum optional_no_namespace_enum = 92;
129  repeated NoNamespaceMessage repeated_no_namespace_message = 93;
130  repeated NoNamespaceEnum repeated_no_namespace_enum = 94;
131
132  enum NestedEnum {
133    ZERO = 0;
134  }
135
136  NestedEnum optional_nested_enum = 101;
137
138  // Test prefix for reserved words.
139  message Empty {
140    int32 a = 1;
141  }
142
143  reserved 111;
144
145  // Test map with missing message value
146  map<string, TestMessage> map_string_message = 121;
147  map<string, google.protobuf.Any> map_string_any = 122;
148  map<string, google.protobuf.ListValue> map_string_list = 123;
149  map<string, google.protobuf.Struct> map_string_struct = 124;
150
151  // deprecated field
152  int32 deprecated_int32 = 125 [deprecated = true];
153  // deprecated optional field
154  optional int32 deprecated_optional_int32 = 126 [deprecated = true];
155  // deprecated wrapped field
156  google.protobuf.Int32Value deprecated_int32_value = 127 [deprecated = true];
157  // deprecated oneof
158  oneof deprecated_oneof {
159    int32 deprecated_oneof_int32 = 128 [deprecated = true];
160  }
161  // deprecated repeated field
162  repeated int32 deprecated_repeated_int32 = 129 [deprecated = true];
163  // deprecated map
164  map<int32, int32> deprecated_map_int32_int32 = 130 [deprecated = true];
165  // deprecated any
166  google.protobuf.Any deprecated_any = 131 [deprecated = true];
167  // deprecated message
168  TestMessage deprecated_message = 132 [deprecated = true];
169  // deprecated enum
170  NestedEnum deprecated_enum = 133 [deprecated = true];
171}
172
173enum TestEnum {
174  ZERO = 0;
175  ONE = 1;
176  TWO = 2;
177  ECHO = 3;  // Test reserved name.
178}
179
180// Test prefix for reserved words.
181message Empty {
182  int32 a = 1;
183}
184
185message ARRAY {
186  int32 a = 1;
187}
188
189message EmptyAnySerialization {
190  string a = 1;
191}
192
193message TestPackedMessage {
194  repeated int32 repeated_int32 = 90 [packed = true];
195  repeated int64 repeated_int64 = 91 [packed = true];
196  repeated uint32 repeated_uint32 = 92 [packed = true];
197  repeated uint64 repeated_uint64 = 93 [packed = true];
198  repeated sint32 repeated_sint32 = 94 [packed = true];
199  repeated sint64 repeated_sint64 = 95 [packed = true];
200  repeated fixed32 repeated_fixed32 = 96 [packed = true];
201  repeated fixed64 repeated_fixed64 = 97 [packed = true];
202  repeated sfixed32 repeated_sfixed32 = 98 [packed = true];
203  repeated sfixed64 repeated_sfixed64 = 99 [packed = true];
204  repeated float repeated_float = 100 [packed = true];
205  repeated double repeated_double = 101 [packed = true];
206  repeated bool repeated_bool = 102 [packed = true];
207  repeated TestEnum repeated_enum = 103 [packed = true];
208}
209
210// Need to be in sync with TestPackedMessage.
211message TestUnpackedMessage {
212  repeated int32 repeated_int32 = 90 [packed = false];
213  repeated int64 repeated_int64 = 91 [packed = false];
214  repeated uint32 repeated_uint32 = 92 [packed = false];
215  repeated uint64 repeated_uint64 = 93 [packed = false];
216  repeated sint32 repeated_sint32 = 94 [packed = false];
217  repeated sint64 repeated_sint64 = 95 [packed = false];
218  repeated fixed32 repeated_fixed32 = 96 [packed = false];
219  repeated fixed64 repeated_fixed64 = 97 [packed = false];
220  repeated sfixed32 repeated_sfixed32 = 98 [packed = false];
221  repeated sfixed64 repeated_sfixed64 = 99 [packed = false];
222  repeated float repeated_float = 100 [packed = false];
223  repeated double repeated_double = 101 [packed = false];
224  repeated bool repeated_bool = 102 [packed = false];
225  repeated TestEnum repeated_enum = 103 [packed = false];
226}
227
228// /**/@<>&\{
229message TestPhpDoc {
230  int32 a = 1;
231}
232
233message TestIncludePrefixMessage {
234  TestPrefix prefix_message = 1;
235}
236
237message TestIncludeNamespaceMessage {
238  TestNamespace namespace_message = 1;
239  TestEmptyNamespace empty_namespace_message = 2;
240}
241
242// This will cause upb fields not ordered by the order in the generated code.
243message TestRandomFieldOrder {
244  int64 tag13 = 150;
245  string tag14 = 160;
246}
247
248message TestLargeFieldNumber {
249  int32 large_field_number = 536870911;
250}
251
252message TestReverseFieldOrder {
253  repeated int32 a = 2;
254  string b = 1;
255}
256
257message testLowerCaseMessage {}
258
259enum testLowerCaseEnum {
260  VALUE = 0;
261}
262
263message TestAny {
264  google.protobuf.Any any = 1;
265}
266
267message TestInt32Value {
268  google.protobuf.Int32Value field = 1;
269  repeated google.protobuf.Int32Value repeated_field = 2;
270  oneof oneof_fields {
271    google.protobuf.Int32Value oneof_field = 3;
272    int32 int32_field = 4;
273  }
274}
275
276message TestInt64Value {
277  google.protobuf.Int64Value field = 1;
278  repeated google.protobuf.Int64Value repeated_field = 2;
279  oneof oneof_fields {
280    google.protobuf.Int64Value oneof_field = 3;
281    int32 int32_field = 4;
282  }
283}
284
285message TestUInt32Value {
286  google.protobuf.UInt32Value field = 1;
287  repeated google.protobuf.UInt32Value repeated_field = 2;
288  oneof oneof_fields {
289    google.protobuf.UInt32Value oneof_field = 3;
290    int32 int32_field = 4;
291  }
292}
293
294message TestUInt64Value {
295  google.protobuf.UInt64Value field = 1;
296  repeated google.protobuf.UInt64Value repeated_field = 2;
297  oneof oneof_fields {
298    google.protobuf.UInt64Value oneof_field = 3;
299    int32 int32_field = 4;
300  }
301}
302
303message TestBoolValue {
304  google.protobuf.BoolValue field = 1;
305  repeated google.protobuf.BoolValue repeated_field = 2;
306  oneof oneof_fields {
307    google.protobuf.BoolValue oneof_field = 3;
308    int32 int32_field = 4;
309  }
310}
311
312message TestStringValue {
313  google.protobuf.StringValue field = 1;
314  repeated google.protobuf.StringValue repeated_field = 2;
315  oneof oneof_fields {
316    google.protobuf.StringValue oneof_field = 3;
317    int32 int32_field = 4;
318  }
319  map<int32, google.protobuf.StringValue> map_field = 5;
320}
321
322message TestBytesValue {
323  google.protobuf.BytesValue field = 1;
324  repeated google.protobuf.BytesValue repeated_field = 2;
325  oneof oneof_fields {
326    google.protobuf.BytesValue oneof_field = 3;
327    int32 int32_field = 4;
328  }
329}
330
331message Test32Fields {
332  optional uint32 id = 1;
333  optional uint32 random_name_a0 = 2;
334  optional uint32 random_name_a1 = 3;
335  optional uint32 random_name_a2 = 4;
336  optional uint32 random_name_a3 = 5;
337  optional uint32 random_name_a4 = 6;
338  optional uint32 random_name_a5 = 7;
339  optional uint32 random_name_a6 = 8;
340  optional uint32 random_name_a7 = 9;
341  optional uint32 random_name_a8 = 10;
342  optional uint32 random_name_a9 = 11;
343  optional uint32 random_name_b0 = 12;
344  optional uint32 random_name_b1 = 13;
345  optional uint32 random_name_b2 = 14;
346  optional uint32 random_name_b3 = 15;
347  optional uint32 random_name_b4 = 16;
348  optional uint32 random_name_b5 = 17;
349  optional uint32 random_name_b6 = 18;
350  optional uint32 random_name_b7 = 19;
351  optional uint32 random_name_b8 = 20;
352  optional uint32 random_name_b9 = 21;
353  optional uint32 random_name_c0 = 22;
354  optional uint32 random_name_c1 = 23;
355  optional uint32 random_name_c2 = 24;
356  optional uint32 random_name_c3 = 25;
357  optional uint32 random_name_c4 = 26;
358  optional uint32 random_name_c5 = 27;
359  optional uint32 random_name_c6 = 28;
360  optional uint32 random_name_c7 = 29;
361  optional uint32 random_name_c8 = 30;
362  optional uint32 random_name_c9 = 31;
363  optional string version = 32;
364}
365