github.com/jhump/protoreflect@v1.16.0/desc/protoprint/testfiles/desc_test_complex-no-trailing-comments.proto (about)

     1  syntax = "proto2";
     2  
     3  package foo.bar;
     4  
     5  option go_package = "github.com/jhump/protoreflect/internal/testprotos";
     6  
     7  import "google/protobuf/descriptor.proto";
     8  
     9  message Simple {
    10    optional string name = 1;
    11  
    12    optional uint64 id = 2;
    13  
    14    optional bytes _extra = 3;
    15  
    16    repeated bool _ = 4;
    17  }
    18  
    19  extend google.protobuf.ExtensionRangeOptions {
    20    optional string label = 20000;
    21  }
    22  
    23  message Test {
    24    optional string foo = 1 [json_name = "|foo|"];
    25  
    26    repeated int32 array = 2;
    27  
    28    optional Simple s = 3;
    29  
    30    repeated Simple r = 4;
    31  
    32    map<string, int32> m = 5;
    33  
    34    optional bytes b = 6 [default = "\000\001\002\003\004\005\006\007fubar!"];
    35  
    36    extensions 100 to 200;
    37  
    38    extensions 249, 300 to 350, 500 to 550, 20000 to max [(label) = "jazz \"hands\""];
    39  
    40    message Nested {
    41      extend google.protobuf.MessageOptions {
    42        optional int32 fooblez = 20003;
    43      }
    44  
    45      message _NestedNested {
    46        enum EEE {
    47          OK = 0;
    48  
    49          V1 = 1;
    50  
    51          V2 = 2;
    52  
    53          V3 = 3;
    54  
    55          V4 = 4;
    56  
    57          V5 = 5;
    58  
    59          V6 = 6;
    60        }
    61  
    62        option (fooblez) = 10101;
    63  
    64        extend Test {
    65          optional string _garblez = 100;
    66        }
    67  
    68        option (rept) = { foo: "goo", [Test.Nested._NestedNested._garblez]: "boo" };
    69  
    70        message NestedNestedNested {
    71          option (rept) = { foo: "hoo", [Test.Nested._NestedNested._garblez]: "spoo" };
    72  
    73          optional Test Test = 1;
    74        }
    75      }
    76    }
    77  }
    78  
    79  enum EnumWithReservations {
    80    X = 2;
    81  
    82    Y = 3;
    83  
    84    Z = 4;
    85  
    86    reserved 1000 to max, -2 to 1, 5 to 10, 12 to 15, 18, -5 to -3;
    87  
    88    reserved "C", "B", "A";
    89  }
    90  
    91  message MessageWithReservations {
    92    reserved 5 to 10, 12 to 15, 18, 1000 to max;
    93  
    94    reserved "A", "B", "C";
    95  }
    96  
    97  message MessageWithMap {
    98    map<string, Simple> vals = 1;
    99  }
   100  
   101  extend google.protobuf.MessageOptions {
   102    repeated Test rept = 20002;
   103  
   104    optional Test.Nested._NestedNested.EEE eee = 20010;
   105  
   106    optional Another a = 20020;
   107  
   108    optional MessageWithMap map_vals = 20030;
   109  }
   110  
   111  message Another {
   112    option (rept) = {
   113      foo: "abc",
   114      array: [ 1, 2, 3 ],
   115      s: { name: "foo", id: 123 },
   116      r: [ { name: "f" }, { name: "s" }, { id: 456 } ]
   117    };
   118    option (rept) = {
   119      foo: "def",
   120      array: [ 3, 2, 1 ],
   121      s: { name: "bar", id: 321 },
   122      r: [ { name: "g" }, { name: "s" } ]
   123    };
   124    option (rept) = { foo: "def" };
   125  
   126    option (eee) = V1;
   127  
   128    option (a) = {
   129      test: {
   130        foo: "m&m",
   131        array: [ 1, 2 ],
   132        s: { name: "yolo", id: 98765 },
   133        m: [
   134          { key: "bar", value: 200 },
   135          { key: "foo", value: 100 }
   136        ],
   137        [Test.Nested._NestedNested._garblez]: "whoah!"
   138      },
   139      fff: OK
   140    };
   141  
   142    option (map_vals) = {
   143      vals: [
   144        { key: "", value: { } },
   145        { key: "bar", value: { name: "baz" } },
   146        { key: "foo", value: { } }
   147      ]
   148    };
   149  
   150    optional Test test = 1;
   151  
   152    optional Test.Nested._NestedNested.EEE fff = 2 [default = V1];
   153  }
   154  
   155  message Validator {
   156    optional bool authenticated = 1;
   157  
   158    enum Action {
   159      LOGIN = 0;
   160  
   161      READ = 1;
   162  
   163      WRITE = 2;
   164    }
   165  
   166    message Permission {
   167      optional Action action = 1;
   168  
   169      optional string entity = 2;
   170    }
   171  
   172    repeated Permission permission = 2;
   173  }
   174  
   175  extend google.protobuf.MethodOptions {
   176    optional Validator validator = 12345;
   177  }
   178  
   179  service TestTestService {
   180    rpc UserAuth ( Test ) returns ( Test ) {
   181      option (validator) = {
   182        authenticated: true,
   183        permission: [ { action: LOGIN, entity: "client" } ]
   184      };
   185    }
   186  
   187    rpc Get ( Test ) returns ( Test ) {
   188      option (validator) = {
   189        authenticated: true,
   190        permission: [ { action: READ, entity: "user" } ]
   191      };
   192    }
   193  }
   194  
   195  message Rule {
   196    message StringRule {
   197      optional string pattern = 1;
   198  
   199      optional bool allow_empty = 2;
   200  
   201      optional int32 min_len = 3;
   202  
   203      optional int32 max_len = 4;
   204    }
   205  
   206    message IntRule {
   207      optional int64 min_val = 1;
   208  
   209      optional uint64 max_val = 2;
   210    }
   211  
   212    message RepeatedRule {
   213      optional bool allow_empty = 1;
   214  
   215      optional int32 min_items = 2;
   216  
   217      optional int32 max_items = 3;
   218  
   219      optional Rule items = 4;
   220    }
   221  
   222    oneof rule {
   223      StringRule string = 1;
   224  
   225      RepeatedRule repeated = 2;
   226  
   227      IntRule int = 3;
   228  
   229      group FloatRule = 4 {
   230        optional double min_val = 1;
   231  
   232        optional double max_val = 2;
   233      }
   234    }
   235  }
   236  
   237  extend google.protobuf.FieldOptions {
   238    optional Rule rules = 1234;
   239  }
   240  
   241  message IsAuthorizedReq {
   242    repeated string subjects = 1 [
   243      (rules) = {
   244        repeated: {
   245          min_items: 1,
   246          items: {
   247            string: { pattern: "^(?:(?:team:(?:local|ldap))|user):[[:alnum:]_-]+$" }
   248          }
   249        }
   250      }
   251    ];
   252  }
   253  
   254  // tests cases where field names collide with keywords
   255  
   256  message KeywordCollisions {
   257    optional bool syntax = 1;
   258  
   259    optional bool import = 2;
   260  
   261    optional bool public = 3;
   262  
   263    optional bool weak = 4;
   264  
   265    optional bool package = 5;
   266  
   267    optional string string = 6;
   268  
   269    optional bytes bytes = 7;
   270  
   271    optional int32 int32 = 8;
   272  
   273    optional int64 int64 = 9;
   274  
   275    optional uint32 uint32 = 10;
   276  
   277    optional uint64 uint64 = 11;
   278  
   279    optional sint32 sint32 = 12;
   280  
   281    optional sint64 sint64 = 13;
   282  
   283    optional fixed32 fixed32 = 14;
   284  
   285    optional fixed64 fixed64 = 15;
   286  
   287    optional sfixed32 sfixed32 = 16;
   288  
   289    optional sfixed64 sfixed64 = 17;
   290  
   291    optional bool bool = 18;
   292  
   293    optional float float = 19;
   294  
   295    optional double double = 20;
   296  
   297    optional bool optional = 21;
   298  
   299    optional bool repeated = 22;
   300  
   301    optional bool required = 23;
   302  
   303    optional bool message = 24;
   304  
   305    optional bool enum = 25;
   306  
   307    optional bool service = 26;
   308  
   309    optional bool rpc = 27;
   310  
   311    optional bool option = 28;
   312  
   313    optional bool extend = 29;
   314  
   315    optional bool extensions = 30;
   316  
   317    optional bool reserved = 31;
   318  
   319    optional bool to = 32;
   320  
   321    optional int32 true = 33;
   322  
   323    optional int32 false = 34;
   324  
   325    optional int32 default = 35;
   326  }
   327  
   328  extend google.protobuf.FieldOptions {
   329    optional bool syntax = 20001;
   330  
   331    optional bool import = 20002;
   332  
   333    optional bool public = 20003;
   334  
   335    optional bool weak = 20004;
   336  
   337    optional bool package = 20005;
   338  
   339    optional string string = 20006;
   340  
   341    optional bytes bytes = 20007;
   342  
   343    optional int32 int32 = 20008;
   344  
   345    optional int64 int64 = 20009;
   346  
   347    optional uint32 uint32 = 20010;
   348  
   349    optional uint64 uint64 = 20011;
   350  
   351    optional sint32 sint32 = 20012;
   352  
   353    optional sint64 sint64 = 20013;
   354  
   355    optional fixed32 fixed32 = 20014;
   356  
   357    optional fixed64 fixed64 = 20015;
   358  
   359    optional sfixed32 sfixed32 = 20016;
   360  
   361    optional sfixed64 sfixed64 = 20017;
   362  
   363    optional bool bool = 20018;
   364  
   365    optional float float = 20019;
   366  
   367    optional double double = 20020;
   368  
   369    optional bool optional = 20021;
   370  
   371    optional bool repeated = 20022;
   372  
   373    optional bool required = 20023;
   374  
   375    optional bool message = 20024;
   376  
   377    optional bool enum = 20025;
   378  
   379    optional bool service = 20026;
   380  
   381    optional bool rpc = 20027;
   382  
   383    optional bool option = 20028;
   384  
   385    optional bool extend = 20029;
   386  
   387    optional bool extensions = 20030;
   388  
   389    optional bool reserved = 20031;
   390  
   391    optional bool to = 20032;
   392  
   393    optional int32 true = 20033;
   394  
   395    optional int32 false = 20034;
   396  
   397    optional int32 default = 20035;
   398  
   399    optional KeywordCollisions boom = 20036;
   400  }
   401  
   402  message KeywordCollisionOptions {
   403    optional uint64 id = 1 [
   404      (syntax) = true,
   405      (import) = true,
   406      (public) = true,
   407      (weak) = true,
   408      (package) = true,
   409      (string) = "string蝥\U00107F6D\007\010\014\n\r\t\013\\\"'?B",
   410      (bytes) = "bytes\350\235\245\364\207\275\255\007\010\014\n\r\t\013\\\"'?B",
   411      (bool) = true,
   412      (float) = 3.140000,
   413      (double) = 3.141590,
   414      (int32) = 32,
   415      (int64) = 64,
   416      (uint32) = 3200,
   417      (uint64) = 6400,
   418      (sint32) = -32,
   419      (sint64) = -64,
   420      (fixed32) = 3232,
   421      (fixed64) = 6464,
   422      (sfixed32) = -3232,
   423      (sfixed64) = -6464,
   424      (optional) = true,
   425      (repeated) = true,
   426      (required) = true,
   427      (message) = true,
   428      (enum) = true,
   429      (service) = true,
   430      (rpc) = true,
   431      (option) = true,
   432      (extend) = true,
   433      (extensions) = true,
   434      (reserved) = true,
   435      (to) = true,
   436      (true) = 111,
   437      (false) = -111,
   438      (default) = 222
   439    ];
   440  
   441    optional string name = 2 [
   442      (boom) = {
   443        syntax: true,
   444        import: true,
   445        public: true,
   446        weak: true,
   447        package: true,
   448        string: "string",
   449        bytes: "bytes",
   450        int32: 32,
   451        int64: 64,
   452        uint32: 3200,
   453        uint64: 6400,
   454        sint32: -32,
   455        sint64: -64,
   456        fixed32: 3232,
   457        fixed64: 6464,
   458        sfixed32: -3232,
   459        sfixed64: -6464,
   460        bool: true,
   461        float: 3.140000,
   462        double: 3.141590,
   463        optional: true,
   464        repeated: true,
   465        required: true,
   466        message: true,
   467        enum: true,
   468        service: true,
   469        rpc: true,
   470        option: true,
   471        extend: true,
   472        extensions: true,
   473        reserved: true,
   474        to: true,
   475        true: 111,
   476        false: -111,
   477        default: 222
   478      }
   479    ];
   480  }