1*1c12ee1eSDan Willemsen// Copyright 2020 The Go Authors. All rights reserved. 2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style 3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file. 4*1c12ee1eSDan Willemsen 5*1c12ee1eSDan Willemsensyntax = "proto2"; 6*1c12ee1eSDan Willemsen 7*1c12ee1eSDan Willemsenpackage testretention; 8*1c12ee1eSDan Willemsen 9*1c12ee1eSDan Willemsenimport "cmd/protoc-gen-go/testdata/retention/options_message.proto"; 10*1c12ee1eSDan Willemsenimport "google/protobuf/descriptor.proto"; 11*1c12ee1eSDan Willemsen 12*1c12ee1eSDan Willemsenoption go_package = "google.golang.org/protobuf/cmd/protoc-gen-go/testdata/retention"; 13*1c12ee1eSDan Willemsen 14*1c12ee1eSDan Willemsenoption (imported_plain_option) = 1; 15*1c12ee1eSDan Willemsenoption (imported_runtime_retention_option) = 2; 16*1c12ee1eSDan Willemsenoption (imported_source_retention_option) = 3; 17*1c12ee1eSDan Willemsen 18*1c12ee1eSDan Willemsen// Retention attributes set directly on custom options 19*1c12ee1eSDan Willemsenextend google.protobuf.FileOptions { 20*1c12ee1eSDan Willemsen optional int32 plain_option = 505092806; 21*1c12ee1eSDan Willemsen optional int32 runtime_retention_option = 505039132 22*1c12ee1eSDan Willemsen [retention = RETENTION_RUNTIME]; 23*1c12ee1eSDan Willemsen optional int32 source_retention_option = 504878676 24*1c12ee1eSDan Willemsen [retention = RETENTION_SOURCE]; 25*1c12ee1eSDan Willemsen} 26*1c12ee1eSDan Willemsen 27*1c12ee1eSDan Willemsenoption (plain_option) = 1; 28*1c12ee1eSDan Willemsenoption (runtime_retention_option) = 2; 29*1c12ee1eSDan Willemsenoption (source_retention_option) = 3; 30*1c12ee1eSDan Willemsen 31*1c12ee1eSDan Willemsenoption (file_option) = { 32*1c12ee1eSDan Willemsen plain_field: 1 33*1c12ee1eSDan Willemsen runtime_retention_field: 2 34*1c12ee1eSDan Willemsen source_retention_field: 3 35*1c12ee1eSDan Willemsen}; 36*1c12ee1eSDan Willemsen 37*1c12ee1eSDan Willemsen// Retention attribute nested inside a repeated message field 38*1c12ee1eSDan Willemsenextend google.protobuf.FileOptions { 39*1c12ee1eSDan Willemsen repeated OptionsMessage repeated_options = 504823570; 40*1c12ee1eSDan Willemsen} 41*1c12ee1eSDan Willemsen 42*1c12ee1eSDan Willemsenoption (repeated_options) = { 43*1c12ee1eSDan Willemsen plain_field: 1 44*1c12ee1eSDan Willemsen runtime_retention_field: 2 45*1c12ee1eSDan Willemsen source_retention_field: 3 46*1c12ee1eSDan Willemsen}; 47*1c12ee1eSDan Willemsen 48*1c12ee1eSDan Willemsenextend google.protobuf.ExtensionRangeOptions { 49*1c12ee1eSDan Willemsen optional OptionsMessage extension_range_option = 504822148; 50*1c12ee1eSDan Willemsen} 51*1c12ee1eSDan Willemsen 52*1c12ee1eSDan Willemsenextend google.protobuf.MessageOptions { 53*1c12ee1eSDan Willemsen optional OptionsMessage message_option = 504820819; 54*1c12ee1eSDan Willemsen} 55*1c12ee1eSDan Willemsen 56*1c12ee1eSDan Willemsenextend google.protobuf.FieldOptions { 57*1c12ee1eSDan Willemsen optional OptionsMessage field_option = 504589219; 58*1c12ee1eSDan Willemsen} 59*1c12ee1eSDan Willemsen 60*1c12ee1eSDan Willemsenextend google.protobuf.OneofOptions { 61*1c12ee1eSDan Willemsen optional OptionsMessage oneof_option = 504479153; 62*1c12ee1eSDan Willemsen} 63*1c12ee1eSDan Willemsen 64*1c12ee1eSDan Willemsenextend google.protobuf.EnumOptions { 65*1c12ee1eSDan Willemsen optional OptionsMessage enum_option = 504451567; 66*1c12ee1eSDan Willemsen} 67*1c12ee1eSDan Willemsen 68*1c12ee1eSDan Willemsenextend google.protobuf.EnumValueOptions { 69*1c12ee1eSDan Willemsen optional OptionsMessage enum_entry_option = 504450522; 70*1c12ee1eSDan Willemsen} 71*1c12ee1eSDan Willemsen 72*1c12ee1eSDan Willemsenextend google.protobuf.ServiceOptions { 73*1c12ee1eSDan Willemsen optional OptionsMessage service_option = 504387709; 74*1c12ee1eSDan Willemsen} 75*1c12ee1eSDan Willemsen 76*1c12ee1eSDan Willemsenextend google.protobuf.MethodOptions { 77*1c12ee1eSDan Willemsen optional OptionsMessage method_option = 504349420; 78*1c12ee1eSDan Willemsen} 79*1c12ee1eSDan Willemsen 80*1c12ee1eSDan Willemsenmessage Extendee { 81*1c12ee1eSDan Willemsen extensions 1, 2; 82*1c12ee1eSDan Willemsen} 83*1c12ee1eSDan Willemsen 84*1c12ee1eSDan Willemsenextend Extendee { 85*1c12ee1eSDan Willemsen optional int32 i = 1 [(field_option) = { 86*1c12ee1eSDan Willemsen plain_field: 1 87*1c12ee1eSDan Willemsen runtime_retention_field: 2 88*1c12ee1eSDan Willemsen source_retention_field: 3 89*1c12ee1eSDan Willemsen }]; 90*1c12ee1eSDan Willemsen} 91*1c12ee1eSDan Willemsen 92*1c12ee1eSDan Willemsenmessage TopLevelMessage { 93*1c12ee1eSDan Willemsen option (message_option) = { 94*1c12ee1eSDan Willemsen plain_field: 1 95*1c12ee1eSDan Willemsen runtime_retention_field: 2 96*1c12ee1eSDan Willemsen source_retention_field: 3 97*1c12ee1eSDan Willemsen }; 98*1c12ee1eSDan Willemsen 99*1c12ee1eSDan Willemsen message NestedMessage { 100*1c12ee1eSDan Willemsen option (message_option) = { 101*1c12ee1eSDan Willemsen plain_field: 1 102*1c12ee1eSDan Willemsen runtime_retention_field: 2 103*1c12ee1eSDan Willemsen source_retention_field: 3 104*1c12ee1eSDan Willemsen }; 105*1c12ee1eSDan Willemsen } 106*1c12ee1eSDan Willemsen 107*1c12ee1eSDan Willemsen enum NestedEnum { 108*1c12ee1eSDan Willemsen option (enum_option) = { 109*1c12ee1eSDan Willemsen plain_field: 1 110*1c12ee1eSDan Willemsen runtime_retention_field: 2 111*1c12ee1eSDan Willemsen source_retention_field: 3 112*1c12ee1eSDan Willemsen }; 113*1c12ee1eSDan Willemsen 114*1c12ee1eSDan Willemsen NESTED_UNKNOWN = 0; 115*1c12ee1eSDan Willemsen } 116*1c12ee1eSDan Willemsen 117*1c12ee1eSDan Willemsen optional float f = 1 [(field_option) = { 118*1c12ee1eSDan Willemsen plain_field: 1 119*1c12ee1eSDan Willemsen runtime_retention_field: 2 120*1c12ee1eSDan Willemsen source_retention_field: 3 121*1c12ee1eSDan Willemsen }]; 122*1c12ee1eSDan Willemsen 123*1c12ee1eSDan Willemsen oneof o { 124*1c12ee1eSDan Willemsen option (oneof_option) = { 125*1c12ee1eSDan Willemsen plain_field: 1 126*1c12ee1eSDan Willemsen runtime_retention_field: 2 127*1c12ee1eSDan Willemsen source_retention_field: 3 128*1c12ee1eSDan Willemsen }; 129*1c12ee1eSDan Willemsen 130*1c12ee1eSDan Willemsen int64 i = 2; 131*1c12ee1eSDan Willemsen } 132*1c12ee1eSDan Willemsen 133*1c12ee1eSDan Willemsen extensions 10 to 100 [(extension_range_option) = { 134*1c12ee1eSDan Willemsen plain_field: 1 135*1c12ee1eSDan Willemsen runtime_retention_field: 2 136*1c12ee1eSDan Willemsen source_retention_field: 3 137*1c12ee1eSDan Willemsen }]; 138*1c12ee1eSDan Willemsen 139*1c12ee1eSDan Willemsen extend Extendee { 140*1c12ee1eSDan Willemsen optional string s = 2 [(field_option) = { 141*1c12ee1eSDan Willemsen plain_field: 1 142*1c12ee1eSDan Willemsen runtime_retention_field: 2 143*1c12ee1eSDan Willemsen source_retention_field: 3 144*1c12ee1eSDan Willemsen }]; 145*1c12ee1eSDan Willemsen } 146*1c12ee1eSDan Willemsen} 147*1c12ee1eSDan Willemsen 148*1c12ee1eSDan Willemsenenum TopLevelEnum { 149*1c12ee1eSDan Willemsen option (enum_option) = { 150*1c12ee1eSDan Willemsen plain_field: 1 151*1c12ee1eSDan Willemsen runtime_retention_field: 2 152*1c12ee1eSDan Willemsen source_retention_field: 3 153*1c12ee1eSDan Willemsen }; 154*1c12ee1eSDan Willemsen 155*1c12ee1eSDan Willemsen TOP_LEVEL_UNKNOWN = 0 [(enum_entry_option) = { 156*1c12ee1eSDan Willemsen plain_field: 1 157*1c12ee1eSDan Willemsen runtime_retention_field: 2 158*1c12ee1eSDan Willemsen source_retention_field: 3 159*1c12ee1eSDan Willemsen }]; 160*1c12ee1eSDan Willemsen} 161*1c12ee1eSDan Willemsen 162*1c12ee1eSDan Willemsenservice Service { 163*1c12ee1eSDan Willemsen option (service_option) = { 164*1c12ee1eSDan Willemsen plain_field: 1 165*1c12ee1eSDan Willemsen runtime_retention_field: 2 166*1c12ee1eSDan Willemsen source_retention_field: 3 167*1c12ee1eSDan Willemsen }; 168*1c12ee1eSDan Willemsen 169*1c12ee1eSDan Willemsen rpc DoStuff(TopLevelMessage) returns (TopLevelMessage) { 170*1c12ee1eSDan Willemsen option (method_option) = { 171*1c12ee1eSDan Willemsen plain_field: 1 172*1c12ee1eSDan Willemsen runtime_retention_field: 2 173*1c12ee1eSDan Willemsen source_retention_field: 3 174*1c12ee1eSDan Willemsen }; 175*1c12ee1eSDan Willemsen } 176*1c12ee1eSDan Willemsen}