|  | // Copyright 2024 The Go Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style | 
|  | // license that can be found in the LICENSE file. | 
|  |  | 
|  | // This testproto explicitly configures the API level of each message. | 
|  | // | 
|  | // This allows creating mixed trees of proto messages on different API levels. | 
|  |  | 
|  | edition = "2023"; | 
|  |  | 
|  | package goproto.proto.test; | 
|  |  | 
|  | import "google/protobuf/go_features.proto"; | 
|  |  | 
|  | option go_package = "google.golang.org/protobuf/internal/testprotos/mixed"; | 
|  |  | 
|  | message Open { | 
|  | option features.(pb.go).api_level = API_OPEN; | 
|  |  | 
|  | // These fields allow for arbitrary mixing. | 
|  | Open open = 1; | 
|  | Hybrid hybrid = 2; | 
|  | Opaque opaque = 3; | 
|  |  | 
|  | int32 optional_int32 = 4; | 
|  | } | 
|  |  | 
|  | message Hybrid { | 
|  | option features.(pb.go).api_level = API_HYBRID; | 
|  |  | 
|  | // These fields allow for arbitrary mixing. | 
|  | Open open = 1; | 
|  | Hybrid hybrid = 2; | 
|  | Opaque opaque = 3; | 
|  |  | 
|  | int32 optional_int32 = 4; | 
|  | } | 
|  |  | 
|  | message Opaque { | 
|  | option features.(pb.go).api_level = API_OPAQUE; | 
|  |  | 
|  | // These fields allow for arbitrary mixing. | 
|  | Open open = 1; | 
|  | Hybrid hybrid = 2; | 
|  | Opaque opaque = 3; | 
|  |  | 
|  | int32 optional_int32 = 4; | 
|  | } | 
|  |  | 
|  | message OpenLazy { | 
|  | option features.(pb.go).api_level = API_OPEN; | 
|  |  | 
|  | // These fields allow for arbitrary mixing. | 
|  | OpenLazy open = 1 [lazy = true]; | 
|  | HybridLazy hybrid = 2 [lazy = true]; | 
|  | OpaqueLazy opaque = 3 [lazy = true]; | 
|  |  | 
|  | int32 optional_int32 = 4; | 
|  | } | 
|  |  | 
|  | message HybridLazy { | 
|  | option features.(pb.go).api_level = API_HYBRID; | 
|  |  | 
|  | // These fields allow for arbitrary mixing. | 
|  | OpenLazy open = 1 [lazy = true]; | 
|  | HybridLazy hybrid = 2 [lazy = true]; | 
|  | OpaqueLazy opaque = 3 [lazy = true]; | 
|  |  | 
|  | int32 optional_int32 = 4; | 
|  | } | 
|  |  | 
|  | message OpaqueLazy { | 
|  | option features.(pb.go).api_level = API_OPAQUE; | 
|  |  | 
|  | // These fields allow for arbitrary mixing. | 
|  | OpenLazy open = 1 [lazy = true]; | 
|  | HybridLazy hybrid = 2 [lazy = true]; | 
|  | OpaqueLazy opaque = 3 [lazy = true]; | 
|  |  | 
|  | int32 optional_int32 = 4; | 
|  | } |