1syntax = "proto2";
2
3option go_package = "github.com/jhump/protoreflect/internal/testprotos";
4
5package testprotos;
6
7/* Comment for TestMessage */
8message TestMessage {
9	/* Comment for NestedMessage */
10	message NestedMessage {
11		/* Comment for AnotherNestedMessage */
12		message AnotherNestedMessage {
13			/* Comment for AnotherTestMessage extensions (1) */
14			extend AnotherTestMessage {
15				/* Comment for flags */
16				repeated bool flags = 200 [packed = true];
17			}
18
19			/* Comment for YetAnotherNestedMessage */
20			message YetAnotherNestedMessage {
21				/* Comment for DeeplyNestedEnum */
22				enum DeeplyNestedEnum {
23					/* Comment for VALUE1 */
24					VALUE1 = 1;
25
26					/* Comment for VALUE2 */
27					VALUE2 = 2;
28				}
29
30				/* Comment for foo */
31				optional string foo = 1;
32
33				/* Comment for bar */
34				optional int32 bar = 2;
35
36				/* Comment for baz */
37				optional bytes baz = 3;
38
39				/* Comment for dne */
40				optional DeeplyNestedEnum dne = 4;
41
42				/* Comment for anm */
43				optional AnotherNestedMessage anm = 5;
44
45				/* Comment for nm */
46				optional NestedMessage nm = 6;
47
48				/* Comment for tm */
49				optional TestMessage tm = 7;
50			}
51
52			/* Comment for yanm */
53			repeated YetAnotherNestedMessage yanm = 1;
54		}
55
56		/* Comment for anm */
57		optional AnotherNestedMessage anm = 1;
58
59		/* Comment for yanm */
60		optional AnotherNestedMessage.YetAnotherNestedMessage yanm = 2;
61	}
62
63	/* Comment for NestedEnum */
64	enum NestedEnum {
65		/* Comment for VALUE1 */
66		VALUE1 = 1;
67
68		/* Comment for VALUE2 */
69		VALUE2 = 2;
70	}
71
72	/* Comment for nm */
73	optional NestedMessage nm = 1;
74
75	/* Comment for anm */
76	optional NestedMessage.AnotherNestedMessage anm = 2;
77
78	/* Comment for yanm */
79	optional NestedMessage.AnotherNestedMessage.YetAnotherNestedMessage yanm = 3;
80
81	/* Comment for ne */
82	repeated NestedEnum ne = 4;
83}
84
85/* Comment for AnotherTestMessage */
86message AnotherTestMessage {
87	/* Comment for dne */
88	optional TestMessage.NestedMessage.AnotherNestedMessage.YetAnotherNestedMessage.DeeplyNestedEnum dne = 1;
89
90	/* Comment for map_field1 */
91	map<int32, string> map_field1 = 2;
92
93	/* Comment for map_field2 */
94	map<int64, float> map_field2 = 3;
95
96	/* Comment for map_field3 */
97	map<uint32, bool> map_field3 = 4;
98
99	/* Comment for map_field4 */
100	map<string, AnotherTestMessage> map_field4 = 5;
101
102	/* Comment for RockNRoll */
103	optional group RockNRoll = 6 {
104		/* Comment for beatles */
105		optional string beatles = 1;
106
107		/* Comment for stones */
108		optional string stones = 2;
109
110		/* Comment for doors */
111		optional string doors = 3;
112	}
113
114	/* Comment for atmoo */
115	oneof atmoo {
116		/* Comment for str */
117		string str = 7;
118
119		/* Comment for int */
120		int64 int = 8;
121	}
122
123	extensions 100 to 200;
124}
125
126/* Comment for AnotherTestMessage extensions (2) */
127extend AnotherTestMessage {
128	/* Comment for xtm */
129	optional TestMessage xtm = 100;
130
131	/* Comment for xs */
132	optional string xs = 101;
133}
134
135/* Comment for AnotherTestMessage extensions (3) */
136extend AnotherTestMessage {
137	/* Comment for xi */
138	optional int32 xi = 102;
139
140	/* Comment for xui */
141	optional uint64 xui = 103;
142}
143