-------- foo.bar (*linker.result) -------- syntax = "proto2"; package foo.bar; import "desc_test_options.proto"; import public "google/protobuf/empty.proto"; option go_package = "github.com/jhump/protoreflect/v2/internal/testprotos"; message AnEmptyMessage { } // We need a request for our RPC service below. message Request { option deprecated = true; option (.testprotos.mfubar) = true; // A field comment repeated int32 ids = 1 [ json_name = "|foo|", packed = true, (.testprotos.ffubar) = "abc", (.testprotos.ffubarb) = "xyz" ]; // label comment optional string name = 2 [default = "fubar"]; // Group comment with emoji 😀 😍 👻 ❤ 💯 💥 🐶 🦂 🥑 🍻 🌍 🚕 🪐 optional group Extras = 3 { option no_standard_descriptor_accessor = false; option (.testprotos.mfubar) = false; optional double dbl = 1; optional float flt = 2; // Leading comment... optional string str = 3; } // can be this or that oneof abc { string this = 4; int32 that = 5; } // can be these or those oneof xyz { option (.testprotos.oofubar) = "whoops, this has invalid UTF8! \274\377"; string these = 6; int32 those = 7; } // map field map things = 8; enum MarioCharacters { option allow_alias = true; option (.testprotos.efubar) = 123; option (.testprotos.efubars) = -321; SNIFIT = -101; MARIO = 1 [ (.testprotos.evfubar) = 278, (.testprotos.evfubars) = -314 ]; LUIGI = 2 [ (.testprotos.evfubaru) = 200, (.testprotos.evfubaruf) = 100 ]; PEACH = 3; BOWSER = 4; WARIO = 5; WALUIGI = 6; HEY_HO = 7; SHY_GUY = 7 [(.testprotos.evfubarsf) = 10101]; KAMEK = 8; MAGIKOOPA = 8; } extensions 100 to 200; extensions 201 to 250 [ (.testprotos.exfubar) = "splat!", (.testprotos.exfubarb) = "\000\001\002\003\004\005\006\007" ]; reserved 10 to 20, 30 to 50; reserved "bar", "baz", "foo"; } // Service comment service RpcService { option deprecated = false; option (.testprotos.sfubar) = { id: 100, name: "bob" }; option (.testprotos.sfubare) = VALUE; // Method comment rpc StreamingRpc ( stream .foo.bar.Request ) returns ( .foo.bar.Request ); rpc UnaryRpc ( .foo.bar.Request ) returns ( .google.protobuf.Empty ) { option deprecated = true; option (.testprotos.mtfubar) = 12.340000; option (.testprotos.mtfubard) = 123.456000; } } extend .foo.bar.Request { // comment for guid1 optional uint64 guid1 = 123; // ... and a comment for guid2 optional uint64 guid2 = 124; } -------- foo.bar.Request (*linker.msgDescriptor) -------- // We need a request for our RPC service below. message Request { option deprecated = true; option (.testprotos.mfubar) = true; // A field comment repeated int32 ids = 1 [ json_name = "|foo|", packed = true, (.testprotos.ffubar) = "abc", (.testprotos.ffubarb) = "xyz" ]; // label comment optional string name = 2 [default = "fubar"]; // Group comment with emoji 😀 😍 👻 ❤ 💯 💥 🐶 🦂 🥑 🍻 🌍 🚕 🪐 optional group Extras = 3 { option no_standard_descriptor_accessor = false; option (.testprotos.mfubar) = false; optional double dbl = 1; optional float flt = 2; // Leading comment... optional string str = 3; } // can be this or that oneof abc { string this = 4; int32 that = 5; } // can be these or those oneof xyz { option (.testprotos.oofubar) = "whoops, this has invalid UTF8! \274\377"; string these = 6; int32 those = 7; } // map field map things = 8; enum MarioCharacters { option allow_alias = true; option (.testprotos.efubar) = 123; option (.testprotos.efubars) = -321; SNIFIT = -101; MARIO = 1 [ (.testprotos.evfubar) = 278, (.testprotos.evfubars) = -314 ]; LUIGI = 2 [ (.testprotos.evfubaru) = 200, (.testprotos.evfubaruf) = 100 ]; PEACH = 3; BOWSER = 4; WARIO = 5; WALUIGI = 6; HEY_HO = 7; SHY_GUY = 7 [(.testprotos.evfubarsf) = 10101]; KAMEK = 8; MAGIKOOPA = 8; } extensions 100 to 200; extensions 201 to 250 [ (.testprotos.exfubar) = "splat!", (.testprotos.exfubarb) = "\000\001\002\003\004\005\006\007" ]; reserved 10 to 20, 30 to 50; reserved "bar", "baz", "foo"; } -------- foo.bar.Request.ids (*linker.fldDescriptor) -------- // A field comment repeated int32 ids = 1 [ json_name = "|foo|", packed = true, (.testprotos.ffubar) = "abc", (.testprotos.ffubarb) = "xyz" ]; -------- foo.bar.Request.name (*linker.fldDescriptor) -------- // label comment optional string name = 2 [default = "fubar"]; -------- foo.bar.Request.extras (*linker.fldDescriptor) -------- // Group comment with emoji 😀 😍 👻 ❤ 💯 💥 🐶 🦂 🥑 🍻 🌍 🚕 🪐 optional group Extras = 3 { option no_standard_descriptor_accessor = false; option (.testprotos.mfubar) = false; optional double dbl = 1; optional float flt = 2; // Leading comment... optional string str = 3; } -------- foo.bar.Request.this (*linker.fldDescriptor) -------- string this = 4; -------- foo.bar.Request.that (*linker.fldDescriptor) -------- int32 that = 5; -------- foo.bar.Request.these (*linker.fldDescriptor) -------- string these = 6; -------- foo.bar.Request.those (*linker.fldDescriptor) -------- int32 those = 7; -------- foo.bar.Request.things (*linker.fldDescriptor) -------- // map field map things = 8; -------- foo.bar.Request.abc (*linker.oneofDescriptor) -------- oneof abc { string this = 4; int32 that = 5; } -------- foo.bar.Request.xyz (*linker.oneofDescriptor) -------- oneof xyz { option (.testprotos.oofubar) = "whoops, this has invalid UTF8! \274\377"; string these = 6; int32 those = 7; } -------- foo.bar.Request.Extras (*linker.msgDescriptor) -------- // Group comment with emoji 😀 😍 👻 ❤ 💯 💥 🐶 🦂 🥑 🍻 🌍 🚕 🪐 message Extras { option no_standard_descriptor_accessor = false; option (.testprotos.mfubar) = false; optional double dbl = 1; optional float flt = 2; // Leading comment... optional string str = 3; } -------- foo.bar.Request.Extras.dbl (*linker.fldDescriptor) -------- optional double dbl = 1; -------- foo.bar.Request.Extras.flt (*linker.fldDescriptor) -------- optional float flt = 2; -------- foo.bar.Request.Extras.str (*linker.fldDescriptor) -------- // Leading comment... optional string str = 3; -------- foo.bar.Request.ThingsEntry (*linker.msgDescriptor) -------- message ThingsEntry { option map_entry = true; optional string key = 1; optional string value = 2; } -------- foo.bar.Request.ThingsEntry.key (*linker.fldDescriptor) -------- optional string key = 1; -------- foo.bar.Request.ThingsEntry.value (*linker.fldDescriptor) -------- optional string value = 2; -------- foo.bar.Request.MarioCharacters (*linker.enumDescriptor) -------- enum MarioCharacters { option allow_alias = true; option (.testprotos.efubar) = 123; option (.testprotos.efubars) = -321; SNIFIT = -101; MARIO = 1 [ (.testprotos.evfubar) = 278, (.testprotos.evfubars) = -314 ]; LUIGI = 2 [ (.testprotos.evfubaru) = 200, (.testprotos.evfubaruf) = 100 ]; PEACH = 3; BOWSER = 4; WARIO = 5; WALUIGI = 6; HEY_HO = 7; SHY_GUY = 7 [(.testprotos.evfubarsf) = 10101]; KAMEK = 8; MAGIKOOPA = 8; } -------- foo.bar.Request.MARIO (*linker.enValDescriptor) -------- MARIO = 1 [ (.testprotos.evfubar) = 278, (.testprotos.evfubars) = -314 ]; -------- foo.bar.Request.LUIGI (*linker.enValDescriptor) -------- LUIGI = 2 [ (.testprotos.evfubaru) = 200, (.testprotos.evfubaruf) = 100 ]; -------- foo.bar.Request.PEACH (*linker.enValDescriptor) -------- PEACH = 3; -------- foo.bar.Request.BOWSER (*linker.enValDescriptor) -------- BOWSER = 4; -------- foo.bar.Request.WARIO (*linker.enValDescriptor) -------- WARIO = 5; -------- foo.bar.Request.WALUIGI (*linker.enValDescriptor) -------- WALUIGI = 6; -------- foo.bar.Request.SHY_GUY (*linker.enValDescriptor) -------- SHY_GUY = 7 [(.testprotos.evfubarsf) = 10101]; -------- foo.bar.Request.HEY_HO (*linker.enValDescriptor) -------- HEY_HO = 7; -------- foo.bar.Request.MAGIKOOPA (*linker.enValDescriptor) -------- MAGIKOOPA = 8; -------- foo.bar.Request.KAMEK (*linker.enValDescriptor) -------- KAMEK = 8; -------- foo.bar.Request.SNIFIT (*linker.enValDescriptor) -------- SNIFIT = -101; -------- foo.bar.AnEmptyMessage (*linker.msgDescriptor) -------- message AnEmptyMessage { } -------- foo.bar.guid1 (*linker.extTypeDescriptor) -------- extend .foo.bar.Request { // comment for guid1 optional uint64 guid1 = 123; } -------- foo.bar.guid2 (*linker.extTypeDescriptor) -------- extend .foo.bar.Request { // ... and a comment for guid2 optional uint64 guid2 = 124; } -------- foo.bar.RpcService (*linker.svcDescriptor) -------- // Service comment service RpcService { option deprecated = false; option (.testprotos.sfubar) = { id: 100, name: "bob" }; option (.testprotos.sfubare) = VALUE; // Method comment rpc StreamingRpc ( stream .foo.bar.Request ) returns ( .foo.bar.Request ); rpc UnaryRpc ( .foo.bar.Request ) returns ( .google.protobuf.Empty ) { option deprecated = true; option (.testprotos.mtfubar) = 12.340000; option (.testprotos.mtfubard) = 123.456000; } } -------- foo.bar.RpcService.StreamingRpc (*linker.mtdDescriptor) -------- // Method comment rpc StreamingRpc ( stream .foo.bar.Request ) returns ( .foo.bar.Request ); -------- foo.bar.RpcService.UnaryRpc (*linker.mtdDescriptor) -------- rpc UnaryRpc ( .foo.bar.Request ) returns ( .google.protobuf.Empty ) { option deprecated = true; option (.testprotos.mtfubar) = 12.340000; option (.testprotos.mtfubard) = 123.456000; }