| // Copyright 2019 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. |
| |
| package protoimpl |
| |
| import ( |
| "google.golang.org/protobuf/internal/version" |
| ) |
| |
| const ( |
| // MaxVersion is the maximum supported version for generated .pb.go files. |
| // It is always the current version of the module. |
| MaxVersion = version.Minor |
| |
| // GenVersion is the runtime version required by generated .pb.go files. |
| // This is incremented when generated code relies on new functionality |
| // in the runtime. |
| GenVersion = 20 |
| |
| // MinVersion is the minimum supported version for generated .pb.go files. |
| // This is incremented when the runtime drops support for old code. |
| MinVersion = 0 |
| ) |
| |
| // EnforceVersion is used by code generated by protoc-gen-go |
| // to statically enforce minimum and maximum versions of this package. |
| // A compilation failure implies either that: |
| // - the runtime package is too old and needs to be updated OR |
| // - the generated code is too old and needs to be regenerated. |
| // |
| // The runtime package can be upgraded by running: |
| // |
| // go get google.golang.org/protobuf |
| // |
| // The generated code can be regenerated by running: |
| // |
| // protoc --go_out=${PROTOC_GEN_GO_ARGS} ${PROTO_FILES} |
| // |
| // Example usage by generated code: |
| // |
| // const ( |
| // // Verify that this generated code is sufficiently up-to-date. |
| // _ = protoimpl.EnforceVersion(genVersion - protoimpl.MinVersion) |
| // // Verify that runtime/protoimpl is sufficiently up-to-date. |
| // _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - genVersion) |
| // ) |
| // |
| // The genVersion is the current minor version used to generated the code. |
| // This compile-time check relies on negative integer overflow of a uint |
| // being a compilation failure (guaranteed by the Go specification). |
| type EnforceVersion uint |
| |
| // This enforces the following invariant: |
| // |
| // MinVersion ≤ GenVersion ≤ MaxVersion |
| const ( |
| _ = EnforceVersion(GenVersion - MinVersion) |
| _ = EnforceVersion(MaxVersion - GenVersion) |
| ) |