github.com/bakjos/protoreflect@v1.9.2/desc/protoprint/testfiles/desc_test_complex-compact.proto (about) 1 syntax = "proto2"; 2 package foo.bar; 3 option go_package = "github.com/bakjos/protoreflect/internal/testprotos"; 4 import "google/protobuf/descriptor.proto"; 5 message Simple { 6 optional string name = 1; 7 optional uint64 id = 2; 8 } 9 extend google.protobuf.ExtensionRangeOptions { 10 optional string label = 20000; 11 } 12 message Test { 13 optional string foo = 1 [json_name = "|foo|"]; 14 repeated int32 array = 2; 15 optional Simple s = 3; 16 repeated Simple r = 4; 17 map<string, int32> m = 5; 18 optional bytes b = 6 [default = "\000\001\002\003\004\005\006\007fubar!"]; 19 extensions 100 to 200; 20 extensions 249, 300 to 350, 500 to 550, 20000 to max [(label) = "jazz"]; 21 message Nested { 22 extend google.protobuf.MessageOptions { 23 optional int32 fooblez = 20003; 24 } 25 message _NestedNested { 26 enum EEE { 27 OK = 0; 28 V1 = 1; 29 V2 = 2; 30 V3 = 3; 31 V4 = 4; 32 V5 = 5; 33 V6 = 6; 34 } 35 option (fooblez) = 10101; 36 extend Test { 37 optional string _garblez = 100; 38 } 39 option (rept) = { foo:"goo" [foo.bar.Test.Nested._NestedNested._garblez]:"boo" }; 40 message NestedNestedNested { 41 option (rept) = { foo:"hoo" [foo.bar.Test.Nested._NestedNested._garblez]:"spoo" }; 42 optional Test Test = 1; 43 } 44 } 45 } 46 } 47 enum EnumWithReservations { 48 X = 2; 49 Y = 3; 50 Z = 4; 51 reserved 1000 to max, -2 to 1, 5 to 10, 12 to 15, 18, -5 to -3; 52 reserved "C", "B", "A"; 53 } 54 message MessageWithReservations { 55 reserved 5 to 10, 12 to 15, 18, 1000 to max; 56 reserved "A", "B", "C"; 57 } 58 message MessageWithMap { 59 map<string, Simple> vals = 1; 60 } 61 extend google.protobuf.MessageOptions { 62 repeated Test rept = 20002; 63 optional Test.Nested._NestedNested.EEE eee = 20010; 64 optional Another a = 20020; 65 optional MessageWithMap map_vals = 20030; 66 } 67 message Another { 68 option (rept) = { foo:"abc" array:1 array:2 array:3 s:<name:"foo" id:123 > r:<name:"f" > r:<name:"s" > r:<id:456 > }; 69 option (rept) = { foo:"def" array:3 array:2 array:1 s:<name:"bar" id:321 > r:<name:"g" > r:<name:"s" > }; 70 option (rept) = { foo:"def" }; 71 option (eee) = V1; 72 option (a) = { test:<foo:"m&m" array:1 array:2 s:<name:"yolo" id:98765 > m:<key:"bar" value:200 > m:<key:"foo" value:100 > [foo.bar.Test.Nested._NestedNested._garblez]:"whoah!" > fff:OK }; 73 option (map_vals) = { vals:<key:"" value:<> > vals:<key:"bar" value:<name:"baz" > > vals:<key:"foo" value:<> > }; // no key, no value 74 optional Test test = 1; 75 optional Test.Nested._NestedNested.EEE fff = 2 [default = V1]; 76 } 77 message Validator { 78 optional bool authenticated = 1; 79 enum Action { 80 LOGIN = 0; 81 READ = 1; 82 WRITE = 2; 83 } 84 message Permission { 85 optional Action action = 1; 86 optional string entity = 2; 87 } 88 repeated Permission permission = 2; 89 } 90 extend google.protobuf.MethodOptions { 91 optional Validator validator = 12345; 92 } 93 service TestTestService { 94 rpc UserAuth ( Test ) returns ( Test ) { 95 option (validator) = { authenticated:true permission:<action:LOGIN entity:"client" > }; 96 } 97 rpc Get ( Test ) returns ( Test ) { 98 option (validator) = { authenticated:true permission:<action:READ entity:"user" > }; 99 } 100 } 101 message Rule { 102 message StringRule { 103 optional string pattern = 1; 104 optional bool allow_empty = 2; 105 optional int32 min_len = 3; 106 optional int32 max_len = 4; 107 } 108 message IntRule { 109 optional int64 min_val = 1; 110 optional uint64 max_val = 2; 111 } 112 message RepeatedRule { 113 optional bool allow_empty = 1; 114 optional int32 min_items = 2; 115 optional int32 max_items = 3; 116 optional Rule items = 4; 117 } 118 oneof rule { 119 StringRule string = 1; 120 RepeatedRule repeated = 2; 121 IntRule int = 3; 122 group FloatRule = 4 { 123 optional double min_val = 1; 124 optional double max_val = 2; 125 } 126 } 127 } 128 extend google.protobuf.FieldOptions { 129 optional Rule rules = 1234; 130 } 131 message IsAuthorizedReq { 132 repeated string subjects = 1 [(rules) = { repeated:<min_items:1 items:<string:<pattern:"^(?:(?:team:(?:local|ldap))|user):[[:alnum:]_-]+$" > > > }]; 133 } 134 // tests cases where field names collide with keywords 135 message KeywordCollisions { 136 optional bool syntax = 1; 137 optional bool import = 2; 138 optional bool public = 3; 139 optional bool weak = 4; 140 optional bool package = 5; 141 optional string string = 6; 142 optional bytes bytes = 7; 143 optional int32 int32 = 8; 144 optional int64 int64 = 9; 145 optional uint32 uint32 = 10; 146 optional uint64 uint64 = 11; 147 optional sint32 sint32 = 12; 148 optional sint64 sint64 = 13; 149 optional fixed32 fixed32 = 14; 150 optional fixed64 fixed64 = 15; 151 optional sfixed32 sfixed32 = 16; 152 optional sfixed64 sfixed64 = 17; 153 optional bool bool = 18; 154 optional float float = 19; 155 optional double double = 20; 156 optional bool optional = 21; 157 optional bool repeated = 22; 158 optional bool required = 23; 159 optional bool message = 24; 160 optional bool enum = 25; 161 optional bool service = 26; 162 optional bool rpc = 27; 163 optional bool option = 28; 164 optional bool extend = 29; 165 optional bool extensions = 30; 166 optional bool reserved = 31; 167 optional bool to = 32; 168 optional int32 true = 33; 169 optional int32 false = 34; 170 optional int32 default = 35; 171 } 172 extend google.protobuf.FieldOptions { 173 optional bool syntax = 20001; 174 optional bool import = 20002; 175 optional bool public = 20003; 176 optional bool weak = 20004; 177 optional bool package = 20005; 178 optional string string = 20006; 179 optional bytes bytes = 20007; 180 optional int32 int32 = 20008; 181 optional int64 int64 = 20009; 182 optional uint32 uint32 = 20010; 183 optional uint64 uint64 = 20011; 184 optional sint32 sint32 = 20012; 185 optional sint64 sint64 = 20013; 186 optional fixed32 fixed32 = 20014; 187 optional fixed64 fixed64 = 20015; 188 optional sfixed32 sfixed32 = 20016; 189 optional sfixed64 sfixed64 = 20017; 190 optional bool bool = 20018; 191 optional float float = 20019; 192 optional double double = 20020; 193 optional bool optional = 20021; 194 optional bool repeated = 20022; 195 optional bool required = 20023; 196 optional bool message = 20024; 197 optional bool enum = 20025; 198 optional bool service = 20026; 199 optional bool rpc = 20027; 200 optional bool option = 20028; 201 optional bool extend = 20029; 202 optional bool extensions = 20030; 203 optional bool reserved = 20031; 204 optional bool to = 20032; 205 optional int32 true = 20033; 206 optional int32 false = 20034; 207 optional int32 default = 20035; 208 optional KeywordCollisions boom = 20036; 209 } 210 message KeywordCollisionOptions { 211 optional uint64 id = 1 [(syntax) = true, (import) = true, (public) = true, (weak) = true, (package) = true, (string) = "string", (bytes) = "bytes", (bool) = true, (float) = 3.140000, (double) = 3.141590, (int32) = 32, (int64) = 64, (uint32) = 3200, (uint64) = 6400, (sint32) = -32, (sint64) = -64, (fixed32) = 3232, (fixed64) = 6464, (sfixed32) = -3232, (sfixed64) = -6464, (optional) = true, (repeated) = true, (required) = true, (message) = true, (enum) = true, (service) = true, (rpc) = true, (option) = true, (extend) = true, (extensions) = true, (reserved) = true, (to) = true, (true) = 111, (false) = -111, (default) = 222]; 212 optional string name = 2 [(boom) = { syntax:true import:true public:true weak:true package:true string:"string" bytes:"bytes" int32:32 int64:64 uint32:3200 uint64:6400 sint32:-32 sint64:-64 fixed32:3232 fixed64:6464 sfixed32:-3232 sfixed64:-6464 bool:true float:3.14 double:3.14159 optional:true repeated:true required:true message:true enum:true service:true rpc:true option:true extend:true extensions:true reserved:true to:true true:111 false:-111 default:222 }]; 213 }