• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Protocol Buffers - Google's data interchange format
2// Copyright 2023 Google LLC.  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// LINT: ALLOW_GROUPS
9
10syntax = "proto2";
11
12package upb_test;
13
14import "google/protobuf/test_messages_proto3.proto";
15
16message TestExtensions {
17  extensions 1000 to max
18  [verification = UNVERIFIED];
19  extend TestExtensions {
20    optional int32 optional_int32_ext = 1000;
21  }
22  message Nested {
23    extend TestExtensions {
24      repeated int32 repeated_int32_ext = 1001;
25    }
26  }
27}
28
29extend TestExtensions {
30  optional protobuf_test_messages.proto3.TestAllTypesProto3 optional_msg_ext =
31      1002;
32}
33
34message TestMessageSet {
35  option message_set_wire_format = true;
36
37  extensions 4 to max
38  [verification = UNVERIFIED];
39}
40
41message MessageSetMember {
42  optional int32 optional_int32 = 1;
43  extend TestMessageSet {
44    optional MessageSetMember message_set_extension = 4;
45  }
46}
47
48message FakeMessageSet {
49  repeated group Item = 1 {
50    optional int32 type_id = 2;
51    optional bytes message = 3;
52    optional int32 unknown_varint = 4;
53    optional fixed32 unknown_fixed32 = 5;
54    optional fixed64 unknown_fixed64 = 6;
55    optional bytes unknown_bytes = 7;
56    optional group UnknownGroup = 8 {}
57  }
58}
59
60message Proto2EnumMessage {
61  enum Proto2TestEnum {
62    ZERO = 0;
63    NEGATIVE = -1;
64    SMALL = 15;
65    LARGE = 12345;
66  }
67
68  optional Proto2TestEnum optional_enum = 1;
69  repeated Proto2TestEnum repeated_enum = 2;
70  repeated Proto2TestEnum packed_enum = 3 [packed = true];
71}
72
73// The same fields as Proto2EnumMessage, but with int32 fields so we can fake
74// wire format.
75message Proto2FakeEnumMessage {
76  optional int32 optional_enum = 1;
77  repeated int32 repeated_enum = 2;
78  repeated int32 packed_enum = 3 [packed = true];
79}
80
81message EmptyMessage {}
82
83message TestRequiredFields {
84  required int32 required_int32 = 1;
85  optional int32 optional_int32 = 2;
86  required int64 required_int64 = 3;
87  optional TestRequiredFields optional_message = 4;
88  required EmptyMessage required_message = 5;
89}
90
91message SubMessageHasRequired {
92  optional TestRequiredFields optional_message = 1;
93}
94
95message TestMaxRequiredFields {
96  required int32 required_int32_1 = 1;
97  required int32 required_int32_2 = 2;
98  required int32 required_int32_3 = 3;
99  required int32 required_int32_4 = 4;
100  required int32 required_int32_5 = 5;
101  required int32 required_int32_6 = 6;
102  required int32 required_int32_7 = 7;
103  required int32 required_int32_8 = 8;
104  required int32 required_int32_9 = 9;
105  required int32 required_int32_10 = 10;
106  required int32 required_int32_11 = 11;
107  required int32 required_int32_12 = 12;
108  required int32 required_int32_13 = 13;
109  required int32 required_int32_14 = 14;
110  required int32 required_int32_15 = 15;
111  required int32 required_int32_16 = 16;
112  required int32 required_int32_17 = 17;
113  required int32 required_int32_18 = 18;
114  required int32 required_int32_19 = 19;
115  required int32 required_int32_20 = 20;
116  required int32 required_int32_21 = 21;
117  required int32 required_int32_22 = 22;
118  required int32 required_int32_23 = 23;
119  required int32 required_int32_24 = 24;
120  required int32 required_int32_25 = 25;
121  required int32 required_int32_26 = 26;
122  required int32 required_int32_27 = 27;
123  required int32 required_int32_28 = 28;
124  required int32 required_int32_29 = 29;
125  required int32 required_int32_30 = 30;
126  required int32 required_int32_31 = 31;
127  required int32 required_int32_32 = 32;
128  required int32 required_int32_33 = 33;
129  required int32 required_int32_34 = 34;
130  required int32 required_int32_35 = 35;
131  required int32 required_int32_36 = 36;
132  required int32 required_int32_37 = 37;
133  required int32 required_int32_38 = 38;
134  required int32 required_int32_39 = 39;
135  required int32 required_int32_40 = 40;
136  required int32 required_int32_41 = 41;
137  required int32 required_int32_42 = 42;
138  required int32 required_int32_43 = 43;
139  required int32 required_int32_44 = 44;
140  required int32 required_int32_45 = 45;
141  required int32 required_int32_46 = 46;
142  required int32 required_int32_47 = 47;
143  required int32 required_int32_48 = 48;
144  required int32 required_int32_49 = 49;
145  required int32 required_int32_50 = 50;
146  required int32 required_int32_51 = 51;
147  required int32 required_int32_52 = 52;
148  required int32 required_int32_53 = 53;
149  required int32 required_int32_54 = 54;
150  required int32 required_int32_55 = 55;
151  required int32 required_int32_56 = 56;
152  required int32 required_int32_57 = 57;
153  required int32 required_int32_58 = 58;
154  required int32 required_int32_59 = 59;
155  required int32 required_int32_60 = 60;
156  required int32 required_int32_61 = 61;
157  required int32 required_int32_62 = 62;
158}
159
160message TestMapField {
161  enum EnumMap {
162    ZERO = 0;
163    ONE = 1;
164    TWO = 2;
165  }
166  map<int32, EnumMap> map_field = 1;
167}
168
169message TestMapFieldExtra {
170  enum EnumMap {
171    ZERO = 0;
172    ONE = 1;
173    TWO = 2;
174    THREE = 3;
175  }
176  map<int32, EnumMap> map_field = 1;
177}
178
179message TestNameConflict {
180  map<string, string> map_field = 1;
181  optional bool clear_map_field = 2;
182}
183
184message TestFreeze {
185  extensions 99 to max;
186
187  optional string str = 1;
188  optional TestFreeze msg = 2;
189
190  map<int32, int32> map_int = 10;
191  map<int32, TestFreeze> map_msg = 11;
192
193  repeated int32 array_int = 20;
194  repeated TestFreeze array_msg = 21;
195}
196
197extend TestFreeze {
198  optional TestFreeze nest = 100;
199}
200
201extend TestFreeze {
202  repeated Proto2EnumMessage rep_msg = 101;
203}
204