chore: bump go to 1.22
This commit is contained in:
+1
-1
@@ -12,7 +12,7 @@ OC_CI_BAZEL_BUILDIFIER = "owncloudci/bazel-buildifier:latest"
|
|||||||
OC_CI_CLAMAVD = "owncloudci/clamavd"
|
OC_CI_CLAMAVD = "owncloudci/clamavd"
|
||||||
OC_CI_DRONE_ANSIBLE = "owncloudci/drone-ansible:latest"
|
OC_CI_DRONE_ANSIBLE = "owncloudci/drone-ansible:latest"
|
||||||
OC_CI_DRONE_SKIP_PIPELINE = "owncloudci/drone-skip-pipeline"
|
OC_CI_DRONE_SKIP_PIPELINE = "owncloudci/drone-skip-pipeline"
|
||||||
OC_CI_GOLANG = "owncloudci/golang:1.21"
|
OC_CI_GOLANG = "owncloudci/golang:1.22"
|
||||||
OC_CI_NODEJS = "owncloudci/nodejs:%s"
|
OC_CI_NODEJS = "owncloudci/nodejs:%s"
|
||||||
OC_CI_PHP = "owncloudci/php:%s"
|
OC_CI_PHP = "owncloudci/php:%s"
|
||||||
OC_CI_WAIT_FOR = "owncloudci/wait-for:latest"
|
OC_CI_WAIT_FOR = "owncloudci/wait-for:latest"
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ COPY ./ /ocis/
|
|||||||
WORKDIR /ocis/ocis
|
WORKDIR /ocis/ocis
|
||||||
RUN make ci-node-generate
|
RUN make ci-node-generate
|
||||||
|
|
||||||
FROM owncloudci/golang:1.21 as build
|
FROM owncloudci/golang:1.22 as build
|
||||||
|
|
||||||
COPY --from=generate /ocis /ocis
|
COPY --from=generate /ocis /ocis
|
||||||
|
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ See the [Quick Guide](https://doc.owncloud.com/ocis/next/quickguide/quickguide.h
|
|||||||
|
|
||||||
### Use the ocis Repo as Source
|
### Use the ocis Repo as Source
|
||||||
|
|
||||||
Use this method to run an instance with the latest code. This is only recommended for development purposes. The minimum go version required is 1.21. Note that you need as prerequisite a C compile environment installed because some dependences like reva have components that require c-go libraries/tool-chains. The command installing for debian based systems is: `sudo apt install build-essentials`. To build and run a local instance with demo users:
|
Use this method to run an instance with the latest code. This is only recommended for development purposes. The minimum go version required is 1.22. Note that you need as prerequisite a C compile environment installed because some dependences like reva have components that require c-go libraries/tool-chains. The command installing for debian based systems is: `sudo apt install build-essentials`. To build and run a local instance with demo users:
|
||||||
|
|
||||||
```console
|
```console
|
||||||
# get the source
|
# get the source
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
Enhancement: Update to go 1.22
|
||||||
|
|
||||||
|
We have updated go to version 1.22.
|
||||||
|
|
||||||
|
https://github.com/owncloud/ocis/pull/8586
|
||||||
@@ -16,7 +16,7 @@ So we are trying to reflect this in the tooling. It should be kept simple and qu
|
|||||||
|
|
||||||
Besides standard development tools like git and a text editor, you need the following software for development:
|
Besides standard development tools like git and a text editor, you need the following software for development:
|
||||||
|
|
||||||
- Go >= v1.21 ([install instructions](https://golang.org/doc/install))
|
- Go >= v1.22 ([install instructions](https://golang.org/doc/install))
|
||||||
- pnpm ([install instructions](https://pnpm.io/installation))
|
- pnpm ([install instructions](https://pnpm.io/installation))
|
||||||
- docker ([install instructions](https://docs.docker.com/get-docker/))
|
- docker ([install instructions](https://docs.docker.com/get-docker/))
|
||||||
- docker-compose ([install instructions](https://docs.docker.com/compose/install/))
|
- docker-compose ([install instructions](https://docs.docker.com/compose/install/))
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module github.com/owncloud/ocis/v2
|
module github.com/owncloud/ocis/v2
|
||||||
|
|
||||||
go 1.21
|
go 1.22
|
||||||
|
|
||||||
require (
|
require (
|
||||||
dario.cat/mergo v1.0.0
|
dario.cat/mergo v1.0.0
|
||||||
@@ -107,7 +107,7 @@ require (
|
|||||||
golang.org/x/text v0.14.0
|
golang.org/x/text v0.14.0
|
||||||
google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe
|
google.golang.org/genproto/googleapis/api v0.0.0-20240125205218-1f4bbc51befe
|
||||||
google.golang.org/grpc v1.62.0
|
google.golang.org/grpc v1.62.0
|
||||||
google.golang.org/protobuf v1.32.0
|
google.golang.org/protobuf v1.33.0
|
||||||
gopkg.in/square/go-jose.v2 v2.6.0
|
gopkg.in/square/go-jose.v2 v2.6.0
|
||||||
gopkg.in/yaml.v2 v2.4.0
|
gopkg.in/yaml.v2 v2.4.0
|
||||||
gotest.tools/v3 v3.5.1
|
gotest.tools/v3 v3.5.1
|
||||||
|
|||||||
@@ -2957,8 +2957,8 @@ google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw
|
|||||||
google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||||
google.golang.org/protobuf v1.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
|
google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI=
|
||||||
google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
|
||||||
gopkg.in/Acconut/lockfile.v1 v1.1.0/go.mod h1:6UCz3wJ8tSFUsPR6uP/j8uegEtDuEEqFxlpi0JI4Umw=
|
gopkg.in/Acconut/lockfile.v1 v1.1.0/go.mod h1:6UCz3wJ8tSFUsPR6uP/j8uegEtDuEEqFxlpi0JI4Umw=
|
||||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||||
gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y=
|
gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y=
|
||||||
|
|||||||
-3
@@ -1,3 +0,0 @@
|
|||||||
package bar
|
|
||||||
|
|
||||||
p = true { true }
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
abc
|
|
||||||
Generated
Vendored
-1
@@ -1 +0,0 @@
|
|||||||
null
|
|
||||||
-1
@@ -1 +0,0 @@
|
|||||||
[1,2,3]
|
|
||||||
+4
@@ -322,6 +322,10 @@ func (d decoder) skipJSONValue() error {
|
|||||||
if open > d.opts.RecursionLimit {
|
if open > d.opts.RecursionLimit {
|
||||||
return errors.New("exceeded max recursion depth")
|
return errors.New("exceeded max recursion depth")
|
||||||
}
|
}
|
||||||
|
case json.EOF:
|
||||||
|
// This can only happen if there's a bug in Decoder.Read.
|
||||||
|
// Avoid an infinite loop if this does happen.
|
||||||
|
return errors.New("unexpected EOF")
|
||||||
}
|
}
|
||||||
if open == 0 {
|
if open == 0 {
|
||||||
return nil
|
return nil
|
||||||
|
|||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
// Package editiondefaults contains the binary representation of the editions
|
||||||
|
// defaults.
|
||||||
|
package editiondefaults
|
||||||
|
|
||||||
|
import _ "embed"
|
||||||
|
|
||||||
|
//go:embed editions_defaults.binpb
|
||||||
|
var Defaults []byte
|
||||||
Generated
Vendored
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
(0�
|
(0�
|
||||||
(0з
|
(0з
|
||||||
(0и ж(и
|
(0и ж(и
|
||||||
+1
-1
@@ -121,7 +121,7 @@ func (d *Decoder) Read() (Token, error) {
|
|||||||
|
|
||||||
case ObjectClose:
|
case ObjectClose:
|
||||||
if len(d.openStack) == 0 ||
|
if len(d.openStack) == 0 ||
|
||||||
d.lastToken.kind == comma ||
|
d.lastToken.kind&(Name|comma) != 0 ||
|
||||||
d.openStack[len(d.openStack)-1] != ObjectOpen {
|
d.openStack[len(d.openStack)-1] != ObjectOpen {
|
||||||
return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
|
return Token{}, d.newSyntaxError(tok.pos, unexpectedFmt, tok.RawString())
|
||||||
}
|
}
|
||||||
|
|||||||
+46
-21
@@ -68,7 +68,7 @@ type (
|
|||||||
Extensions Extensions
|
Extensions Extensions
|
||||||
Services Services
|
Services Services
|
||||||
|
|
||||||
EditionFeatures FileEditionFeatures
|
EditionFeatures EditionFeatures
|
||||||
}
|
}
|
||||||
FileL2 struct {
|
FileL2 struct {
|
||||||
Options func() protoreflect.ProtoMessage
|
Options func() protoreflect.ProtoMessage
|
||||||
@@ -76,10 +76,13 @@ type (
|
|||||||
Locations SourceLocations
|
Locations SourceLocations
|
||||||
}
|
}
|
||||||
|
|
||||||
FileEditionFeatures struct {
|
EditionFeatures struct {
|
||||||
// IsFieldPresence is true if field_presence is EXPLICIT
|
// IsFieldPresence is true if field_presence is EXPLICIT
|
||||||
// https://protobuf.dev/editions/features/#field_presence
|
// https://protobuf.dev/editions/features/#field_presence
|
||||||
IsFieldPresence bool
|
IsFieldPresence bool
|
||||||
|
// IsFieldPresence is true if field_presence is LEGACY_REQUIRED
|
||||||
|
// https://protobuf.dev/editions/features/#field_presence
|
||||||
|
IsLegacyRequired bool
|
||||||
// IsOpenEnum is true if enum_type is OPEN
|
// IsOpenEnum is true if enum_type is OPEN
|
||||||
// https://protobuf.dev/editions/features/#enum_type
|
// https://protobuf.dev/editions/features/#enum_type
|
||||||
IsOpenEnum bool
|
IsOpenEnum bool
|
||||||
@@ -95,6 +98,9 @@ type (
|
|||||||
// IsJSONCompliant is true if json_format is ALLOW
|
// IsJSONCompliant is true if json_format is ALLOW
|
||||||
// https://protobuf.dev/editions/features/#json_format
|
// https://protobuf.dev/editions/features/#json_format
|
||||||
IsJSONCompliant bool
|
IsJSONCompliant bool
|
||||||
|
// GenerateLegacyUnmarshalJSON determines if the plugin generates the
|
||||||
|
// UnmarshalJSON([]byte) error method for enums.
|
||||||
|
GenerateLegacyUnmarshalJSON bool
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -156,6 +162,8 @@ type (
|
|||||||
}
|
}
|
||||||
EnumL1 struct {
|
EnumL1 struct {
|
||||||
eagerValues bool // controls whether EnumL2.Values is already populated
|
eagerValues bool // controls whether EnumL2.Values is already populated
|
||||||
|
|
||||||
|
EditionFeatures EditionFeatures
|
||||||
}
|
}
|
||||||
EnumL2 struct {
|
EnumL2 struct {
|
||||||
Options func() protoreflect.ProtoMessage
|
Options func() protoreflect.ProtoMessage
|
||||||
@@ -217,6 +225,8 @@ type (
|
|||||||
Extensions Extensions
|
Extensions Extensions
|
||||||
IsMapEntry bool // promoted from google.protobuf.MessageOptions
|
IsMapEntry bool // promoted from google.protobuf.MessageOptions
|
||||||
IsMessageSet bool // promoted from google.protobuf.MessageOptions
|
IsMessageSet bool // promoted from google.protobuf.MessageOptions
|
||||||
|
|
||||||
|
EditionFeatures EditionFeatures
|
||||||
}
|
}
|
||||||
MessageL2 struct {
|
MessageL2 struct {
|
||||||
Options func() protoreflect.ProtoMessage
|
Options func() protoreflect.ProtoMessage
|
||||||
@@ -250,8 +260,7 @@ type (
|
|||||||
Enum protoreflect.EnumDescriptor
|
Enum protoreflect.EnumDescriptor
|
||||||
Message protoreflect.MessageDescriptor
|
Message protoreflect.MessageDescriptor
|
||||||
|
|
||||||
// Edition features.
|
EditionFeatures EditionFeatures
|
||||||
Presence bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Oneof struct {
|
Oneof struct {
|
||||||
@@ -261,6 +270,8 @@ type (
|
|||||||
OneofL1 struct {
|
OneofL1 struct {
|
||||||
Options func() protoreflect.ProtoMessage
|
Options func() protoreflect.ProtoMessage
|
||||||
Fields OneofFields // must be consistent with Message.Fields.ContainingOneof
|
Fields OneofFields // must be consistent with Message.Fields.ContainingOneof
|
||||||
|
|
||||||
|
EditionFeatures EditionFeatures
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -310,26 +321,36 @@ func (fd *Field) Options() protoreflect.ProtoMessage {
|
|||||||
}
|
}
|
||||||
func (fd *Field) Number() protoreflect.FieldNumber { return fd.L1.Number }
|
func (fd *Field) Number() protoreflect.FieldNumber { return fd.L1.Number }
|
||||||
func (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality }
|
func (fd *Field) Cardinality() protoreflect.Cardinality { return fd.L1.Cardinality }
|
||||||
func (fd *Field) Kind() protoreflect.Kind { return fd.L1.Kind }
|
func (fd *Field) Kind() protoreflect.Kind {
|
||||||
func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON }
|
return fd.L1.Kind
|
||||||
func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) }
|
}
|
||||||
func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) }
|
func (fd *Field) HasJSONName() bool { return fd.L1.StringName.hasJSON }
|
||||||
|
func (fd *Field) JSONName() string { return fd.L1.StringName.getJSON(fd) }
|
||||||
|
func (fd *Field) TextName() string { return fd.L1.StringName.getText(fd) }
|
||||||
func (fd *Field) HasPresence() bool {
|
func (fd *Field) HasPresence() bool {
|
||||||
if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions {
|
if fd.L1.Cardinality == protoreflect.Repeated {
|
||||||
return fd.L1.Presence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil
|
return false
|
||||||
}
|
}
|
||||||
return fd.L1.Cardinality != protoreflect.Repeated && (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 || fd.L1.Message != nil || fd.L1.ContainingOneof != nil)
|
explicitFieldPresence := fd.Syntax() == protoreflect.Editions && fd.L1.EditionFeatures.IsFieldPresence
|
||||||
|
return fd.Syntax() == protoreflect.Proto2 || explicitFieldPresence || fd.L1.Message != nil || fd.L1.ContainingOneof != nil
|
||||||
}
|
}
|
||||||
func (fd *Field) HasOptionalKeyword() bool {
|
func (fd *Field) HasOptionalKeyword() bool {
|
||||||
return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional
|
return (fd.L0.ParentFile.L1.Syntax == protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Optional && fd.L1.ContainingOneof == nil) || fd.L1.IsProto3Optional
|
||||||
}
|
}
|
||||||
func (fd *Field) IsPacked() bool {
|
func (fd *Field) IsPacked() bool {
|
||||||
if !fd.L1.HasPacked && fd.L0.ParentFile.L1.Syntax != protoreflect.Proto2 && fd.L1.Cardinality == protoreflect.Repeated {
|
if fd.L1.Cardinality != protoreflect.Repeated {
|
||||||
switch fd.L1.Kind {
|
return false
|
||||||
case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:
|
}
|
||||||
default:
|
switch fd.L1.Kind {
|
||||||
return true
|
case protoreflect.StringKind, protoreflect.BytesKind, protoreflect.MessageKind, protoreflect.GroupKind:
|
||||||
}
|
return false
|
||||||
|
}
|
||||||
|
if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions {
|
||||||
|
return fd.L1.EditionFeatures.IsPacked
|
||||||
|
}
|
||||||
|
if fd.L0.ParentFile.L1.Syntax == protoreflect.Proto3 {
|
||||||
|
// proto3 repeated fields are packed by default.
|
||||||
|
return !fd.L1.HasPacked || fd.L1.IsPacked
|
||||||
}
|
}
|
||||||
return fd.L1.IsPacked
|
return fd.L1.IsPacked
|
||||||
}
|
}
|
||||||
@@ -378,6 +399,9 @@ func (fd *Field) ProtoType(protoreflect.FieldDescriptor) {}
|
|||||||
// WARNING: This method is exempt from the compatibility promise and may be
|
// WARNING: This method is exempt from the compatibility promise and may be
|
||||||
// removed in the future without warning.
|
// removed in the future without warning.
|
||||||
func (fd *Field) EnforceUTF8() bool {
|
func (fd *Field) EnforceUTF8() bool {
|
||||||
|
if fd.L0.ParentFile.L1.Syntax == protoreflect.Editions {
|
||||||
|
return fd.L1.EditionFeatures.IsUTF8Validated
|
||||||
|
}
|
||||||
if fd.L1.HasEnforceUTF8 {
|
if fd.L1.HasEnforceUTF8 {
|
||||||
return fd.L1.EnforceUTF8
|
return fd.L1.EnforceUTF8
|
||||||
}
|
}
|
||||||
@@ -404,10 +428,11 @@ type (
|
|||||||
L2 *ExtensionL2 // protected by fileDesc.once
|
L2 *ExtensionL2 // protected by fileDesc.once
|
||||||
}
|
}
|
||||||
ExtensionL1 struct {
|
ExtensionL1 struct {
|
||||||
Number protoreflect.FieldNumber
|
Number protoreflect.FieldNumber
|
||||||
Extendee protoreflect.MessageDescriptor
|
Extendee protoreflect.MessageDescriptor
|
||||||
Cardinality protoreflect.Cardinality
|
Cardinality protoreflect.Cardinality
|
||||||
Kind protoreflect.Kind
|
Kind protoreflect.Kind
|
||||||
|
EditionFeatures EditionFeatures
|
||||||
}
|
}
|
||||||
ExtensionL2 struct {
|
ExtensionL2 struct {
|
||||||
Options func() protoreflect.ProtoMessage
|
Options func() protoreflect.ProtoMessage
|
||||||
|
|||||||
+52
@@ -5,6 +5,7 @@
|
|||||||
package filedesc
|
package filedesc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"google.golang.org/protobuf/encoding/protowire"
|
"google.golang.org/protobuf/encoding/protowire"
|
||||||
@@ -98,6 +99,7 @@ func (fd *File) unmarshalSeed(b []byte) {
|
|||||||
var prevField protoreflect.FieldNumber
|
var prevField protoreflect.FieldNumber
|
||||||
var numEnums, numMessages, numExtensions, numServices int
|
var numEnums, numMessages, numExtensions, numServices int
|
||||||
var posEnums, posMessages, posExtensions, posServices int
|
var posEnums, posMessages, posExtensions, posServices int
|
||||||
|
var options []byte
|
||||||
b0 := b
|
b0 := b
|
||||||
for len(b) > 0 {
|
for len(b) > 0 {
|
||||||
num, typ, n := protowire.ConsumeTag(b)
|
num, typ, n := protowire.ConsumeTag(b)
|
||||||
@@ -113,6 +115,8 @@ func (fd *File) unmarshalSeed(b []byte) {
|
|||||||
fd.L1.Syntax = protoreflect.Proto2
|
fd.L1.Syntax = protoreflect.Proto2
|
||||||
case "proto3":
|
case "proto3":
|
||||||
fd.L1.Syntax = protoreflect.Proto3
|
fd.L1.Syntax = protoreflect.Proto3
|
||||||
|
case "editions":
|
||||||
|
fd.L1.Syntax = protoreflect.Editions
|
||||||
default:
|
default:
|
||||||
panic("invalid syntax")
|
panic("invalid syntax")
|
||||||
}
|
}
|
||||||
@@ -120,6 +124,8 @@ func (fd *File) unmarshalSeed(b []byte) {
|
|||||||
fd.L1.Path = sb.MakeString(v)
|
fd.L1.Path = sb.MakeString(v)
|
||||||
case genid.FileDescriptorProto_Package_field_number:
|
case genid.FileDescriptorProto_Package_field_number:
|
||||||
fd.L1.Package = protoreflect.FullName(sb.MakeString(v))
|
fd.L1.Package = protoreflect.FullName(sb.MakeString(v))
|
||||||
|
case genid.FileDescriptorProto_Options_field_number:
|
||||||
|
options = v
|
||||||
case genid.FileDescriptorProto_EnumType_field_number:
|
case genid.FileDescriptorProto_EnumType_field_number:
|
||||||
if prevField != genid.FileDescriptorProto_EnumType_field_number {
|
if prevField != genid.FileDescriptorProto_EnumType_field_number {
|
||||||
if numEnums > 0 {
|
if numEnums > 0 {
|
||||||
@@ -154,6 +160,13 @@ func (fd *File) unmarshalSeed(b []byte) {
|
|||||||
numServices++
|
numServices++
|
||||||
}
|
}
|
||||||
prevField = num
|
prevField = num
|
||||||
|
case protowire.VarintType:
|
||||||
|
v, m := protowire.ConsumeVarint(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.FileDescriptorProto_Edition_field_number:
|
||||||
|
fd.L1.Edition = Edition(v)
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
m := protowire.ConsumeFieldValue(num, typ, b)
|
m := protowire.ConsumeFieldValue(num, typ, b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
@@ -166,6 +179,15 @@ func (fd *File) unmarshalSeed(b []byte) {
|
|||||||
fd.L1.Syntax = protoreflect.Proto2
|
fd.L1.Syntax = protoreflect.Proto2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if fd.L1.Syntax == protoreflect.Editions {
|
||||||
|
fd.L1.EditionFeatures = getFeaturesFor(fd.L1.Edition)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Parse editions features from options if any
|
||||||
|
if options != nil {
|
||||||
|
fd.unmarshalSeedOptions(options)
|
||||||
|
}
|
||||||
|
|
||||||
// Must allocate all declarations before parsing each descriptor type
|
// Must allocate all declarations before parsing each descriptor type
|
||||||
// to ensure we handled all descriptors in "flattened ordering".
|
// to ensure we handled all descriptors in "flattened ordering".
|
||||||
if numEnums > 0 {
|
if numEnums > 0 {
|
||||||
@@ -219,6 +241,28 @@ func (fd *File) unmarshalSeed(b []byte) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (fd *File) unmarshalSeedOptions(b []byte) {
|
||||||
|
for b := b; len(b) > 0; {
|
||||||
|
num, typ, n := protowire.ConsumeTag(b)
|
||||||
|
b = b[n:]
|
||||||
|
switch typ {
|
||||||
|
case protowire.BytesType:
|
||||||
|
v, m := protowire.ConsumeBytes(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.FileOptions_Features_field_number:
|
||||||
|
if fd.Syntax() != protoreflect.Editions {
|
||||||
|
panic(fmt.Sprintf("invalid descriptor: using edition features in a proto with syntax %s", fd.Syntax()))
|
||||||
|
}
|
||||||
|
fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures)
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
m := protowire.ConsumeFieldValue(num, typ, b)
|
||||||
|
b = b[m:]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {
|
func (ed *Enum) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protoreflect.Descriptor, i int) {
|
||||||
ed.L0.ParentFile = pf
|
ed.L0.ParentFile = pf
|
||||||
ed.L0.Parent = pd
|
ed.L0.Parent = pd
|
||||||
@@ -275,6 +319,7 @@ func (md *Message) unmarshalSeed(b []byte, sb *strs.Builder, pf *File, pd protor
|
|||||||
md.L0.ParentFile = pf
|
md.L0.ParentFile = pf
|
||||||
md.L0.Parent = pd
|
md.L0.Parent = pd
|
||||||
md.L0.Index = i
|
md.L0.Index = i
|
||||||
|
md.L1.EditionFeatures = featuresFromParentDesc(md.Parent())
|
||||||
|
|
||||||
var prevField protoreflect.FieldNumber
|
var prevField protoreflect.FieldNumber
|
||||||
var numEnums, numMessages, numExtensions int
|
var numEnums, numMessages, numExtensions int
|
||||||
@@ -380,6 +425,13 @@ func (md *Message) unmarshalSeedOptions(b []byte) {
|
|||||||
case genid.MessageOptions_MessageSetWireFormat_field_number:
|
case genid.MessageOptions_MessageSetWireFormat_field_number:
|
||||||
md.L1.IsMessageSet = protowire.DecodeBool(v)
|
md.L1.IsMessageSet = protowire.DecodeBool(v)
|
||||||
}
|
}
|
||||||
|
case protowire.BytesType:
|
||||||
|
v, m := protowire.ConsumeBytes(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.MessageOptions_Features_field_number:
|
||||||
|
md.L1.EditionFeatures = unmarshalFeatureSet(v, md.L1.EditionFeatures)
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
m := protowire.ConsumeFieldValue(num, typ, b)
|
m := protowire.ConsumeFieldValue(num, typ, b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
|
|||||||
+28
@@ -414,6 +414,7 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref
|
|||||||
fd.L0.ParentFile = pf
|
fd.L0.ParentFile = pf
|
||||||
fd.L0.Parent = pd
|
fd.L0.Parent = pd
|
||||||
fd.L0.Index = i
|
fd.L0.Index = i
|
||||||
|
fd.L1.EditionFeatures = featuresFromParentDesc(fd.Parent())
|
||||||
|
|
||||||
var rawTypeName []byte
|
var rawTypeName []byte
|
||||||
var rawOptions []byte
|
var rawOptions []byte
|
||||||
@@ -465,6 +466,12 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref
|
|||||||
b = b[m:]
|
b = b[m:]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if fd.Syntax() == protoreflect.Editions && fd.L1.Kind == protoreflect.MessageKind && fd.L1.EditionFeatures.IsDelimitedEncoded {
|
||||||
|
fd.L1.Kind = protoreflect.GroupKind
|
||||||
|
}
|
||||||
|
if fd.Syntax() == protoreflect.Editions && fd.L1.EditionFeatures.IsLegacyRequired {
|
||||||
|
fd.L1.Cardinality = protoreflect.Required
|
||||||
|
}
|
||||||
if rawTypeName != nil {
|
if rawTypeName != nil {
|
||||||
name := makeFullName(sb, rawTypeName)
|
name := makeFullName(sb, rawTypeName)
|
||||||
switch fd.L1.Kind {
|
switch fd.L1.Kind {
|
||||||
@@ -497,6 +504,13 @@ func (fd *Field) unmarshalOptions(b []byte) {
|
|||||||
fd.L1.HasEnforceUTF8 = true
|
fd.L1.HasEnforceUTF8 = true
|
||||||
fd.L1.EnforceUTF8 = protowire.DecodeBool(v)
|
fd.L1.EnforceUTF8 = protowire.DecodeBool(v)
|
||||||
}
|
}
|
||||||
|
case protowire.BytesType:
|
||||||
|
v, m := protowire.ConsumeBytes(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.FieldOptions_Features_field_number:
|
||||||
|
fd.L1.EditionFeatures = unmarshalFeatureSet(v, fd.L1.EditionFeatures)
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
m := protowire.ConsumeFieldValue(num, typ, b)
|
m := protowire.ConsumeFieldValue(num, typ, b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
@@ -534,6 +548,7 @@ func (od *Oneof) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd protoref
|
|||||||
func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {
|
func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {
|
||||||
var rawTypeName []byte
|
var rawTypeName []byte
|
||||||
var rawOptions []byte
|
var rawOptions []byte
|
||||||
|
xd.L1.EditionFeatures = featuresFromParentDesc(xd.L1.Extendee)
|
||||||
xd.L2 = new(ExtensionL2)
|
xd.L2 = new(ExtensionL2)
|
||||||
for len(b) > 0 {
|
for len(b) > 0 {
|
||||||
num, typ, n := protowire.ConsumeTag(b)
|
num, typ, n := protowire.ConsumeTag(b)
|
||||||
@@ -565,6 +580,12 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {
|
|||||||
b = b[m:]
|
b = b[m:]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if xd.Syntax() == protoreflect.Editions && xd.L1.Kind == protoreflect.MessageKind && xd.L1.EditionFeatures.IsDelimitedEncoded {
|
||||||
|
xd.L1.Kind = protoreflect.GroupKind
|
||||||
|
}
|
||||||
|
if xd.Syntax() == protoreflect.Editions && xd.L1.EditionFeatures.IsLegacyRequired {
|
||||||
|
xd.L1.Cardinality = protoreflect.Required
|
||||||
|
}
|
||||||
if rawTypeName != nil {
|
if rawTypeName != nil {
|
||||||
name := makeFullName(sb, rawTypeName)
|
name := makeFullName(sb, rawTypeName)
|
||||||
switch xd.L1.Kind {
|
switch xd.L1.Kind {
|
||||||
@@ -589,6 +610,13 @@ func (xd *Extension) unmarshalOptions(b []byte) {
|
|||||||
case genid.FieldOptions_Packed_field_number:
|
case genid.FieldOptions_Packed_field_number:
|
||||||
xd.L2.IsPacked = protowire.DecodeBool(v)
|
xd.L2.IsPacked = protowire.DecodeBool(v)
|
||||||
}
|
}
|
||||||
|
case protowire.BytesType:
|
||||||
|
v, m := protowire.ConsumeBytes(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.FieldOptions_Features_field_number:
|
||||||
|
xd.L1.EditionFeatures = unmarshalFeatureSet(v, xd.L1.EditionFeatures)
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
m := protowire.ConsumeFieldValue(num, typ, b)
|
m := protowire.ConsumeFieldValue(num, typ, b)
|
||||||
b = b[m:]
|
b = b[m:]
|
||||||
|
|||||||
+142
@@ -0,0 +1,142 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
package filedesc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/encoding/protowire"
|
||||||
|
"google.golang.org/protobuf/internal/editiondefaults"
|
||||||
|
"google.golang.org/protobuf/internal/genid"
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
var defaultsCache = make(map[Edition]EditionFeatures)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
unmarshalEditionDefaults(editiondefaults.Defaults)
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshalGoFeature(b []byte, parent EditionFeatures) EditionFeatures {
|
||||||
|
for len(b) > 0 {
|
||||||
|
num, _, n := protowire.ConsumeTag(b)
|
||||||
|
b = b[n:]
|
||||||
|
switch num {
|
||||||
|
case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number:
|
||||||
|
v, m := protowire.ConsumeVarint(b)
|
||||||
|
b = b[m:]
|
||||||
|
parent.GenerateLegacyUnmarshalJSON = protowire.DecodeBool(v)
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("unkown field number %d while unmarshalling GoFeatures", num))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return parent
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshalFeatureSet(b []byte, parent EditionFeatures) EditionFeatures {
|
||||||
|
for len(b) > 0 {
|
||||||
|
num, typ, n := protowire.ConsumeTag(b)
|
||||||
|
b = b[n:]
|
||||||
|
switch typ {
|
||||||
|
case protowire.VarintType:
|
||||||
|
v, m := protowire.ConsumeVarint(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.FeatureSet_FieldPresence_field_number:
|
||||||
|
parent.IsFieldPresence = v == genid.FeatureSet_EXPLICIT_enum_value || v == genid.FeatureSet_LEGACY_REQUIRED_enum_value
|
||||||
|
parent.IsLegacyRequired = v == genid.FeatureSet_LEGACY_REQUIRED_enum_value
|
||||||
|
case genid.FeatureSet_EnumType_field_number:
|
||||||
|
parent.IsOpenEnum = v == genid.FeatureSet_OPEN_enum_value
|
||||||
|
case genid.FeatureSet_RepeatedFieldEncoding_field_number:
|
||||||
|
parent.IsPacked = v == genid.FeatureSet_PACKED_enum_value
|
||||||
|
case genid.FeatureSet_Utf8Validation_field_number:
|
||||||
|
parent.IsUTF8Validated = v == genid.FeatureSet_VERIFY_enum_value
|
||||||
|
case genid.FeatureSet_MessageEncoding_field_number:
|
||||||
|
parent.IsDelimitedEncoded = v == genid.FeatureSet_DELIMITED_enum_value
|
||||||
|
case genid.FeatureSet_JsonFormat_field_number:
|
||||||
|
parent.IsJSONCompliant = v == genid.FeatureSet_ALLOW_enum_value
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("unkown field number %d while unmarshalling FeatureSet", num))
|
||||||
|
}
|
||||||
|
case protowire.BytesType:
|
||||||
|
v, m := protowire.ConsumeBytes(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.GoFeatures_LegacyUnmarshalJsonEnum_field_number:
|
||||||
|
parent = unmarshalGoFeature(v, parent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent
|
||||||
|
}
|
||||||
|
|
||||||
|
func featuresFromParentDesc(parentDesc protoreflect.Descriptor) EditionFeatures {
|
||||||
|
var parentFS EditionFeatures
|
||||||
|
switch p := parentDesc.(type) {
|
||||||
|
case *File:
|
||||||
|
parentFS = p.L1.EditionFeatures
|
||||||
|
case *Message:
|
||||||
|
parentFS = p.L1.EditionFeatures
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("unknown parent type %T", parentDesc))
|
||||||
|
}
|
||||||
|
return parentFS
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshalEditionDefault(b []byte) {
|
||||||
|
var ed Edition
|
||||||
|
var fs EditionFeatures
|
||||||
|
for len(b) > 0 {
|
||||||
|
num, typ, n := protowire.ConsumeTag(b)
|
||||||
|
b = b[n:]
|
||||||
|
switch typ {
|
||||||
|
case protowire.VarintType:
|
||||||
|
v, m := protowire.ConsumeVarint(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.FeatureSetDefaults_FeatureSetEditionDefault_Edition_field_number:
|
||||||
|
ed = Edition(v)
|
||||||
|
}
|
||||||
|
case protowire.BytesType:
|
||||||
|
v, m := protowire.ConsumeBytes(b)
|
||||||
|
b = b[m:]
|
||||||
|
switch num {
|
||||||
|
case genid.FeatureSetDefaults_FeatureSetEditionDefault_Features_field_number:
|
||||||
|
fs = unmarshalFeatureSet(v, fs)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultsCache[ed] = fs
|
||||||
|
}
|
||||||
|
|
||||||
|
func unmarshalEditionDefaults(b []byte) {
|
||||||
|
for len(b) > 0 {
|
||||||
|
num, _, n := protowire.ConsumeTag(b)
|
||||||
|
b = b[n:]
|
||||||
|
switch num {
|
||||||
|
case genid.FeatureSetDefaults_Defaults_field_number:
|
||||||
|
def, m := protowire.ConsumeBytes(b)
|
||||||
|
b = b[m:]
|
||||||
|
unmarshalEditionDefault(def)
|
||||||
|
case genid.FeatureSetDefaults_MinimumEdition_field_number,
|
||||||
|
genid.FeatureSetDefaults_MaximumEdition_field_number:
|
||||||
|
// We don't care about the minimum and maximum editions. If the
|
||||||
|
// edition we are looking for later on is not in the cache we know
|
||||||
|
// it is outside of the range between minimum and maximum edition.
|
||||||
|
_, m := protowire.ConsumeVarint(b)
|
||||||
|
b = b[m:]
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("unkown field number %d while unmarshalling EditionDefault", num))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func getFeaturesFor(ed Edition) EditionFeatures {
|
||||||
|
if def, ok := defaultsCache[ed]; ok {
|
||||||
|
return def
|
||||||
|
}
|
||||||
|
panic(fmt.Sprintf("unsupported edition: %v", ed))
|
||||||
|
}
|
||||||
+149
-3
@@ -18,6 +18,21 @@ const (
|
|||||||
Edition_enum_name = "Edition"
|
Edition_enum_name = "Edition"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.Edition.
|
||||||
|
const (
|
||||||
|
Edition_EDITION_UNKNOWN_enum_value = 0
|
||||||
|
Edition_EDITION_PROTO2_enum_value = 998
|
||||||
|
Edition_EDITION_PROTO3_enum_value = 999
|
||||||
|
Edition_EDITION_2023_enum_value = 1000
|
||||||
|
Edition_EDITION_2024_enum_value = 1001
|
||||||
|
Edition_EDITION_1_TEST_ONLY_enum_value = 1
|
||||||
|
Edition_EDITION_2_TEST_ONLY_enum_value = 2
|
||||||
|
Edition_EDITION_99997_TEST_ONLY_enum_value = 99997
|
||||||
|
Edition_EDITION_99998_TEST_ONLY_enum_value = 99998
|
||||||
|
Edition_EDITION_99999_TEST_ONLY_enum_value = 99999
|
||||||
|
Edition_EDITION_MAX_enum_value = 2147483647
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.FileDescriptorSet.
|
// Names for google.protobuf.FileDescriptorSet.
|
||||||
const (
|
const (
|
||||||
FileDescriptorSet_message_name protoreflect.Name = "FileDescriptorSet"
|
FileDescriptorSet_message_name protoreflect.Name = "FileDescriptorSet"
|
||||||
@@ -213,6 +228,12 @@ const (
|
|||||||
ExtensionRangeOptions_VerificationState_enum_name = "VerificationState"
|
ExtensionRangeOptions_VerificationState_enum_name = "VerificationState"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.ExtensionRangeOptions.VerificationState.
|
||||||
|
const (
|
||||||
|
ExtensionRangeOptions_DECLARATION_enum_value = 0
|
||||||
|
ExtensionRangeOptions_UNVERIFIED_enum_value = 1
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.ExtensionRangeOptions.Declaration.
|
// Names for google.protobuf.ExtensionRangeOptions.Declaration.
|
||||||
const (
|
const (
|
||||||
ExtensionRangeOptions_Declaration_message_name protoreflect.Name = "Declaration"
|
ExtensionRangeOptions_Declaration_message_name protoreflect.Name = "Declaration"
|
||||||
@@ -297,12 +318,41 @@ const (
|
|||||||
FieldDescriptorProto_Type_enum_name = "Type"
|
FieldDescriptorProto_Type_enum_name = "Type"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FieldDescriptorProto.Type.
|
||||||
|
const (
|
||||||
|
FieldDescriptorProto_TYPE_DOUBLE_enum_value = 1
|
||||||
|
FieldDescriptorProto_TYPE_FLOAT_enum_value = 2
|
||||||
|
FieldDescriptorProto_TYPE_INT64_enum_value = 3
|
||||||
|
FieldDescriptorProto_TYPE_UINT64_enum_value = 4
|
||||||
|
FieldDescriptorProto_TYPE_INT32_enum_value = 5
|
||||||
|
FieldDescriptorProto_TYPE_FIXED64_enum_value = 6
|
||||||
|
FieldDescriptorProto_TYPE_FIXED32_enum_value = 7
|
||||||
|
FieldDescriptorProto_TYPE_BOOL_enum_value = 8
|
||||||
|
FieldDescriptorProto_TYPE_STRING_enum_value = 9
|
||||||
|
FieldDescriptorProto_TYPE_GROUP_enum_value = 10
|
||||||
|
FieldDescriptorProto_TYPE_MESSAGE_enum_value = 11
|
||||||
|
FieldDescriptorProto_TYPE_BYTES_enum_value = 12
|
||||||
|
FieldDescriptorProto_TYPE_UINT32_enum_value = 13
|
||||||
|
FieldDescriptorProto_TYPE_ENUM_enum_value = 14
|
||||||
|
FieldDescriptorProto_TYPE_SFIXED32_enum_value = 15
|
||||||
|
FieldDescriptorProto_TYPE_SFIXED64_enum_value = 16
|
||||||
|
FieldDescriptorProto_TYPE_SINT32_enum_value = 17
|
||||||
|
FieldDescriptorProto_TYPE_SINT64_enum_value = 18
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FieldDescriptorProto.Label.
|
// Full and short names for google.protobuf.FieldDescriptorProto.Label.
|
||||||
const (
|
const (
|
||||||
FieldDescriptorProto_Label_enum_fullname = "google.protobuf.FieldDescriptorProto.Label"
|
FieldDescriptorProto_Label_enum_fullname = "google.protobuf.FieldDescriptorProto.Label"
|
||||||
FieldDescriptorProto_Label_enum_name = "Label"
|
FieldDescriptorProto_Label_enum_name = "Label"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FieldDescriptorProto.Label.
|
||||||
|
const (
|
||||||
|
FieldDescriptorProto_LABEL_OPTIONAL_enum_value = 1
|
||||||
|
FieldDescriptorProto_LABEL_REPEATED_enum_value = 3
|
||||||
|
FieldDescriptorProto_LABEL_REQUIRED_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.OneofDescriptorProto.
|
// Names for google.protobuf.OneofDescriptorProto.
|
||||||
const (
|
const (
|
||||||
OneofDescriptorProto_message_name protoreflect.Name = "OneofDescriptorProto"
|
OneofDescriptorProto_message_name protoreflect.Name = "OneofDescriptorProto"
|
||||||
@@ -474,7 +524,6 @@ const (
|
|||||||
FileOptions_CcGenericServices_field_name protoreflect.Name = "cc_generic_services"
|
FileOptions_CcGenericServices_field_name protoreflect.Name = "cc_generic_services"
|
||||||
FileOptions_JavaGenericServices_field_name protoreflect.Name = "java_generic_services"
|
FileOptions_JavaGenericServices_field_name protoreflect.Name = "java_generic_services"
|
||||||
FileOptions_PyGenericServices_field_name protoreflect.Name = "py_generic_services"
|
FileOptions_PyGenericServices_field_name protoreflect.Name = "py_generic_services"
|
||||||
FileOptions_PhpGenericServices_field_name protoreflect.Name = "php_generic_services"
|
|
||||||
FileOptions_Deprecated_field_name protoreflect.Name = "deprecated"
|
FileOptions_Deprecated_field_name protoreflect.Name = "deprecated"
|
||||||
FileOptions_CcEnableArenas_field_name protoreflect.Name = "cc_enable_arenas"
|
FileOptions_CcEnableArenas_field_name protoreflect.Name = "cc_enable_arenas"
|
||||||
FileOptions_ObjcClassPrefix_field_name protoreflect.Name = "objc_class_prefix"
|
FileOptions_ObjcClassPrefix_field_name protoreflect.Name = "objc_class_prefix"
|
||||||
@@ -497,7 +546,6 @@ const (
|
|||||||
FileOptions_CcGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_generic_services"
|
FileOptions_CcGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_generic_services"
|
||||||
FileOptions_JavaGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generic_services"
|
FileOptions_JavaGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.java_generic_services"
|
||||||
FileOptions_PyGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.py_generic_services"
|
FileOptions_PyGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.py_generic_services"
|
||||||
FileOptions_PhpGenericServices_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.php_generic_services"
|
|
||||||
FileOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.deprecated"
|
FileOptions_Deprecated_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.deprecated"
|
||||||
FileOptions_CcEnableArenas_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_enable_arenas"
|
FileOptions_CcEnableArenas_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.cc_enable_arenas"
|
||||||
FileOptions_ObjcClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.objc_class_prefix"
|
FileOptions_ObjcClassPrefix_field_fullname protoreflect.FullName = "google.protobuf.FileOptions.objc_class_prefix"
|
||||||
@@ -523,7 +571,6 @@ const (
|
|||||||
FileOptions_CcGenericServices_field_number protoreflect.FieldNumber = 16
|
FileOptions_CcGenericServices_field_number protoreflect.FieldNumber = 16
|
||||||
FileOptions_JavaGenericServices_field_number protoreflect.FieldNumber = 17
|
FileOptions_JavaGenericServices_field_number protoreflect.FieldNumber = 17
|
||||||
FileOptions_PyGenericServices_field_number protoreflect.FieldNumber = 18
|
FileOptions_PyGenericServices_field_number protoreflect.FieldNumber = 18
|
||||||
FileOptions_PhpGenericServices_field_number protoreflect.FieldNumber = 42
|
|
||||||
FileOptions_Deprecated_field_number protoreflect.FieldNumber = 23
|
FileOptions_Deprecated_field_number protoreflect.FieldNumber = 23
|
||||||
FileOptions_CcEnableArenas_field_number protoreflect.FieldNumber = 31
|
FileOptions_CcEnableArenas_field_number protoreflect.FieldNumber = 31
|
||||||
FileOptions_ObjcClassPrefix_field_number protoreflect.FieldNumber = 36
|
FileOptions_ObjcClassPrefix_field_number protoreflect.FieldNumber = 36
|
||||||
@@ -543,6 +590,13 @@ const (
|
|||||||
FileOptions_OptimizeMode_enum_name = "OptimizeMode"
|
FileOptions_OptimizeMode_enum_name = "OptimizeMode"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FileOptions.OptimizeMode.
|
||||||
|
const (
|
||||||
|
FileOptions_SPEED_enum_value = 1
|
||||||
|
FileOptions_CODE_SIZE_enum_value = 2
|
||||||
|
FileOptions_LITE_RUNTIME_enum_value = 3
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.MessageOptions.
|
// Names for google.protobuf.MessageOptions.
|
||||||
const (
|
const (
|
||||||
MessageOptions_message_name protoreflect.Name = "MessageOptions"
|
MessageOptions_message_name protoreflect.Name = "MessageOptions"
|
||||||
@@ -639,24 +693,59 @@ const (
|
|||||||
FieldOptions_CType_enum_name = "CType"
|
FieldOptions_CType_enum_name = "CType"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FieldOptions.CType.
|
||||||
|
const (
|
||||||
|
FieldOptions_STRING_enum_value = 0
|
||||||
|
FieldOptions_CORD_enum_value = 1
|
||||||
|
FieldOptions_STRING_PIECE_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FieldOptions.JSType.
|
// Full and short names for google.protobuf.FieldOptions.JSType.
|
||||||
const (
|
const (
|
||||||
FieldOptions_JSType_enum_fullname = "google.protobuf.FieldOptions.JSType"
|
FieldOptions_JSType_enum_fullname = "google.protobuf.FieldOptions.JSType"
|
||||||
FieldOptions_JSType_enum_name = "JSType"
|
FieldOptions_JSType_enum_name = "JSType"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FieldOptions.JSType.
|
||||||
|
const (
|
||||||
|
FieldOptions_JS_NORMAL_enum_value = 0
|
||||||
|
FieldOptions_JS_STRING_enum_value = 1
|
||||||
|
FieldOptions_JS_NUMBER_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FieldOptions.OptionRetention.
|
// Full and short names for google.protobuf.FieldOptions.OptionRetention.
|
||||||
const (
|
const (
|
||||||
FieldOptions_OptionRetention_enum_fullname = "google.protobuf.FieldOptions.OptionRetention"
|
FieldOptions_OptionRetention_enum_fullname = "google.protobuf.FieldOptions.OptionRetention"
|
||||||
FieldOptions_OptionRetention_enum_name = "OptionRetention"
|
FieldOptions_OptionRetention_enum_name = "OptionRetention"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FieldOptions.OptionRetention.
|
||||||
|
const (
|
||||||
|
FieldOptions_RETENTION_UNKNOWN_enum_value = 0
|
||||||
|
FieldOptions_RETENTION_RUNTIME_enum_value = 1
|
||||||
|
FieldOptions_RETENTION_SOURCE_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FieldOptions.OptionTargetType.
|
// Full and short names for google.protobuf.FieldOptions.OptionTargetType.
|
||||||
const (
|
const (
|
||||||
FieldOptions_OptionTargetType_enum_fullname = "google.protobuf.FieldOptions.OptionTargetType"
|
FieldOptions_OptionTargetType_enum_fullname = "google.protobuf.FieldOptions.OptionTargetType"
|
||||||
FieldOptions_OptionTargetType_enum_name = "OptionTargetType"
|
FieldOptions_OptionTargetType_enum_name = "OptionTargetType"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FieldOptions.OptionTargetType.
|
||||||
|
const (
|
||||||
|
FieldOptions_TARGET_TYPE_UNKNOWN_enum_value = 0
|
||||||
|
FieldOptions_TARGET_TYPE_FILE_enum_value = 1
|
||||||
|
FieldOptions_TARGET_TYPE_EXTENSION_RANGE_enum_value = 2
|
||||||
|
FieldOptions_TARGET_TYPE_MESSAGE_enum_value = 3
|
||||||
|
FieldOptions_TARGET_TYPE_FIELD_enum_value = 4
|
||||||
|
FieldOptions_TARGET_TYPE_ONEOF_enum_value = 5
|
||||||
|
FieldOptions_TARGET_TYPE_ENUM_enum_value = 6
|
||||||
|
FieldOptions_TARGET_TYPE_ENUM_ENTRY_enum_value = 7
|
||||||
|
FieldOptions_TARGET_TYPE_SERVICE_enum_value = 8
|
||||||
|
FieldOptions_TARGET_TYPE_METHOD_enum_value = 9
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.FieldOptions.EditionDefault.
|
// Names for google.protobuf.FieldOptions.EditionDefault.
|
||||||
const (
|
const (
|
||||||
FieldOptions_EditionDefault_message_name protoreflect.Name = "EditionDefault"
|
FieldOptions_EditionDefault_message_name protoreflect.Name = "EditionDefault"
|
||||||
@@ -813,6 +902,13 @@ const (
|
|||||||
MethodOptions_IdempotencyLevel_enum_name = "IdempotencyLevel"
|
MethodOptions_IdempotencyLevel_enum_name = "IdempotencyLevel"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.MethodOptions.IdempotencyLevel.
|
||||||
|
const (
|
||||||
|
MethodOptions_IDEMPOTENCY_UNKNOWN_enum_value = 0
|
||||||
|
MethodOptions_NO_SIDE_EFFECTS_enum_value = 1
|
||||||
|
MethodOptions_IDEMPOTENT_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.UninterpretedOption.
|
// Names for google.protobuf.UninterpretedOption.
|
||||||
const (
|
const (
|
||||||
UninterpretedOption_message_name protoreflect.Name = "UninterpretedOption"
|
UninterpretedOption_message_name protoreflect.Name = "UninterpretedOption"
|
||||||
@@ -909,36 +1005,79 @@ const (
|
|||||||
FeatureSet_FieldPresence_enum_name = "FieldPresence"
|
FeatureSet_FieldPresence_enum_name = "FieldPresence"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FeatureSet.FieldPresence.
|
||||||
|
const (
|
||||||
|
FeatureSet_FIELD_PRESENCE_UNKNOWN_enum_value = 0
|
||||||
|
FeatureSet_EXPLICIT_enum_value = 1
|
||||||
|
FeatureSet_IMPLICIT_enum_value = 2
|
||||||
|
FeatureSet_LEGACY_REQUIRED_enum_value = 3
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FeatureSet.EnumType.
|
// Full and short names for google.protobuf.FeatureSet.EnumType.
|
||||||
const (
|
const (
|
||||||
FeatureSet_EnumType_enum_fullname = "google.protobuf.FeatureSet.EnumType"
|
FeatureSet_EnumType_enum_fullname = "google.protobuf.FeatureSet.EnumType"
|
||||||
FeatureSet_EnumType_enum_name = "EnumType"
|
FeatureSet_EnumType_enum_name = "EnumType"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FeatureSet.EnumType.
|
||||||
|
const (
|
||||||
|
FeatureSet_ENUM_TYPE_UNKNOWN_enum_value = 0
|
||||||
|
FeatureSet_OPEN_enum_value = 1
|
||||||
|
FeatureSet_CLOSED_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding.
|
// Full and short names for google.protobuf.FeatureSet.RepeatedFieldEncoding.
|
||||||
const (
|
const (
|
||||||
FeatureSet_RepeatedFieldEncoding_enum_fullname = "google.protobuf.FeatureSet.RepeatedFieldEncoding"
|
FeatureSet_RepeatedFieldEncoding_enum_fullname = "google.protobuf.FeatureSet.RepeatedFieldEncoding"
|
||||||
FeatureSet_RepeatedFieldEncoding_enum_name = "RepeatedFieldEncoding"
|
FeatureSet_RepeatedFieldEncoding_enum_name = "RepeatedFieldEncoding"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FeatureSet.RepeatedFieldEncoding.
|
||||||
|
const (
|
||||||
|
FeatureSet_REPEATED_FIELD_ENCODING_UNKNOWN_enum_value = 0
|
||||||
|
FeatureSet_PACKED_enum_value = 1
|
||||||
|
FeatureSet_EXPANDED_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FeatureSet.Utf8Validation.
|
// Full and short names for google.protobuf.FeatureSet.Utf8Validation.
|
||||||
const (
|
const (
|
||||||
FeatureSet_Utf8Validation_enum_fullname = "google.protobuf.FeatureSet.Utf8Validation"
|
FeatureSet_Utf8Validation_enum_fullname = "google.protobuf.FeatureSet.Utf8Validation"
|
||||||
FeatureSet_Utf8Validation_enum_name = "Utf8Validation"
|
FeatureSet_Utf8Validation_enum_name = "Utf8Validation"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FeatureSet.Utf8Validation.
|
||||||
|
const (
|
||||||
|
FeatureSet_UTF8_VALIDATION_UNKNOWN_enum_value = 0
|
||||||
|
FeatureSet_VERIFY_enum_value = 2
|
||||||
|
FeatureSet_NONE_enum_value = 3
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FeatureSet.MessageEncoding.
|
// Full and short names for google.protobuf.FeatureSet.MessageEncoding.
|
||||||
const (
|
const (
|
||||||
FeatureSet_MessageEncoding_enum_fullname = "google.protobuf.FeatureSet.MessageEncoding"
|
FeatureSet_MessageEncoding_enum_fullname = "google.protobuf.FeatureSet.MessageEncoding"
|
||||||
FeatureSet_MessageEncoding_enum_name = "MessageEncoding"
|
FeatureSet_MessageEncoding_enum_name = "MessageEncoding"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FeatureSet.MessageEncoding.
|
||||||
|
const (
|
||||||
|
FeatureSet_MESSAGE_ENCODING_UNKNOWN_enum_value = 0
|
||||||
|
FeatureSet_LENGTH_PREFIXED_enum_value = 1
|
||||||
|
FeatureSet_DELIMITED_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.FeatureSet.JsonFormat.
|
// Full and short names for google.protobuf.FeatureSet.JsonFormat.
|
||||||
const (
|
const (
|
||||||
FeatureSet_JsonFormat_enum_fullname = "google.protobuf.FeatureSet.JsonFormat"
|
FeatureSet_JsonFormat_enum_fullname = "google.protobuf.FeatureSet.JsonFormat"
|
||||||
FeatureSet_JsonFormat_enum_name = "JsonFormat"
|
FeatureSet_JsonFormat_enum_name = "JsonFormat"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.FeatureSet.JsonFormat.
|
||||||
|
const (
|
||||||
|
FeatureSet_JSON_FORMAT_UNKNOWN_enum_value = 0
|
||||||
|
FeatureSet_ALLOW_enum_value = 1
|
||||||
|
FeatureSet_LEGACY_BEST_EFFORT_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.FeatureSetDefaults.
|
// Names for google.protobuf.FeatureSetDefaults.
|
||||||
const (
|
const (
|
||||||
FeatureSetDefaults_message_name protoreflect.Name = "FeatureSetDefaults"
|
FeatureSetDefaults_message_name protoreflect.Name = "FeatureSetDefaults"
|
||||||
@@ -1085,3 +1224,10 @@ const (
|
|||||||
GeneratedCodeInfo_Annotation_Semantic_enum_fullname = "google.protobuf.GeneratedCodeInfo.Annotation.Semantic"
|
GeneratedCodeInfo_Annotation_Semantic_enum_fullname = "google.protobuf.GeneratedCodeInfo.Annotation.Semantic"
|
||||||
GeneratedCodeInfo_Annotation_Semantic_enum_name = "Semantic"
|
GeneratedCodeInfo_Annotation_Semantic_enum_name = "Semantic"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.GeneratedCodeInfo.Annotation.Semantic.
|
||||||
|
const (
|
||||||
|
GeneratedCodeInfo_Annotation_NONE_enum_value = 0
|
||||||
|
GeneratedCodeInfo_Annotation_SET_enum_value = 1
|
||||||
|
GeneratedCodeInfo_Annotation_ALIAS_enum_value = 2
|
||||||
|
)
|
||||||
|
|||||||
+31
@@ -0,0 +1,31 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
// Code generated by generate-protos. DO NOT EDIT.
|
||||||
|
|
||||||
|
package genid
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
)
|
||||||
|
|
||||||
|
const File_reflect_protodesc_proto_go_features_proto = "reflect/protodesc/proto/go_features.proto"
|
||||||
|
|
||||||
|
// Names for google.protobuf.GoFeatures.
|
||||||
|
const (
|
||||||
|
GoFeatures_message_name protoreflect.Name = "GoFeatures"
|
||||||
|
GoFeatures_message_fullname protoreflect.FullName = "google.protobuf.GoFeatures"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field names for google.protobuf.GoFeatures.
|
||||||
|
const (
|
||||||
|
GoFeatures_LegacyUnmarshalJsonEnum_field_name protoreflect.Name = "legacy_unmarshal_json_enum"
|
||||||
|
|
||||||
|
GoFeatures_LegacyUnmarshalJsonEnum_field_fullname protoreflect.FullName = "google.protobuf.GoFeatures.legacy_unmarshal_json_enum"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Field numbers for google.protobuf.GoFeatures.
|
||||||
|
const (
|
||||||
|
GoFeatures_LegacyUnmarshalJsonEnum_field_number protoreflect.FieldNumber = 1
|
||||||
|
)
|
||||||
+5
@@ -18,6 +18,11 @@ const (
|
|||||||
NullValue_enum_name = "NullValue"
|
NullValue_enum_name = "NullValue"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.NullValue.
|
||||||
|
const (
|
||||||
|
NullValue_NULL_VALUE_enum_value = 0
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.Struct.
|
// Names for google.protobuf.Struct.
|
||||||
const (
|
const (
|
||||||
Struct_message_name protoreflect.Name = "Struct"
|
Struct_message_name protoreflect.Name = "Struct"
|
||||||
|
|||||||
+38
@@ -18,6 +18,13 @@ const (
|
|||||||
Syntax_enum_name = "Syntax"
|
Syntax_enum_name = "Syntax"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.Syntax.
|
||||||
|
const (
|
||||||
|
Syntax_SYNTAX_PROTO2_enum_value = 0
|
||||||
|
Syntax_SYNTAX_PROTO3_enum_value = 1
|
||||||
|
Syntax_SYNTAX_EDITIONS_enum_value = 2
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.Type.
|
// Names for google.protobuf.Type.
|
||||||
const (
|
const (
|
||||||
Type_message_name protoreflect.Name = "Type"
|
Type_message_name protoreflect.Name = "Type"
|
||||||
@@ -105,12 +112,43 @@ const (
|
|||||||
Field_Kind_enum_name = "Kind"
|
Field_Kind_enum_name = "Kind"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.Field.Kind.
|
||||||
|
const (
|
||||||
|
Field_TYPE_UNKNOWN_enum_value = 0
|
||||||
|
Field_TYPE_DOUBLE_enum_value = 1
|
||||||
|
Field_TYPE_FLOAT_enum_value = 2
|
||||||
|
Field_TYPE_INT64_enum_value = 3
|
||||||
|
Field_TYPE_UINT64_enum_value = 4
|
||||||
|
Field_TYPE_INT32_enum_value = 5
|
||||||
|
Field_TYPE_FIXED64_enum_value = 6
|
||||||
|
Field_TYPE_FIXED32_enum_value = 7
|
||||||
|
Field_TYPE_BOOL_enum_value = 8
|
||||||
|
Field_TYPE_STRING_enum_value = 9
|
||||||
|
Field_TYPE_GROUP_enum_value = 10
|
||||||
|
Field_TYPE_MESSAGE_enum_value = 11
|
||||||
|
Field_TYPE_BYTES_enum_value = 12
|
||||||
|
Field_TYPE_UINT32_enum_value = 13
|
||||||
|
Field_TYPE_ENUM_enum_value = 14
|
||||||
|
Field_TYPE_SFIXED32_enum_value = 15
|
||||||
|
Field_TYPE_SFIXED64_enum_value = 16
|
||||||
|
Field_TYPE_SINT32_enum_value = 17
|
||||||
|
Field_TYPE_SINT64_enum_value = 18
|
||||||
|
)
|
||||||
|
|
||||||
// Full and short names for google.protobuf.Field.Cardinality.
|
// Full and short names for google.protobuf.Field.Cardinality.
|
||||||
const (
|
const (
|
||||||
Field_Cardinality_enum_fullname = "google.protobuf.Field.Cardinality"
|
Field_Cardinality_enum_fullname = "google.protobuf.Field.Cardinality"
|
||||||
Field_Cardinality_enum_name = "Cardinality"
|
Field_Cardinality_enum_name = "Cardinality"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Enum values for google.protobuf.Field.Cardinality.
|
||||||
|
const (
|
||||||
|
Field_CARDINALITY_UNKNOWN_enum_value = 0
|
||||||
|
Field_CARDINALITY_OPTIONAL_enum_value = 1
|
||||||
|
Field_CARDINALITY_REQUIRED_enum_value = 2
|
||||||
|
Field_CARDINALITY_REPEATED_enum_value = 3
|
||||||
|
)
|
||||||
|
|
||||||
// Names for google.protobuf.Enum.
|
// Names for google.protobuf.Enum.
|
||||||
const (
|
const (
|
||||||
Enum_message_name protoreflect.Name = "Enum"
|
Enum_message_name protoreflect.Name = "Enum"
|
||||||
|
|||||||
+7
-15
@@ -21,26 +21,18 @@ type extensionFieldInfo struct {
|
|||||||
validation validationInfo
|
validation validationInfo
|
||||||
}
|
}
|
||||||
|
|
||||||
var legacyExtensionFieldInfoCache sync.Map // map[protoreflect.ExtensionType]*extensionFieldInfo
|
|
||||||
|
|
||||||
func getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo {
|
func getExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo {
|
||||||
if xi, ok := xt.(*ExtensionInfo); ok {
|
if xi, ok := xt.(*ExtensionInfo); ok {
|
||||||
xi.lazyInit()
|
xi.lazyInit()
|
||||||
return xi.info
|
return xi.info
|
||||||
}
|
}
|
||||||
return legacyLoadExtensionFieldInfo(xt)
|
// Ideally we'd cache the resulting *extensionFieldInfo so we don't have to
|
||||||
}
|
// recompute this metadata repeatedly. But without support for something like
|
||||||
|
// weak references, such a cache would pin temporary values (like dynamic
|
||||||
// legacyLoadExtensionFieldInfo dynamically loads a *ExtensionInfo for xt.
|
// extension types, constructed for the duration of a user request) to the
|
||||||
func legacyLoadExtensionFieldInfo(xt protoreflect.ExtensionType) *extensionFieldInfo {
|
// heap forever, causing memory usage of the cache to grow unbounded.
|
||||||
if xi, ok := legacyExtensionFieldInfoCache.Load(xt); ok {
|
// See discussion in https://github.com/golang/protobuf/issues/1521.
|
||||||
return xi.(*extensionFieldInfo)
|
return makeExtensionFieldInfo(xt.TypeDescriptor())
|
||||||
}
|
|
||||||
e := makeExtensionFieldInfo(xt.TypeDescriptor())
|
|
||||||
if e, ok := legacyMessageTypeCache.LoadOrStore(xt, e); ok {
|
|
||||||
return e.(*extensionFieldInfo)
|
|
||||||
}
|
|
||||||
return e
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo {
|
func makeExtensionFieldInfo(xd protoreflect.ExtensionDescriptor) *extensionFieldInfo {
|
||||||
|
|||||||
+1
-1
@@ -197,7 +197,7 @@ func fieldCoder(fd protoreflect.FieldDescriptor, ft reflect.Type) (*MessageInfo,
|
|||||||
return getMessageInfo(ft), makeMessageFieldCoder(fd, ft)
|
return getMessageInfo(ft), makeMessageFieldCoder(fd, ft)
|
||||||
case fd.Kind() == protoreflect.GroupKind:
|
case fd.Kind() == protoreflect.GroupKind:
|
||||||
return getMessageInfo(ft), makeGroupFieldCoder(fd, ft)
|
return getMessageInfo(ft), makeGroupFieldCoder(fd, ft)
|
||||||
case fd.Syntax() == protoreflect.Proto3 && fd.ContainingOneof() == nil:
|
case !fd.HasPresence() && fd.ContainingOneof() == nil:
|
||||||
// Populated oneof fields always encode even if set to the zero value,
|
// Populated oneof fields always encode even if set to the zero value,
|
||||||
// which normally are not encoded in proto3.
|
// which normally are not encoded in proto3.
|
||||||
switch fd.Kind() {
|
switch fd.Kind() {
|
||||||
|
|||||||
+1
-1
@@ -538,6 +538,6 @@ func isZero(v reflect.Value) bool {
|
|||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
default:
|
default:
|
||||||
panic(&reflect.ValueError{"reflect.Value.IsZero", v.Kind()})
|
panic(&reflect.ValueError{Method: "reflect.Value.IsZero", Kind: v.Kind()})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ import (
|
|||||||
|
|
||||||
// EnforceUTF8 reports whether to enforce strict UTF-8 validation.
|
// EnforceUTF8 reports whether to enforce strict UTF-8 validation.
|
||||||
func EnforceUTF8(fd protoreflect.FieldDescriptor) bool {
|
func EnforceUTF8(fd protoreflect.FieldDescriptor) bool {
|
||||||
if flags.ProtoLegacy {
|
if flags.ProtoLegacy || fd.Syntax() == protoreflect.Editions {
|
||||||
if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok {
|
if fd, ok := fd.(interface{ EnforceUTF8() bool }); ok {
|
||||||
return fd.EnforceUTF8()
|
return fd.EnforceUTF8()
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -51,7 +51,7 @@ import (
|
|||||||
// 10. Send out the CL for review and submit it.
|
// 10. Send out the CL for review and submit it.
|
||||||
const (
|
const (
|
||||||
Major = 1
|
Major = 1
|
||||||
Minor = 32
|
Minor = 33
|
||||||
Patch = 0
|
Patch = 0
|
||||||
PreRelease = ""
|
PreRelease = ""
|
||||||
)
|
)
|
||||||
|
|||||||
+37
-5
@@ -28,6 +28,7 @@ func (r descsByName) initEnumDeclarations(eds []*descriptorpb.EnumDescriptorProt
|
|||||||
opts = proto.Clone(opts).(*descriptorpb.EnumOptions)
|
opts = proto.Clone(opts).(*descriptorpb.EnumOptions)
|
||||||
e.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
e.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
||||||
}
|
}
|
||||||
|
e.L1.EditionFeatures = mergeEditionFeatures(parent, ed.GetOptions().GetFeatures())
|
||||||
for _, s := range ed.GetReservedName() {
|
for _, s := range ed.GetReservedName() {
|
||||||
e.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s))
|
e.L2.ReservedNames.List = append(e.L2.ReservedNames.List, protoreflect.Name(s))
|
||||||
}
|
}
|
||||||
@@ -68,6 +69,9 @@ func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProt
|
|||||||
if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {
|
if m.L0, err = r.makeBase(m, parent, md.GetName(), i, sb); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
if m.Base.L0.ParentFile.Syntax() == protoreflect.Editions {
|
||||||
|
m.L1.EditionFeatures = mergeEditionFeatures(parent, md.GetOptions().GetFeatures())
|
||||||
|
}
|
||||||
if opts := md.GetOptions(); opts != nil {
|
if opts := md.GetOptions(); opts != nil {
|
||||||
opts = proto.Clone(opts).(*descriptorpb.MessageOptions)
|
opts = proto.Clone(opts).(*descriptorpb.MessageOptions)
|
||||||
m.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
m.L2.Options = func() protoreflect.ProtoMessage { return opts }
|
||||||
@@ -114,6 +118,27 @@ func (r descsByName) initMessagesDeclarations(mds []*descriptorpb.DescriptorProt
|
|||||||
return ms, nil
|
return ms, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// canBePacked returns whether the field can use packed encoding:
|
||||||
|
// https://protobuf.dev/programming-guides/encoding/#packed
|
||||||
|
func canBePacked(fd *descriptorpb.FieldDescriptorProto) bool {
|
||||||
|
if fd.GetLabel() != descriptorpb.FieldDescriptorProto_LABEL_REPEATED {
|
||||||
|
return false // not a repeated field
|
||||||
|
}
|
||||||
|
|
||||||
|
switch protoreflect.Kind(fd.GetType()) {
|
||||||
|
case protoreflect.MessageKind, protoreflect.GroupKind:
|
||||||
|
return false // not a scalar type field
|
||||||
|
|
||||||
|
case protoreflect.StringKind, protoreflect.BytesKind:
|
||||||
|
// string and bytes can explicitly not be declared as packed,
|
||||||
|
// see https://protobuf.dev/programming-guides/encoding/#packed
|
||||||
|
return false
|
||||||
|
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) {
|
func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDescriptorProto, parent protoreflect.Descriptor, sb *strs.Builder) (fs []filedesc.Field, err error) {
|
||||||
fs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers
|
fs = make([]filedesc.Field, len(fds)) // allocate up-front to ensure stable pointers
|
||||||
for i, fd := range fds {
|
for i, fd := range fds {
|
||||||
@@ -139,12 +164,16 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc
|
|||||||
}
|
}
|
||||||
|
|
||||||
if f.Base.L0.ParentFile.Syntax() == protoreflect.Editions {
|
if f.Base.L0.ParentFile.Syntax() == protoreflect.Editions {
|
||||||
f.L1.Presence = resolveFeatureHasFieldPresence(f.Base.L0.ParentFile, fd)
|
f.L1.EditionFeatures = mergeEditionFeatures(parent, fd.GetOptions().GetFeatures())
|
||||||
|
|
||||||
|
if f.L1.EditionFeatures.IsLegacyRequired {
|
||||||
|
f.L1.Cardinality = protoreflect.Required
|
||||||
|
}
|
||||||
// We reuse the existing field because the old option `[packed =
|
// We reuse the existing field because the old option `[packed =
|
||||||
// true]` is mutually exclusive with the editions feature.
|
// true]` is mutually exclusive with the editions feature.
|
||||||
if fd.GetLabel() == descriptorpb.FieldDescriptorProto_LABEL_REPEATED {
|
if canBePacked(fd) {
|
||||||
f.L1.HasPacked = true
|
f.L1.HasPacked = true
|
||||||
f.L1.IsPacked = resolveFeatureRepeatedFieldEncodingPacked(f.Base.L0.ParentFile, fd)
|
f.L1.IsPacked = f.L1.EditionFeatures.IsPacked
|
||||||
}
|
}
|
||||||
|
|
||||||
// We pretend this option is always explicitly set because the only
|
// We pretend this option is always explicitly set because the only
|
||||||
@@ -155,9 +184,9 @@ func (r descsByName) initFieldsFromDescriptorProto(fds []*descriptorpb.FieldDesc
|
|||||||
// requested from the descriptor).
|
// requested from the descriptor).
|
||||||
// In proto2/proto3 syntax HasEnforceUTF8 might be false.
|
// In proto2/proto3 syntax HasEnforceUTF8 might be false.
|
||||||
f.L1.HasEnforceUTF8 = true
|
f.L1.HasEnforceUTF8 = true
|
||||||
f.L1.EnforceUTF8 = resolveFeatureEnforceUTF8(f.Base.L0.ParentFile, fd)
|
f.L1.EnforceUTF8 = f.L1.EditionFeatures.IsUTF8Validated
|
||||||
|
|
||||||
if f.L1.Kind == protoreflect.MessageKind && resolveFeatureDelimitedEncoding(f.Base.L0.ParentFile, fd) {
|
if f.L1.Kind == protoreflect.MessageKind && f.L1.EditionFeatures.IsDelimitedEncoded {
|
||||||
f.L1.Kind = protoreflect.GroupKind
|
f.L1.Kind = protoreflect.GroupKind
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -175,6 +204,9 @@ func (r descsByName) initOneofsFromDescriptorProto(ods []*descriptorpb.OneofDesc
|
|||||||
if opts := od.GetOptions(); opts != nil {
|
if opts := od.GetOptions(); opts != nil {
|
||||||
opts = proto.Clone(opts).(*descriptorpb.OneofOptions)
|
opts = proto.Clone(opts).(*descriptorpb.OneofOptions)
|
||||||
o.L1.Options = func() protoreflect.ProtoMessage { return opts }
|
o.L1.Options = func() protoreflect.ProtoMessage { return opts }
|
||||||
|
if parent.Syntax() == protoreflect.Editions {
|
||||||
|
o.L1.EditionFeatures = mergeEditionFeatures(parent, opts.GetFeatures())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return os, nil
|
return os, nil
|
||||||
|
|||||||
+2
-2
@@ -276,8 +276,8 @@ func unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvab
|
|||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
return v, ev, err
|
return v, ev, err
|
||||||
}
|
}
|
||||||
if fd.Syntax() == protoreflect.Proto3 {
|
if !fd.HasPresence() {
|
||||||
return v, ev, errors.New("cannot be specified under proto3 semantics")
|
return v, ev, errors.New("cannot be specified with implicit field presence")
|
||||||
}
|
}
|
||||||
if fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {
|
if fd.Kind() == protoreflect.MessageKind || fd.Kind() == protoreflect.GroupKind || fd.Cardinality() == protoreflect.Repeated {
|
||||||
return v, ev, errors.New("cannot be specified on composite types")
|
return v, ev, errors.New("cannot be specified on composite types")
|
||||||
|
|||||||
+3
-3
@@ -107,7 +107,7 @@ func validateMessageDeclarations(ms []filedesc.Message, mds []*descriptorpb.Desc
|
|||||||
if isMessageSet && !flags.ProtoLegacy {
|
if isMessageSet && !flags.ProtoLegacy {
|
||||||
return errors.New("message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported", m.FullName())
|
return errors.New("message %q is a MessageSet, which is a legacy proto1 feature that is no longer supported", m.FullName())
|
||||||
}
|
}
|
||||||
if isMessageSet && (m.Syntax() != protoreflect.Proto2 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) {
|
if isMessageSet && (m.Syntax() == protoreflect.Proto3 || m.Fields().Len() > 0 || m.ExtensionRanges().Len() == 0) {
|
||||||
return errors.New("message %q is an invalid proto1 MessageSet", m.FullName())
|
return errors.New("message %q is an invalid proto1 MessageSet", m.FullName())
|
||||||
}
|
}
|
||||||
if m.Syntax() == protoreflect.Proto3 {
|
if m.Syntax() == protoreflect.Proto3 {
|
||||||
@@ -314,8 +314,8 @@ func checkValidGroup(fd protoreflect.FieldDescriptor) error {
|
|||||||
switch {
|
switch {
|
||||||
case fd.Kind() != protoreflect.GroupKind:
|
case fd.Kind() != protoreflect.GroupKind:
|
||||||
return nil
|
return nil
|
||||||
case fd.Syntax() != protoreflect.Proto2:
|
case fd.Syntax() == protoreflect.Proto3:
|
||||||
return errors.New("invalid under proto2 semantics")
|
return errors.New("invalid under proto3 semantics")
|
||||||
case md == nil || md.IsPlaceholder():
|
case md == nil || md.IsPlaceholder():
|
||||||
return errors.New("message must be resolvable")
|
return errors.New("message must be resolvable")
|
||||||
case fd.FullName().Parent() != md.FullName().Parent():
|
case fd.FullName().Parent() != md.FullName().Parent():
|
||||||
|
|||||||
+51
-80
@@ -5,14 +5,16 @@
|
|||||||
package protodesc
|
package protodesc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
_ "embed"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"google.golang.org/protobuf/internal/editiondefaults"
|
||||||
"google.golang.org/protobuf/internal/filedesc"
|
"google.golang.org/protobuf/internal/filedesc"
|
||||||
"google.golang.org/protobuf/proto"
|
"google.golang.org/protobuf/proto"
|
||||||
|
"google.golang.org/protobuf/reflect/protoreflect"
|
||||||
"google.golang.org/protobuf/types/descriptorpb"
|
"google.golang.org/protobuf/types/descriptorpb"
|
||||||
|
gofeaturespb "google.golang.org/protobuf/types/gofeaturespb"
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@@ -20,14 +22,12 @@ const (
|
|||||||
SupportedEditionsMaximum = descriptorpb.Edition_EDITION_2023
|
SupportedEditionsMaximum = descriptorpb.Edition_EDITION_2023
|
||||||
)
|
)
|
||||||
|
|
||||||
//go:embed editions_defaults.binpb
|
|
||||||
var binaryEditionDefaults []byte
|
|
||||||
var defaults = &descriptorpb.FeatureSetDefaults{}
|
var defaults = &descriptorpb.FeatureSetDefaults{}
|
||||||
var defaultsCacheMu sync.Mutex
|
var defaultsCacheMu sync.Mutex
|
||||||
var defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet)
|
var defaultsCache = make(map[filedesc.Edition]*descriptorpb.FeatureSet)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
err := proto.Unmarshal(binaryEditionDefaults, defaults)
|
err := proto.Unmarshal(editiondefaults.Defaults, defaults)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Fprintf(os.Stderr, "unmarshal editions defaults: %v\n", err)
|
fmt.Fprintf(os.Stderr, "unmarshal editions defaults: %v\n", err)
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
@@ -83,37 +83,56 @@ func getFeatureSetFor(ed filedesc.Edition) *descriptorpb.FeatureSet {
|
|||||||
return fs
|
return fs
|
||||||
}
|
}
|
||||||
|
|
||||||
func resolveFeatureHasFieldPresence(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool {
|
// mergeEditionFeatures merges the parent and child feature sets. This function
|
||||||
fs := fieldDesc.GetOptions().GetFeatures()
|
// should be used when initializing Go descriptors from descriptor protos which
|
||||||
if fs == nil || fs.FieldPresence == nil {
|
// is why the parent is a filedesc.EditionsFeatures (Go representation) while
|
||||||
return fileDesc.L1.EditionFeatures.IsFieldPresence
|
// the child is a descriptorproto.FeatureSet (protoc representation).
|
||||||
|
// Any feature set by the child overwrites what is set by the parent.
|
||||||
|
func mergeEditionFeatures(parentDesc protoreflect.Descriptor, child *descriptorpb.FeatureSet) filedesc.EditionFeatures {
|
||||||
|
var parentFS filedesc.EditionFeatures
|
||||||
|
switch p := parentDesc.(type) {
|
||||||
|
case *filedesc.File:
|
||||||
|
parentFS = p.L1.EditionFeatures
|
||||||
|
case *filedesc.Message:
|
||||||
|
parentFS = p.L1.EditionFeatures
|
||||||
|
default:
|
||||||
|
panic(fmt.Sprintf("unknown parent type %T", parentDesc))
|
||||||
|
}
|
||||||
|
if child == nil {
|
||||||
|
return parentFS
|
||||||
|
}
|
||||||
|
if fp := child.FieldPresence; fp != nil {
|
||||||
|
parentFS.IsFieldPresence = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED ||
|
||||||
|
*fp == descriptorpb.FeatureSet_EXPLICIT
|
||||||
|
parentFS.IsLegacyRequired = *fp == descriptorpb.FeatureSet_LEGACY_REQUIRED
|
||||||
|
}
|
||||||
|
if et := child.EnumType; et != nil {
|
||||||
|
parentFS.IsOpenEnum = *et == descriptorpb.FeatureSet_OPEN
|
||||||
}
|
}
|
||||||
return fs.GetFieldPresence() == descriptorpb.FeatureSet_LEGACY_REQUIRED ||
|
|
||||||
fs.GetFieldPresence() == descriptorpb.FeatureSet_EXPLICIT
|
|
||||||
}
|
|
||||||
|
|
||||||
func resolveFeatureRepeatedFieldEncodingPacked(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool {
|
if rfe := child.RepeatedFieldEncoding; rfe != nil {
|
||||||
fs := fieldDesc.GetOptions().GetFeatures()
|
parentFS.IsPacked = *rfe == descriptorpb.FeatureSet_PACKED
|
||||||
if fs == nil || fs.RepeatedFieldEncoding == nil {
|
|
||||||
return fileDesc.L1.EditionFeatures.IsPacked
|
|
||||||
}
|
}
|
||||||
return fs.GetRepeatedFieldEncoding() == descriptorpb.FeatureSet_PACKED
|
|
||||||
}
|
|
||||||
|
|
||||||
func resolveFeatureEnforceUTF8(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool {
|
if utf8val := child.Utf8Validation; utf8val != nil {
|
||||||
fs := fieldDesc.GetOptions().GetFeatures()
|
parentFS.IsUTF8Validated = *utf8val == descriptorpb.FeatureSet_VERIFY
|
||||||
if fs == nil || fs.Utf8Validation == nil {
|
|
||||||
return fileDesc.L1.EditionFeatures.IsUTF8Validated
|
|
||||||
}
|
}
|
||||||
return fs.GetUtf8Validation() == descriptorpb.FeatureSet_VERIFY
|
|
||||||
}
|
|
||||||
|
|
||||||
func resolveFeatureDelimitedEncoding(fileDesc *filedesc.File, fieldDesc *descriptorpb.FieldDescriptorProto) bool {
|
if me := child.MessageEncoding; me != nil {
|
||||||
fs := fieldDesc.GetOptions().GetFeatures()
|
parentFS.IsDelimitedEncoded = *me == descriptorpb.FeatureSet_DELIMITED
|
||||||
if fs == nil || fs.MessageEncoding == nil {
|
|
||||||
return fileDesc.L1.EditionFeatures.IsDelimitedEncoded
|
|
||||||
}
|
}
|
||||||
return fs.GetMessageEncoding() == descriptorpb.FeatureSet_DELIMITED
|
|
||||||
|
if jf := child.JsonFormat; jf != nil {
|
||||||
|
parentFS.IsJSONCompliant = *jf == descriptorpb.FeatureSet_ALLOW
|
||||||
|
}
|
||||||
|
|
||||||
|
if goFeatures, ok := proto.GetExtension(child, gofeaturespb.E_Go).(*gofeaturespb.GoFeatures); ok && goFeatures != nil {
|
||||||
|
if luje := goFeatures.LegacyUnmarshalJsonEnum; luje != nil {
|
||||||
|
parentFS.GenerateLegacyUnmarshalJSON = *luje
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return parentFS
|
||||||
}
|
}
|
||||||
|
|
||||||
// initFileDescFromFeatureSet initializes editions related fields in fd based
|
// initFileDescFromFeatureSet initializes editions related fields in fd based
|
||||||
@@ -122,56 +141,8 @@ func resolveFeatureDelimitedEncoding(fileDesc *filedesc.File, fieldDesc *descrip
|
|||||||
// before calling this function.
|
// before calling this function.
|
||||||
func initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) {
|
func initFileDescFromFeatureSet(fd *filedesc.File, fs *descriptorpb.FeatureSet) {
|
||||||
dfs := getFeatureSetFor(fd.L1.Edition)
|
dfs := getFeatureSetFor(fd.L1.Edition)
|
||||||
if fs == nil {
|
// initialize the featureset with the defaults
|
||||||
fs = &descriptorpb.FeatureSet{}
|
fd.L1.EditionFeatures = mergeEditionFeatures(fd, dfs)
|
||||||
}
|
// overwrite any options explicitly specified
|
||||||
|
fd.L1.EditionFeatures = mergeEditionFeatures(fd, fs)
|
||||||
var fieldPresence descriptorpb.FeatureSet_FieldPresence
|
|
||||||
if fp := fs.FieldPresence; fp != nil {
|
|
||||||
fieldPresence = *fp
|
|
||||||
} else {
|
|
||||||
fieldPresence = *dfs.FieldPresence
|
|
||||||
}
|
|
||||||
fd.L1.EditionFeatures.IsFieldPresence = fieldPresence == descriptorpb.FeatureSet_LEGACY_REQUIRED ||
|
|
||||||
fieldPresence == descriptorpb.FeatureSet_EXPLICIT
|
|
||||||
|
|
||||||
var enumType descriptorpb.FeatureSet_EnumType
|
|
||||||
if et := fs.EnumType; et != nil {
|
|
||||||
enumType = *et
|
|
||||||
} else {
|
|
||||||
enumType = *dfs.EnumType
|
|
||||||
}
|
|
||||||
fd.L1.EditionFeatures.IsOpenEnum = enumType == descriptorpb.FeatureSet_OPEN
|
|
||||||
|
|
||||||
var respeatedFieldEncoding descriptorpb.FeatureSet_RepeatedFieldEncoding
|
|
||||||
if rfe := fs.RepeatedFieldEncoding; rfe != nil {
|
|
||||||
respeatedFieldEncoding = *rfe
|
|
||||||
} else {
|
|
||||||
respeatedFieldEncoding = *dfs.RepeatedFieldEncoding
|
|
||||||
}
|
|
||||||
fd.L1.EditionFeatures.IsPacked = respeatedFieldEncoding == descriptorpb.FeatureSet_PACKED
|
|
||||||
|
|
||||||
var isUTF8Validated descriptorpb.FeatureSet_Utf8Validation
|
|
||||||
if utf8val := fs.Utf8Validation; utf8val != nil {
|
|
||||||
isUTF8Validated = *utf8val
|
|
||||||
} else {
|
|
||||||
isUTF8Validated = *dfs.Utf8Validation
|
|
||||||
}
|
|
||||||
fd.L1.EditionFeatures.IsUTF8Validated = isUTF8Validated == descriptorpb.FeatureSet_VERIFY
|
|
||||||
|
|
||||||
var messageEncoding descriptorpb.FeatureSet_MessageEncoding
|
|
||||||
if me := fs.MessageEncoding; me != nil {
|
|
||||||
messageEncoding = *me
|
|
||||||
} else {
|
|
||||||
messageEncoding = *dfs.MessageEncoding
|
|
||||||
}
|
|
||||||
fd.L1.EditionFeatures.IsDelimitedEncoded = messageEncoding == descriptorpb.FeatureSet_DELIMITED
|
|
||||||
|
|
||||||
var jsonFormat descriptorpb.FeatureSet_JsonFormat
|
|
||||||
if jf := fs.JsonFormat; jf != nil {
|
|
||||||
jsonFormat = *jf
|
|
||||||
} else {
|
|
||||||
jsonFormat = *dfs.JsonFormat
|
|
||||||
}
|
|
||||||
fd.L1.EditionFeatures.IsJSONCompliant = jsonFormat == descriptorpb.FeatureSet_ALLOW
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -175,6 +175,8 @@ func (s Syntax) String() string {
|
|||||||
return "proto2"
|
return "proto2"
|
||||||
case Proto3:
|
case Proto3:
|
||||||
return "proto3"
|
return "proto3"
|
||||||
|
case Editions:
|
||||||
|
return "editions"
|
||||||
default:
|
default:
|
||||||
return fmt.Sprintf("<unknown:%d>", s)
|
return fmt.Sprintf("<unknown:%d>", s)
|
||||||
}
|
}
|
||||||
|
|||||||
-2
@@ -160,8 +160,6 @@ func (p *SourcePath) appendFileOptions(b []byte) []byte {
|
|||||||
b = p.appendSingularField(b, "java_generic_services", nil)
|
b = p.appendSingularField(b, "java_generic_services", nil)
|
||||||
case 18:
|
case 18:
|
||||||
b = p.appendSingularField(b, "py_generic_services", nil)
|
b = p.appendSingularField(b, "py_generic_services", nil)
|
||||||
case 42:
|
|
||||||
b = p.appendSingularField(b, "php_generic_services", nil)
|
|
||||||
case 23:
|
case 23:
|
||||||
b = p.appendSingularField(b, "deprecated", nil)
|
b = p.appendSingularField(b, "deprecated", nil)
|
||||||
case 31:
|
case 31:
|
||||||
|
|||||||
+627
-635
File diff suppressed because it is too large
Load Diff
+177
@@ -0,0 +1,177 @@
|
|||||||
|
// Protocol Buffers - Google's data interchange format
|
||||||
|
// Copyright 2023 Google Inc. All rights reserved.
|
||||||
|
//
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file or at
|
||||||
|
// https://developers.google.com/open-source/licenses/bsd
|
||||||
|
|
||||||
|
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||||
|
// source: reflect/protodesc/proto/go_features.proto
|
||||||
|
|
||||||
|
package proto
|
||||||
|
|
||||||
|
import (
|
||||||
|
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||||
|
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||||
|
descriptorpb "google.golang.org/protobuf/types/descriptorpb"
|
||||||
|
reflect "reflect"
|
||||||
|
sync "sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GoFeatures struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
// Whether or not to generate the deprecated UnmarshalJSON method for enums.
|
||||||
|
LegacyUnmarshalJsonEnum *bool `protobuf:"varint,1,opt,name=legacy_unmarshal_json_enum,json=legacyUnmarshalJsonEnum" json:"legacy_unmarshal_json_enum,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GoFeatures) Reset() {
|
||||||
|
*x = GoFeatures{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_reflect_protodesc_proto_go_features_proto_msgTypes[0]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GoFeatures) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*GoFeatures) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *GoFeatures) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_reflect_protodesc_proto_go_features_proto_msgTypes[0]
|
||||||
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
return ms
|
||||||
|
}
|
||||||
|
return mi.MessageOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Deprecated: Use GoFeatures.ProtoReflect.Descriptor instead.
|
||||||
|
func (*GoFeatures) Descriptor() ([]byte, []int) {
|
||||||
|
return file_reflect_protodesc_proto_go_features_proto_rawDescGZIP(), []int{0}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *GoFeatures) GetLegacyUnmarshalJsonEnum() bool {
|
||||||
|
if x != nil && x.LegacyUnmarshalJsonEnum != nil {
|
||||||
|
return *x.LegacyUnmarshalJsonEnum
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_reflect_protodesc_proto_go_features_proto_extTypes = []protoimpl.ExtensionInfo{
|
||||||
|
{
|
||||||
|
ExtendedType: (*descriptorpb.FeatureSet)(nil),
|
||||||
|
ExtensionType: (*GoFeatures)(nil),
|
||||||
|
Field: 1002,
|
||||||
|
Name: "google.protobuf.go",
|
||||||
|
Tag: "bytes,1002,opt,name=go",
|
||||||
|
Filename: "reflect/protodesc/proto/go_features.proto",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extension fields to descriptorpb.FeatureSet.
|
||||||
|
var (
|
||||||
|
// optional google.protobuf.GoFeatures go = 1002;
|
||||||
|
E_Go = &file_reflect_protodesc_proto_go_features_proto_extTypes[0]
|
||||||
|
)
|
||||||
|
|
||||||
|
var File_reflect_protodesc_proto_go_features_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
|
var file_reflect_protodesc_proto_go_features_proto_rawDesc = []byte{
|
||||||
|
0x0a, 0x29, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x64,
|
||||||
|
0x65, 0x73, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x6f, 0x5f, 0x66, 0x65, 0x61,
|
||||||
|
0x74, 0x75, 0x72, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x67, 0x6f, 0x6f,
|
||||||
|
0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x1a, 0x20, 0x67, 0x6f,
|
||||||
|
0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65,
|
||||||
|
0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6a,
|
||||||
|
0x0a, 0x0a, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12, 0x5c, 0x0a, 0x1a,
|
||||||
|
0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x5f, 0x75, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68, 0x61, 0x6c,
|
||||||
|
0x5f, 0x6a, 0x73, 0x6f, 0x6e, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08,
|
||||||
|
0x42, 0x1f, 0x88, 0x01, 0x01, 0x98, 0x01, 0x06, 0xa2, 0x01, 0x09, 0x12, 0x04, 0x74, 0x72, 0x75,
|
||||||
|
0x65, 0x18, 0xe6, 0x07, 0xa2, 0x01, 0x0a, 0x12, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x18, 0xe7,
|
||||||
|
0x07, 0x52, 0x17, 0x6c, 0x65, 0x67, 0x61, 0x63, 0x79, 0x55, 0x6e, 0x6d, 0x61, 0x72, 0x73, 0x68,
|
||||||
|
0x61, 0x6c, 0x4a, 0x73, 0x6f, 0x6e, 0x45, 0x6e, 0x75, 0x6d, 0x3a, 0x49, 0x0a, 0x02, 0x67, 0x6f,
|
||||||
|
0x12, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62,
|
||||||
|
0x75, 0x66, 0x2e, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x53, 0x65, 0x74, 0x18, 0xea, 0x07,
|
||||||
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72,
|
||||||
|
0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x47, 0x6f, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65,
|
||||||
|
0x73, 0x52, 0x02, 0x67, 0x6f, 0x42, 0x34, 0x5a, 0x32, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e,
|
||||||
|
0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x67, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
|
0x62, 0x75, 0x66, 0x2f, 0x72, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74,
|
||||||
|
0x6f, 0x64, 0x65, 0x73, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_rawDescOnce sync.Once
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_rawDescData = file_reflect_protodesc_proto_go_features_proto_rawDesc
|
||||||
|
)
|
||||||
|
|
||||||
|
func file_reflect_protodesc_proto_go_features_proto_rawDescGZIP() []byte {
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_rawDescOnce.Do(func() {
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_rawDescData = protoimpl.X.CompressGZIP(file_reflect_protodesc_proto_go_features_proto_rawDescData)
|
||||||
|
})
|
||||||
|
return file_reflect_protodesc_proto_go_features_proto_rawDescData
|
||||||
|
}
|
||||||
|
|
||||||
|
var file_reflect_protodesc_proto_go_features_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||||
|
var file_reflect_protodesc_proto_go_features_proto_goTypes = []interface{}{
|
||||||
|
(*GoFeatures)(nil), // 0: google.protobuf.GoFeatures
|
||||||
|
(*descriptorpb.FeatureSet)(nil), // 1: google.protobuf.FeatureSet
|
||||||
|
}
|
||||||
|
var file_reflect_protodesc_proto_go_features_proto_depIdxs = []int32{
|
||||||
|
1, // 0: google.protobuf.go:extendee -> google.protobuf.FeatureSet
|
||||||
|
0, // 1: google.protobuf.go:type_name -> google.protobuf.GoFeatures
|
||||||
|
2, // [2:2] is the sub-list for method output_type
|
||||||
|
2, // [2:2] is the sub-list for method input_type
|
||||||
|
1, // [1:2] is the sub-list for extension type_name
|
||||||
|
0, // [0:1] is the sub-list for extension extendee
|
||||||
|
0, // [0:0] is the sub-list for field type_name
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() { file_reflect_protodesc_proto_go_features_proto_init() }
|
||||||
|
func file_reflect_protodesc_proto_go_features_proto_init() {
|
||||||
|
if File_reflect_protodesc_proto_go_features_proto != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if !protoimpl.UnsafeEnabled {
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*GoFeatures); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
type x struct{}
|
||||||
|
out := protoimpl.TypeBuilder{
|
||||||
|
File: protoimpl.DescBuilder{
|
||||||
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
|
RawDescriptor: file_reflect_protodesc_proto_go_features_proto_rawDesc,
|
||||||
|
NumEnums: 0,
|
||||||
|
NumMessages: 1,
|
||||||
|
NumExtensions: 1,
|
||||||
|
NumServices: 0,
|
||||||
|
},
|
||||||
|
GoTypes: file_reflect_protodesc_proto_go_features_proto_goTypes,
|
||||||
|
DependencyIndexes: file_reflect_protodesc_proto_go_features_proto_depIdxs,
|
||||||
|
MessageInfos: file_reflect_protodesc_proto_go_features_proto_msgTypes,
|
||||||
|
ExtensionInfos: file_reflect_protodesc_proto_go_features_proto_extTypes,
|
||||||
|
}.Build()
|
||||||
|
File_reflect_protodesc_proto_go_features_proto = out.File
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_rawDesc = nil
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_goTypes = nil
|
||||||
|
file_reflect_protodesc_proto_go_features_proto_depIdxs = nil
|
||||||
|
}
|
||||||
+28
@@ -0,0 +1,28 @@
|
|||||||
|
// Protocol Buffers - Google's data interchange format
|
||||||
|
// Copyright 2023 Google Inc. All rights reserved.
|
||||||
|
//
|
||||||
|
// Use of this source code is governed by a BSD-style
|
||||||
|
// license that can be found in the LICENSE file or at
|
||||||
|
// https://developers.google.com/open-source/licenses/bsd
|
||||||
|
|
||||||
|
syntax = "proto2";
|
||||||
|
|
||||||
|
package google.protobuf;
|
||||||
|
|
||||||
|
import "google/protobuf/descriptor.proto";
|
||||||
|
|
||||||
|
option go_package = "google.golang.org/protobuf/types/gofeaturespb";
|
||||||
|
|
||||||
|
extend google.protobuf.FeatureSet {
|
||||||
|
optional GoFeatures go = 1002;
|
||||||
|
}
|
||||||
|
|
||||||
|
message GoFeatures {
|
||||||
|
// Whether or not to generate the deprecated UnmarshalJSON method for enums.
|
||||||
|
optional bool legacy_unmarshal_json_enum = 1 [
|
||||||
|
retention = RETENTION_RUNTIME,
|
||||||
|
targets = TARGET_TYPE_ENUM,
|
||||||
|
edition_defaults = { edition: EDITION_PROTO2, value: "true" },
|
||||||
|
edition_defaults = { edition: EDITION_PROTO3, value: "false" }
|
||||||
|
];
|
||||||
|
}
|
||||||
Vendored
+3
-1
@@ -2252,7 +2252,7 @@ google.golang.org/grpc/serviceconfig
|
|||||||
google.golang.org/grpc/stats
|
google.golang.org/grpc/stats
|
||||||
google.golang.org/grpc/status
|
google.golang.org/grpc/status
|
||||||
google.golang.org/grpc/tap
|
google.golang.org/grpc/tap
|
||||||
# google.golang.org/protobuf v1.32.0
|
# google.golang.org/protobuf v1.33.0
|
||||||
## explicit; go 1.17
|
## explicit; go 1.17
|
||||||
google.golang.org/protobuf/encoding/protodelim
|
google.golang.org/protobuf/encoding/protodelim
|
||||||
google.golang.org/protobuf/encoding/protojson
|
google.golang.org/protobuf/encoding/protojson
|
||||||
@@ -2261,6 +2261,7 @@ google.golang.org/protobuf/encoding/protowire
|
|||||||
google.golang.org/protobuf/internal/descfmt
|
google.golang.org/protobuf/internal/descfmt
|
||||||
google.golang.org/protobuf/internal/descopts
|
google.golang.org/protobuf/internal/descopts
|
||||||
google.golang.org/protobuf/internal/detrand
|
google.golang.org/protobuf/internal/detrand
|
||||||
|
google.golang.org/protobuf/internal/editiondefaults
|
||||||
google.golang.org/protobuf/internal/encoding/defval
|
google.golang.org/protobuf/internal/encoding/defval
|
||||||
google.golang.org/protobuf/internal/encoding/json
|
google.golang.org/protobuf/internal/encoding/json
|
||||||
google.golang.org/protobuf/internal/encoding/messageset
|
google.golang.org/protobuf/internal/encoding/messageset
|
||||||
@@ -2285,6 +2286,7 @@ google.golang.org/protobuf/reflect/protoregistry
|
|||||||
google.golang.org/protobuf/runtime/protoiface
|
google.golang.org/protobuf/runtime/protoiface
|
||||||
google.golang.org/protobuf/runtime/protoimpl
|
google.golang.org/protobuf/runtime/protoimpl
|
||||||
google.golang.org/protobuf/types/descriptorpb
|
google.golang.org/protobuf/types/descriptorpb
|
||||||
|
google.golang.org/protobuf/types/gofeaturespb
|
||||||
google.golang.org/protobuf/types/known/anypb
|
google.golang.org/protobuf/types/known/anypb
|
||||||
google.golang.org/protobuf/types/known/durationpb
|
google.golang.org/protobuf/types/known/durationpb
|
||||||
google.golang.org/protobuf/types/known/emptypb
|
google.golang.org/protobuf/types/known/emptypb
|
||||||
|
|||||||
Reference in New Issue
Block a user