1// Protocol Buffers - Google's data interchange format 2// Copyright 2008 Google Inc. All rights reserved. 3// 4// Use of this source code is governed by a BSD-style 5// license that can be found in the LICENSE file or at 6// https://developers.google.com/open-source/licenses/bsd 7 8// Author: robinson@google.com (Will Robinson) 9 10// LINT: LEGACY_NAMES 11 12syntax = "proto2"; 13 14package google.protobuf.internal; 15 16import "google/protobuf/duration.proto"; 17import "google/protobuf/struct.proto"; 18import "google/protobuf/timestamp.proto"; 19 20// A message where tag numbers are listed out of order, to allow us to test our 21// canonicalization of serialized output, which should always be in tag order. 22// We also mix in some extensions for extra fun. 23message OutOfOrderFields { 24 optional sint32 optional_sint32 = 5; 25 extensions 4 to 4; 26 optional uint32 optional_uint32 = 3; 27 extensions 2 to 2; 28 optional int32 optional_int32 = 1; 29} 30 31extend OutOfOrderFields { 32 optional uint64 optional_uint64 = 4; 33 optional int64 optional_int64 = 2; 34} 35 36enum is { // top level enum keyword 37 default = 0; 38 else = 1; // top level enum value keyword 39} 40 41message class { // message keyword 42 optional int32 int_field = 1 [json_name = "json_int"]; 43 optional int32 if = 2; // field keyword 44 optional is as = 3; // enum field keyword 45 optional is enum_field = 4; 46 enum for { // nested enum keyword 47 default = 0; 48 True = 1; // nested enum value keyword 49 } 50 optional for nested_enum_field = 5; 51 message try { 52 optional int32 field = 1; 53 extensions 999 to 9999; 54 } 55 optional try 56 nested_message = 6; 57 extensions 999 to 9999; 58} 59 60extend class { 61 optional int32 continue = 1001; // top level extension keyword 62} 63 64extend class.try { 65 optional int32 with = 1001; 66} 67 68message ExtendClass { 69 extend class { 70 optional int32 return = 1002; // nested extension keyword 71 } 72} 73 74message TestFullKeyword { 75 optional google.protobuf.internal.OutOfOrderFields field1 = 1; 76 optional google.protobuf.internal.class field2 = 2; 77} 78 79// TODO: Add keyword support for service. 80// service False { 81// rpc Bar(class) returns (class); 82// } 83 84message LotsNestedMessage { 85 message B0 {} 86 message B1 {} 87 message B2 {} 88 message B3 {} 89 message B4 {} 90 message B5 {} 91 message B6 {} 92 message B7 {} 93 message B8 {} 94 message B9 {} 95 message B10 {} 96 message B11 {} 97 message B12 {} 98 message B13 {} 99 message B14 {} 100 message B15 {} 101 message B16 {} 102 message B17 {} 103 message B18 {} 104 message B19 {} 105 message B20 {} 106 message B21 {} 107 message B22 {} 108 message B23 {} 109 message B24 {} 110 message B25 {} 111 message B26 {} 112 message B27 {} 113 message B28 {} 114 message B29 {} 115 message B30 {} 116 message B31 {} 117 message B32 {} 118 message B33 {} 119 message B34 {} 120 message B35 {} 121 message B36 {} 122 message B37 {} 123 message B38 {} 124 message B39 {} 125 message B40 {} 126 message B41 {} 127 message B42 {} 128 message B43 {} 129 message B44 {} 130 message B45 {} 131 message B46 {} 132 message B47 {} 133 message B48 {} 134 message B49 {} 135 message B50 {} 136 message B51 {} 137 message B52 {} 138 message B53 {} 139 message B54 {} 140 message B55 {} 141 message B56 {} 142 message B57 {} 143 message B58 {} 144 message B59 {} 145 message B60 {} 146 message B61 {} 147 message B62 {} 148 message B63 {} 149 message B64 {} 150 message B65 {} 151 message B66 {} 152 message B67 {} 153 message B68 {} 154 message B69 {} 155 message B70 {} 156 message B71 {} 157 message B72 {} 158 message B73 {} 159 message B74 {} 160 message B75 {} 161 message B76 {} 162 message B77 {} 163 message B78 {} 164 message B79 {} 165 message B80 {} 166 message B81 {} 167 message B82 {} 168 message B83 {} 169 message B84 {} 170 message B85 {} 171 message B86 {} 172 message B87 {} 173 message B88 {} 174 message B89 {} 175 message B90 {} 176 message B91 {} 177 message B92 {} 178 message B93 {} 179 message B94 {} 180 message B95 {} 181 message B96 {} 182 message B97 {} 183 message B98 {} 184 message B99 {} 185 message B100 {} 186 message B101 {} 187 message B102 {} 188 message B103 {} 189 message B104 {} 190 message B105 {} 191 message B106 {} 192 message B107 {} 193 message B108 {} 194 message B109 {} 195 message B110 {} 196 message B111 {} 197 message B112 {} 198 message B113 {} 199 message B114 {} 200 message B115 {} 201 message B116 {} 202 message B117 {} 203 message B118 {} 204 message B119 {} 205 message B120 {} 206 message B121 {} 207 message B122 {} 208 message B123 {} 209 message B124 {} 210 message B125 {} 211 message B126 {} 212 message B127 {} 213 message B128 {} 214 message B129 {} 215 message B130 {} 216 message B131 {} 217 message B132 {} 218 message B133 {} 219 message B134 {} 220 message B135 {} 221 message B136 {} 222 message B137 {} 223 message B138 {} 224 message B139 {} 225 message B140 {} 226 message B141 {} 227 message B142 {} 228 message B143 {} 229 message B144 {} 230 message B145 {} 231 message B146 {} 232 message B147 {} 233 message B148 {} 234 message B149 {} 235 message B150 {} 236 message B151 {} 237 message B152 {} 238 message B153 {} 239 message B154 {} 240 message B155 {} 241 message B156 {} 242 message B157 {} 243 message B158 {} 244 message B159 {} 245 message B160 {} 246 message B161 {} 247 message B162 {} 248 message B163 {} 249 message B164 {} 250 message B165 {} 251 message B166 {} 252 message B167 {} 253 message B168 {} 254 message B169 {} 255 message B170 {} 256 message B171 {} 257 message B172 {} 258 message B173 {} 259 message B174 {} 260 message B175 {} 261 message B176 {} 262 message B177 {} 263 message B178 {} 264 message B179 {} 265 message B180 {} 266 message B181 {} 267 message B182 {} 268 message B183 {} 269 message B184 {} 270 message B185 {} 271 message B186 {} 272 message B187 {} 273 message B188 {} 274 message B189 {} 275 message B190 {} 276 message B191 {} 277 message B192 {} 278 message B193 {} 279 message B194 {} 280 message B195 {} 281 message B196 {} 282 message B197 {} 283 message B198 {} 284 message B199 {} 285 message B200 {} 286 message B201 {} 287 message B202 {} 288 message B203 {} 289 message B204 {} 290 message B205 {} 291 message B206 {} 292 message B207 {} 293 message B208 {} 294 message B209 {} 295 message B210 {} 296 message B211 {} 297 message B212 {} 298 message B213 {} 299 message B214 {} 300 message B215 {} 301 message B216 {} 302 message B217 {} 303 message B218 {} 304 message B219 {} 305 message B220 {} 306 message B221 {} 307 message B222 {} 308 message B223 {} 309 message B224 {} 310 message B225 {} 311 message B226 {} 312 message B227 {} 313 message B228 {} 314 message B229 {} 315 message B230 {} 316 message B231 {} 317 message B232 {} 318 message B233 {} 319 message B234 {} 320 message B235 {} 321 message B236 {} 322 message B237 {} 323 message B238 {} 324 message B239 {} 325 message B240 {} 326 message B241 {} 327 message B242 {} 328 message B243 {} 329 message B244 {} 330 message B245 {} 331 message B246 {} 332 message B247 {} 333 message B248 {} 334 message B249 {} 335 message B250 {} 336 message B251 {} 337 message B252 {} 338 message B253 {} 339 message B254 {} 340 message B255 {} 341} 342 343message RequiredField { 344 required int32 id = 1; 345} 346 347message RequiredWrapper { 348 optional RequiredField request = 1; 349} 350 351message ConflictJsonName { 352 optional int32 value = 1 [json_name = "old_value"]; 353 optional int32 new_value = 2 [json_name = "value"]; 354} 355