mirror of
https://github.com/protocolbuffers/protobuf-go.git
synced 2025-04-25 00:02:33 +00:00
all: use typed variant of protoreflect.ValueOf
Change-Id: I7479632b57e7c8efade12a2eb2b855e9c321adb1 Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/196037 Reviewed-by: Damien Neil <dneil@google.com>
This commit is contained in:
parent
705acadcc7
commit
84177c9bf3
@ -24,14 +24,7 @@ import (
|
|||||||
|
|
||||||
var benchV1 = flag.Bool("v1", false, "benchmark the v1 implementation")
|
var benchV1 = flag.Bool("v1", false, "benchmark the v1 implementation")
|
||||||
|
|
||||||
const (
|
const maxRecurseLevel = 3
|
||||||
boolValue = true
|
|
||||||
intValue = 1 << 30
|
|
||||||
floatValue = 3.14159265
|
|
||||||
strValue = "hello world"
|
|
||||||
|
|
||||||
maxRecurseLevel = 3
|
|
||||||
)
|
|
||||||
|
|
||||||
func makeProto() *tpb.TestAllTypes {
|
func makeProto() *tpb.TestAllTypes {
|
||||||
m := &tpb.TestAllTypes{}
|
m := &tpb.TestAllTypes{}
|
||||||
@ -72,34 +65,34 @@ func setScalarField(m pref.Message, fd pref.FieldDescriptor, level int) {
|
|||||||
func scalarField(kind pref.Kind) pref.Value {
|
func scalarField(kind pref.Kind) pref.Value {
|
||||||
switch kind {
|
switch kind {
|
||||||
case pref.BoolKind:
|
case pref.BoolKind:
|
||||||
return pref.ValueOf(boolValue)
|
return pref.ValueOfBool(true)
|
||||||
|
|
||||||
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
||||||
return pref.ValueOf(int32(intValue))
|
return pref.ValueOfInt32(1 << 30)
|
||||||
|
|
||||||
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
||||||
return pref.ValueOf(int64(intValue))
|
return pref.ValueOfInt64(1 << 30)
|
||||||
|
|
||||||
case pref.Uint32Kind, pref.Fixed32Kind:
|
case pref.Uint32Kind, pref.Fixed32Kind:
|
||||||
return pref.ValueOf(uint32(intValue))
|
return pref.ValueOfUint32(1 << 30)
|
||||||
|
|
||||||
case pref.Uint64Kind, pref.Fixed64Kind:
|
case pref.Uint64Kind, pref.Fixed64Kind:
|
||||||
return pref.ValueOf(uint64(intValue))
|
return pref.ValueOfUint64(1 << 30)
|
||||||
|
|
||||||
case pref.FloatKind:
|
case pref.FloatKind:
|
||||||
return pref.ValueOf(float32(floatValue))
|
return pref.ValueOfFloat32(3.14159265)
|
||||||
|
|
||||||
case pref.DoubleKind:
|
case pref.DoubleKind:
|
||||||
return pref.ValueOf(float64(floatValue))
|
return pref.ValueOfFloat64(3.14159265)
|
||||||
|
|
||||||
case pref.BytesKind:
|
case pref.BytesKind:
|
||||||
return pref.ValueOf([]byte(strValue))
|
return pref.ValueOfBytes([]byte("hello world"))
|
||||||
|
|
||||||
case pref.StringKind:
|
case pref.StringKind:
|
||||||
return pref.ValueOf(strValue)
|
return pref.ValueOfString("hello world")
|
||||||
|
|
||||||
case pref.EnumKind:
|
case pref.EnumKind:
|
||||||
return pref.ValueOf(pref.EnumNumber(42))
|
return pref.ValueOfEnum(42)
|
||||||
}
|
}
|
||||||
|
|
||||||
panic(fmt.Sprintf("FieldDescriptor.Kind %v is not valid", kind))
|
panic(fmt.Sprintf("FieldDescriptor.Kind %v is not valid", kind))
|
||||||
|
@ -345,7 +345,7 @@ func unmarshalBool(jval json.Value) (pref.Value, error) {
|
|||||||
return pref.Value{}, unexpectedJSONError{jval}
|
return pref.Value{}, unexpectedJSONError{jval}
|
||||||
}
|
}
|
||||||
b, err := jval.Bool()
|
b, err := jval.Bool()
|
||||||
return pref.ValueOf(b), err
|
return pref.ValueOfBool(b), err
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalInt(jval json.Value, bitSize int) (pref.Value, error) {
|
func unmarshalInt(jval json.Value, bitSize int) (pref.Value, error) {
|
||||||
@ -375,9 +375,9 @@ func getInt(jval json.Value, bitSize int) (pref.Value, error) {
|
|||||||
return pref.Value{}, err
|
return pref.Value{}, err
|
||||||
}
|
}
|
||||||
if bitSize == 32 {
|
if bitSize == 32 {
|
||||||
return pref.ValueOf(int32(n)), nil
|
return pref.ValueOfInt32(int32(n)), nil
|
||||||
}
|
}
|
||||||
return pref.ValueOf(n), nil
|
return pref.ValueOfInt64(n), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalUint(jval json.Value, bitSize int) (pref.Value, error) {
|
func unmarshalUint(jval json.Value, bitSize int) (pref.Value, error) {
|
||||||
@ -407,9 +407,9 @@ func getUint(jval json.Value, bitSize int) (pref.Value, error) {
|
|||||||
return pref.Value{}, err
|
return pref.Value{}, err
|
||||||
}
|
}
|
||||||
if bitSize == 32 {
|
if bitSize == 32 {
|
||||||
return pref.ValueOf(uint32(n)), nil
|
return pref.ValueOfUint32(uint32(n)), nil
|
||||||
}
|
}
|
||||||
return pref.ValueOf(n), nil
|
return pref.ValueOfUint64(n), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalFloat(jval json.Value, bitSize int) (pref.Value, error) {
|
func unmarshalFloat(jval json.Value, bitSize int) (pref.Value, error) {
|
||||||
@ -422,19 +422,19 @@ func unmarshalFloat(jval json.Value, bitSize int) (pref.Value, error) {
|
|||||||
switch s {
|
switch s {
|
||||||
case "NaN":
|
case "NaN":
|
||||||
if bitSize == 32 {
|
if bitSize == 32 {
|
||||||
return pref.ValueOf(float32(math.NaN())), nil
|
return pref.ValueOfFloat32(float32(math.NaN())), nil
|
||||||
}
|
}
|
||||||
return pref.ValueOf(math.NaN()), nil
|
return pref.ValueOfFloat64(math.NaN()), nil
|
||||||
case "Infinity":
|
case "Infinity":
|
||||||
if bitSize == 32 {
|
if bitSize == 32 {
|
||||||
return pref.ValueOf(float32(math.Inf(+1))), nil
|
return pref.ValueOfFloat32(float32(math.Inf(+1))), nil
|
||||||
}
|
}
|
||||||
return pref.ValueOf(math.Inf(+1)), nil
|
return pref.ValueOfFloat64(math.Inf(+1)), nil
|
||||||
case "-Infinity":
|
case "-Infinity":
|
||||||
if bitSize == 32 {
|
if bitSize == 32 {
|
||||||
return pref.ValueOf(float32(math.Inf(-1))), nil
|
return pref.ValueOfFloat32(float32(math.Inf(-1))), nil
|
||||||
}
|
}
|
||||||
return pref.ValueOf(math.Inf(-1)), nil
|
return pref.ValueOfFloat64(math.Inf(-1)), nil
|
||||||
}
|
}
|
||||||
// Decode number from string.
|
// Decode number from string.
|
||||||
if len(s) != len(strings.TrimSpace(s)) {
|
if len(s) != len(strings.TrimSpace(s)) {
|
||||||
@ -456,16 +456,16 @@ func getFloat(jval json.Value, bitSize int) (pref.Value, error) {
|
|||||||
return pref.Value{}, err
|
return pref.Value{}, err
|
||||||
}
|
}
|
||||||
if bitSize == 32 {
|
if bitSize == 32 {
|
||||||
return pref.ValueOf(float32(n)), nil
|
return pref.ValueOfFloat32(float32(n)), nil
|
||||||
}
|
}
|
||||||
return pref.ValueOf(n), nil
|
return pref.ValueOfFloat64(n), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalString(jval json.Value) (pref.Value, error) {
|
func unmarshalString(jval json.Value) (pref.Value, error) {
|
||||||
if jval.Type() != json.String {
|
if jval.Type() != json.String {
|
||||||
return pref.Value{}, unexpectedJSONError{jval}
|
return pref.Value{}, unexpectedJSONError{jval}
|
||||||
}
|
}
|
||||||
return pref.ValueOf(jval.String()), nil
|
return pref.ValueOfString(jval.String()), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalBytes(jval json.Value) (pref.Value, error) {
|
func unmarshalBytes(jval json.Value) (pref.Value, error) {
|
||||||
@ -485,7 +485,7 @@ func unmarshalBytes(jval json.Value) (pref.Value, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return pref.Value{}, err
|
return pref.Value{}, err
|
||||||
}
|
}
|
||||||
return pref.ValueOf(b), nil
|
return pref.ValueOfBytes(b), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmarshalEnum(jval json.Value, fd pref.FieldDescriptor) (pref.Value, error) {
|
func unmarshalEnum(jval json.Value, fd pref.FieldDescriptor) (pref.Value, error) {
|
||||||
@ -494,7 +494,7 @@ func unmarshalEnum(jval json.Value, fd pref.FieldDescriptor) (pref.Value, error)
|
|||||||
// Lookup EnumNumber based on name.
|
// Lookup EnumNumber based on name.
|
||||||
s := jval.String()
|
s := jval.String()
|
||||||
if enumVal := fd.Enum().Values().ByName(pref.Name(s)); enumVal != nil {
|
if enumVal := fd.Enum().Values().ByName(pref.Name(s)); enumVal != nil {
|
||||||
return pref.ValueOf(enumVal.Number()), nil
|
return pref.ValueOfEnum(enumVal.Number()), nil
|
||||||
}
|
}
|
||||||
return pref.Value{}, newError("invalid enum value %q", jval)
|
return pref.Value{}, newError("invalid enum value %q", jval)
|
||||||
|
|
||||||
@ -503,12 +503,12 @@ func unmarshalEnum(jval json.Value, fd pref.FieldDescriptor) (pref.Value, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return pref.Value{}, err
|
return pref.Value{}, err
|
||||||
}
|
}
|
||||||
return pref.ValueOf(pref.EnumNumber(n)), nil
|
return pref.ValueOfEnum(pref.EnumNumber(n)), nil
|
||||||
|
|
||||||
case json.Null:
|
case json.Null:
|
||||||
// This is only valid for google.protobuf.NullValue.
|
// This is only valid for google.protobuf.NullValue.
|
||||||
if isNullValue(fd) {
|
if isNullValue(fd) {
|
||||||
return pref.ValueOf(pref.EnumNumber(0)), nil
|
return pref.ValueOfEnum(0), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -640,14 +640,14 @@ func unmarshalMapKey(name string, fd pref.FieldDescriptor) (pref.MapKey, error)
|
|||||||
kind := fd.Kind()
|
kind := fd.Kind()
|
||||||
switch kind {
|
switch kind {
|
||||||
case pref.StringKind:
|
case pref.StringKind:
|
||||||
return pref.ValueOf(name).MapKey(), nil
|
return pref.ValueOfString(name).MapKey(), nil
|
||||||
|
|
||||||
case pref.BoolKind:
|
case pref.BoolKind:
|
||||||
switch name {
|
switch name {
|
||||||
case "true":
|
case "true":
|
||||||
return pref.ValueOf(true).MapKey(), nil
|
return pref.ValueOfBool(true).MapKey(), nil
|
||||||
case "false":
|
case "false":
|
||||||
return pref.ValueOf(false).MapKey(), nil
|
return pref.ValueOfBool(false).MapKey(), nil
|
||||||
}
|
}
|
||||||
return pref.MapKey{}, errors.New("invalid value for boolean key %q", name)
|
return pref.MapKey{}, errors.New("invalid value for boolean key %q", name)
|
||||||
|
|
||||||
@ -656,28 +656,28 @@ func unmarshalMapKey(name string, fd pref.FieldDescriptor) (pref.MapKey, error)
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return pref.MapKey{}, err
|
return pref.MapKey{}, err
|
||||||
}
|
}
|
||||||
return pref.ValueOf(int32(n)).MapKey(), nil
|
return pref.ValueOfInt32(int32(n)).MapKey(), nil
|
||||||
|
|
||||||
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
||||||
n, err := strconv.ParseInt(name, base10, b64)
|
n, err := strconv.ParseInt(name, base10, b64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pref.MapKey{}, err
|
return pref.MapKey{}, err
|
||||||
}
|
}
|
||||||
return pref.ValueOf(int64(n)).MapKey(), nil
|
return pref.ValueOfInt64(int64(n)).MapKey(), nil
|
||||||
|
|
||||||
case pref.Uint32Kind, pref.Fixed32Kind:
|
case pref.Uint32Kind, pref.Fixed32Kind:
|
||||||
n, err := strconv.ParseUint(name, base10, b32)
|
n, err := strconv.ParseUint(name, base10, b32)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pref.MapKey{}, err
|
return pref.MapKey{}, err
|
||||||
}
|
}
|
||||||
return pref.ValueOf(uint32(n)).MapKey(), nil
|
return pref.ValueOfUint32(uint32(n)).MapKey(), nil
|
||||||
|
|
||||||
case pref.Uint64Kind, pref.Fixed64Kind:
|
case pref.Uint64Kind, pref.Fixed64Kind:
|
||||||
n, err := strconv.ParseUint(name, base10, b64)
|
n, err := strconv.ParseUint(name, base10, b64)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return pref.MapKey{}, err
|
return pref.MapKey{}, err
|
||||||
}
|
}
|
||||||
return pref.ValueOf(uint64(n)).MapKey(), nil
|
return pref.ValueOfUint64(uint64(n)).MapKey(), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
panic(fmt.Sprintf("%s: invalid kind %s for map key", fd.FullName(), kind))
|
panic(fmt.Sprintf("%s: invalid kind %s for map key", fd.FullName(), kind))
|
||||||
|
@ -261,8 +261,8 @@ func (o UnmarshalOptions) unmarshalAny(m pref.Message) error {
|
|||||||
fdType := fds.ByNumber(fieldnum.Any_TypeUrl)
|
fdType := fds.ByNumber(fieldnum.Any_TypeUrl)
|
||||||
fdValue := fds.ByNumber(fieldnum.Any_Value)
|
fdValue := fds.ByNumber(fieldnum.Any_Value)
|
||||||
|
|
||||||
m.Set(fdType, pref.ValueOf(typeURL))
|
m.Set(fdType, pref.ValueOfString(typeURL))
|
||||||
m.Set(fdValue, pref.ValueOf(b))
|
m.Set(fdValue, pref.ValueOfBytes(b))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -541,7 +541,7 @@ func (o UnmarshalOptions) unmarshalKnownValue(m pref.Message) error {
|
|||||||
case json.Null:
|
case json.Null:
|
||||||
o.decoder.Read()
|
o.decoder.Read()
|
||||||
fd := m.Descriptor().Fields().ByNumber(fieldnum.Value_NullValue)
|
fd := m.Descriptor().Fields().ByNumber(fieldnum.Value_NullValue)
|
||||||
m.Set(fd, pref.ValueOf(pref.EnumNumber(0)))
|
m.Set(fd, pref.ValueOfEnum(0))
|
||||||
|
|
||||||
case json.Bool:
|
case json.Bool:
|
||||||
jval, err := o.decoder.Read()
|
jval, err := o.decoder.Read()
|
||||||
@ -687,8 +687,8 @@ func (o UnmarshalOptions) unmarshalDuration(m pref.Message) error {
|
|||||||
fdSeconds := fds.ByNumber(fieldnum.Duration_Seconds)
|
fdSeconds := fds.ByNumber(fieldnum.Duration_Seconds)
|
||||||
fdNanos := fds.ByNumber(fieldnum.Duration_Nanos)
|
fdNanos := fds.ByNumber(fieldnum.Duration_Nanos)
|
||||||
|
|
||||||
m.Set(fdSeconds, pref.ValueOf(secs))
|
m.Set(fdSeconds, pref.ValueOfInt64(secs))
|
||||||
m.Set(fdNanos, pref.ValueOf(nanos))
|
m.Set(fdNanos, pref.ValueOfInt32(nanos))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -871,8 +871,8 @@ func (o UnmarshalOptions) unmarshalTimestamp(m pref.Message) error {
|
|||||||
fdSeconds := fds.ByNumber(fieldnum.Timestamp_Seconds)
|
fdSeconds := fds.ByNumber(fieldnum.Timestamp_Seconds)
|
||||||
fdNanos := fds.ByNumber(fieldnum.Timestamp_Nanos)
|
fdNanos := fds.ByNumber(fieldnum.Timestamp_Nanos)
|
||||||
|
|
||||||
m.Set(fdSeconds, pref.ValueOf(secs))
|
m.Set(fdSeconds, pref.ValueOfInt64(secs))
|
||||||
m.Set(fdNanos, pref.ValueOf(int32(t.Nanosecond())))
|
m.Set(fdNanos, pref.ValueOfInt32(int32(t.Nanosecond())))
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -921,7 +921,7 @@ func (o UnmarshalOptions) unmarshalFieldMask(m pref.Message) error {
|
|||||||
s = strings.TrimSpace(s)
|
s = strings.TrimSpace(s)
|
||||||
// Convert to snake_case. Unlike encoding, no validation is done because
|
// Convert to snake_case. Unlike encoding, no validation is done because
|
||||||
// it is not possible to know the original path names.
|
// it is not possible to know the original path names.
|
||||||
list.Append(pref.ValueOf(strs.JSONSnakeCase(s)))
|
list.Append(pref.ValueOfString(strs.JSONSnakeCase(s)))
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -256,53 +256,53 @@ func unmarshalScalar(input text.Value, fd pref.FieldDescriptor) (pref.Value, err
|
|||||||
switch kind := fd.Kind(); kind {
|
switch kind := fd.Kind(); kind {
|
||||||
case pref.BoolKind:
|
case pref.BoolKind:
|
||||||
if b, ok := input.Bool(); ok {
|
if b, ok := input.Bool(); ok {
|
||||||
return pref.ValueOf(bool(b)), nil
|
return pref.ValueOfBool(bool(b)), nil
|
||||||
}
|
}
|
||||||
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
||||||
if n, ok := input.Int(b32); ok {
|
if n, ok := input.Int(b32); ok {
|
||||||
return pref.ValueOf(int32(n)), nil
|
return pref.ValueOfInt32(int32(n)), nil
|
||||||
}
|
}
|
||||||
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
||||||
if n, ok := input.Int(b64); ok {
|
if n, ok := input.Int(b64); ok {
|
||||||
return pref.ValueOf(int64(n)), nil
|
return pref.ValueOfInt64(int64(n)), nil
|
||||||
}
|
}
|
||||||
case pref.Uint32Kind, pref.Fixed32Kind:
|
case pref.Uint32Kind, pref.Fixed32Kind:
|
||||||
if n, ok := input.Uint(b32); ok {
|
if n, ok := input.Uint(b32); ok {
|
||||||
return pref.ValueOf(uint32(n)), nil
|
return pref.ValueOfUint32(uint32(n)), nil
|
||||||
}
|
}
|
||||||
case pref.Uint64Kind, pref.Fixed64Kind:
|
case pref.Uint64Kind, pref.Fixed64Kind:
|
||||||
if n, ok := input.Uint(b64); ok {
|
if n, ok := input.Uint(b64); ok {
|
||||||
return pref.ValueOf(uint64(n)), nil
|
return pref.ValueOfUint64(uint64(n)), nil
|
||||||
}
|
}
|
||||||
case pref.FloatKind:
|
case pref.FloatKind:
|
||||||
if n, ok := input.Float(b32); ok {
|
if n, ok := input.Float(b32); ok {
|
||||||
return pref.ValueOf(float32(n)), nil
|
return pref.ValueOfFloat32(float32(n)), nil
|
||||||
}
|
}
|
||||||
case pref.DoubleKind:
|
case pref.DoubleKind:
|
||||||
if n, ok := input.Float(b64); ok {
|
if n, ok := input.Float(b64); ok {
|
||||||
return pref.ValueOf(float64(n)), nil
|
return pref.ValueOfFloat64(float64(n)), nil
|
||||||
}
|
}
|
||||||
case pref.StringKind:
|
case pref.StringKind:
|
||||||
if input.Type() == text.String {
|
if input.Type() == text.String {
|
||||||
s := input.String()
|
s := input.String()
|
||||||
if utf8.ValidString(s) {
|
if utf8.ValidString(s) {
|
||||||
return pref.ValueOf(s), nil
|
return pref.ValueOfString(s), nil
|
||||||
}
|
}
|
||||||
return pref.Value{}, errors.InvalidUTF8(string(fd.FullName()))
|
return pref.Value{}, errors.InvalidUTF8(string(fd.FullName()))
|
||||||
}
|
}
|
||||||
case pref.BytesKind:
|
case pref.BytesKind:
|
||||||
if input.Type() == text.String {
|
if input.Type() == text.String {
|
||||||
return pref.ValueOf([]byte(input.String())), nil
|
return pref.ValueOfBytes([]byte(input.String())), nil
|
||||||
}
|
}
|
||||||
case pref.EnumKind:
|
case pref.EnumKind:
|
||||||
// If input is int32, use directly.
|
// If input is int32, use directly.
|
||||||
if n, ok := input.Int(b32); ok {
|
if n, ok := input.Int(b32); ok {
|
||||||
return pref.ValueOf(pref.EnumNumber(n)), nil
|
return pref.ValueOfEnum(pref.EnumNumber(n)), nil
|
||||||
}
|
}
|
||||||
if name, ok := input.Name(); ok {
|
if name, ok := input.Name(); ok {
|
||||||
// Lookup EnumNumber based on name.
|
// Lookup EnumNumber based on name.
|
||||||
if enumVal := fd.Enum().Values().ByName(name); enumVal != nil {
|
if enumVal := fd.Enum().Values().ByName(name); enumVal != nil {
|
||||||
return pref.ValueOf(enumVal.Number()), nil
|
return pref.ValueOfEnum(enumVal.Number()), nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
@ -488,8 +488,8 @@ func (o UnmarshalOptions) unmarshalAny(tfield [2]text.Value, m pref.Message) err
|
|||||||
fdType := fds.ByNumber(fieldnum.Any_TypeUrl)
|
fdType := fds.ByNumber(fieldnum.Any_TypeUrl)
|
||||||
fdValue := fds.ByNumber(fieldnum.Any_Value)
|
fdValue := fds.ByNumber(fieldnum.Any_Value)
|
||||||
|
|
||||||
m.Set(fdType, pref.ValueOf(typeURL))
|
m.Set(fdType, pref.ValueOfString(typeURL))
|
||||||
m.Set(fdValue, pref.ValueOf(b))
|
m.Set(fdValue, pref.ValueOfBytes(b))
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -41,16 +41,16 @@ func Unmarshal(s string, k pref.Kind, evs pref.EnumValueDescriptors, f Format) (
|
|||||||
if f == GoTag {
|
if f == GoTag {
|
||||||
switch s {
|
switch s {
|
||||||
case "1":
|
case "1":
|
||||||
return pref.ValueOf(true), nil, nil
|
return pref.ValueOfBool(true), nil, nil
|
||||||
case "0":
|
case "0":
|
||||||
return pref.ValueOf(false), nil, nil
|
return pref.ValueOfBool(false), nil, nil
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
switch s {
|
switch s {
|
||||||
case "true":
|
case "true":
|
||||||
return pref.ValueOf(true), nil, nil
|
return pref.ValueOfBool(true), nil, nil
|
||||||
case "false":
|
case "false":
|
||||||
return pref.ValueOf(false), nil, nil
|
return pref.ValueOfBool(false), nil, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case pref.EnumKind:
|
case pref.EnumKind:
|
||||||
@ -58,31 +58,31 @@ func Unmarshal(s string, k pref.Kind, evs pref.EnumValueDescriptors, f Format) (
|
|||||||
// Go tags use the numeric form of the enum value.
|
// Go tags use the numeric form of the enum value.
|
||||||
if n, err := strconv.ParseInt(s, 10, 32); err == nil {
|
if n, err := strconv.ParseInt(s, 10, 32); err == nil {
|
||||||
if ev := evs.ByNumber(pref.EnumNumber(n)); ev != nil {
|
if ev := evs.ByNumber(pref.EnumNumber(n)); ev != nil {
|
||||||
return pref.ValueOf(ev.Number()), ev, nil
|
return pref.ValueOfEnum(ev.Number()), ev, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Descriptor default_value use the enum identifier.
|
// Descriptor default_value use the enum identifier.
|
||||||
ev := evs.ByName(pref.Name(s))
|
ev := evs.ByName(pref.Name(s))
|
||||||
if ev != nil {
|
if ev != nil {
|
||||||
return pref.ValueOf(ev.Number()), ev, nil
|
return pref.ValueOfEnum(ev.Number()), ev, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
||||||
if v, err := strconv.ParseInt(s, 10, 32); err == nil {
|
if v, err := strconv.ParseInt(s, 10, 32); err == nil {
|
||||||
return pref.ValueOf(int32(v)), nil, nil
|
return pref.ValueOfInt32(int32(v)), nil, nil
|
||||||
}
|
}
|
||||||
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
||||||
if v, err := strconv.ParseInt(s, 10, 64); err == nil {
|
if v, err := strconv.ParseInt(s, 10, 64); err == nil {
|
||||||
return pref.ValueOf(int64(v)), nil, nil
|
return pref.ValueOfInt64(int64(v)), nil, nil
|
||||||
}
|
}
|
||||||
case pref.Uint32Kind, pref.Fixed32Kind:
|
case pref.Uint32Kind, pref.Fixed32Kind:
|
||||||
if v, err := strconv.ParseUint(s, 10, 32); err == nil {
|
if v, err := strconv.ParseUint(s, 10, 32); err == nil {
|
||||||
return pref.ValueOf(uint32(v)), nil, nil
|
return pref.ValueOfUint32(uint32(v)), nil, nil
|
||||||
}
|
}
|
||||||
case pref.Uint64Kind, pref.Fixed64Kind:
|
case pref.Uint64Kind, pref.Fixed64Kind:
|
||||||
if v, err := strconv.ParseUint(s, 10, 64); err == nil {
|
if v, err := strconv.ParseUint(s, 10, 64); err == nil {
|
||||||
return pref.ValueOf(uint64(v)), nil, nil
|
return pref.ValueOfUint64(uint64(v)), nil, nil
|
||||||
}
|
}
|
||||||
case pref.FloatKind, pref.DoubleKind:
|
case pref.FloatKind, pref.DoubleKind:
|
||||||
var v float64
|
var v float64
|
||||||
@ -99,17 +99,17 @@ func Unmarshal(s string, k pref.Kind, evs pref.EnumValueDescriptors, f Format) (
|
|||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
if k == pref.FloatKind {
|
if k == pref.FloatKind {
|
||||||
return pref.ValueOf(float32(v)), nil, nil
|
return pref.ValueOfFloat32(float32(v)), nil, nil
|
||||||
} else {
|
} else {
|
||||||
return pref.ValueOf(float64(v)), nil, nil
|
return pref.ValueOfFloat64(float64(v)), nil, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case pref.StringKind:
|
case pref.StringKind:
|
||||||
// String values are already unescaped and can be used as is.
|
// String values are already unescaped and can be used as is.
|
||||||
return pref.ValueOf(s), nil, nil
|
return pref.ValueOfString(s), nil, nil
|
||||||
case pref.BytesKind:
|
case pref.BytesKind:
|
||||||
if b, ok := unmarshalBytes(s); ok {
|
if b, ok := unmarshalBytes(s); ok {
|
||||||
return pref.ValueOf(b), nil, nil
|
return pref.ValueOfBytes(b), nil, nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return pref.Value{}, nil, errors.New("could not parse value for %v: %q", k, s)
|
return pref.Value{}, nil, errors.New("could not parse value for %v: %q", k, s)
|
||||||
|
@ -533,7 +533,7 @@ func unmarshalDefault(b []byte, k pref.Kind, pf *File, ed pref.EnumDescriptor) d
|
|||||||
// If we are unable to resolve the enum dependency, use a placeholder
|
// If we are unable to resolve the enum dependency, use a placeholder
|
||||||
// enum value since we will not be able to parse the default value.
|
// enum value since we will not be able to parse the default value.
|
||||||
if ed.IsPlaceholder() && pref.Name(b).IsValid() {
|
if ed.IsPlaceholder() && pref.Name(b).IsValid() {
|
||||||
v := pref.ValueOf(pref.EnumNumber(0))
|
v := pref.ValueOfEnum(0)
|
||||||
ev := PlaceholderEnumValue(ed.FullName().Parent().Append(pref.Name(b)))
|
ev := PlaceholderEnumValue(ed.FullName().Parent().Append(pref.Name(b)))
|
||||||
return DefaultValue(v, ev)
|
return DefaultValue(v, ev)
|
||||||
}
|
}
|
||||||
@ -561,28 +561,28 @@ func (dv *defaultValue) get(fd pref.FieldDescriptor) pref.Value {
|
|||||||
}
|
}
|
||||||
switch fd.Kind() {
|
switch fd.Kind() {
|
||||||
case pref.BoolKind:
|
case pref.BoolKind:
|
||||||
return pref.ValueOf(false)
|
return pref.ValueOfBool(false)
|
||||||
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
||||||
return pref.ValueOf(int32(0))
|
return pref.ValueOfInt32(0)
|
||||||
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
||||||
return pref.ValueOf(int64(0))
|
return pref.ValueOfInt64(0)
|
||||||
case pref.Uint32Kind, pref.Fixed32Kind:
|
case pref.Uint32Kind, pref.Fixed32Kind:
|
||||||
return pref.ValueOf(uint32(0))
|
return pref.ValueOfUint32(0)
|
||||||
case pref.Uint64Kind, pref.Fixed64Kind:
|
case pref.Uint64Kind, pref.Fixed64Kind:
|
||||||
return pref.ValueOf(uint64(0))
|
return pref.ValueOfUint64(0)
|
||||||
case pref.FloatKind:
|
case pref.FloatKind:
|
||||||
return pref.ValueOf(float32(0))
|
return pref.ValueOfFloat32(0)
|
||||||
case pref.DoubleKind:
|
case pref.DoubleKind:
|
||||||
return pref.ValueOf(float64(0))
|
return pref.ValueOfFloat64(0)
|
||||||
case pref.StringKind:
|
case pref.StringKind:
|
||||||
return pref.ValueOf(string(""))
|
return pref.ValueOfString("")
|
||||||
case pref.BytesKind:
|
case pref.BytesKind:
|
||||||
return pref.ValueOf([]byte(nil))
|
return pref.ValueOfBytes(nil)
|
||||||
case pref.EnumKind:
|
case pref.EnumKind:
|
||||||
if evs := fd.Enum().Values(); evs.Len() > 0 {
|
if evs := fd.Enum().Values(); evs.Len() > 0 {
|
||||||
return pref.ValueOf(evs.Get(0).Number())
|
return pref.ValueOfEnum(evs.Get(0).Number())
|
||||||
}
|
}
|
||||||
return pref.ValueOf(pref.EnumNumber(0))
|
return pref.ValueOfEnum(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -451,7 +451,7 @@ func (fd *Field) unmarshalFull(b []byte, sb *strs.Builder, pf *File, pd pref.Des
|
|||||||
case fieldnum.FieldDescriptorProto_JsonName:
|
case fieldnum.FieldDescriptorProto_JsonName:
|
||||||
fd.L1.JSONName = JSONName(sb.MakeString(v))
|
fd.L1.JSONName = JSONName(sb.MakeString(v))
|
||||||
case fieldnum.FieldDescriptorProto_DefaultValue:
|
case fieldnum.FieldDescriptorProto_DefaultValue:
|
||||||
fd.L1.Default.val = pref.ValueOf(v) // temporarily store as bytes; later resolved in resolveMessages
|
fd.L1.Default.val = pref.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveMessages
|
||||||
case fieldnum.FieldDescriptorProto_TypeName:
|
case fieldnum.FieldDescriptorProto_TypeName:
|
||||||
rawTypeName = v
|
rawTypeName = v
|
||||||
case fieldnum.FieldDescriptorProto_Options:
|
case fieldnum.FieldDescriptorProto_Options:
|
||||||
@ -544,7 +544,7 @@ func (xd *Extension) unmarshalFull(b []byte, sb *strs.Builder) {
|
|||||||
case fieldnum.FieldDescriptorProto_JsonName:
|
case fieldnum.FieldDescriptorProto_JsonName:
|
||||||
xd.L2.JSONName = JSONName(sb.MakeString(v))
|
xd.L2.JSONName = JSONName(sb.MakeString(v))
|
||||||
case fieldnum.FieldDescriptorProto_DefaultValue:
|
case fieldnum.FieldDescriptorProto_DefaultValue:
|
||||||
xd.L2.Default.val = pref.ValueOf(v) // temporarily store as bytes; later resolved in resolveExtensions
|
xd.L2.Default.val = pref.ValueOfBytes(v) // temporarily store as bytes; later resolved in resolveExtensions
|
||||||
case fieldnum.FieldDescriptorProto_TypeName:
|
case fieldnum.FieldDescriptorProto_TypeName:
|
||||||
rawTypeName = v
|
rawTypeName = v
|
||||||
case fieldnum.FieldDescriptorProto_Options:
|
case fieldnum.FieldDescriptorProto_Options:
|
||||||
|
@ -76,15 +76,15 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
boolZero = pref.ValueOf(bool(false))
|
boolZero = pref.ValueOfBool(false)
|
||||||
int32Zero = pref.ValueOf(int32(0))
|
int32Zero = pref.ValueOfInt32(0)
|
||||||
int64Zero = pref.ValueOf(int64(0))
|
int64Zero = pref.ValueOfInt64(0)
|
||||||
uint32Zero = pref.ValueOf(uint32(0))
|
uint32Zero = pref.ValueOfUint32(0)
|
||||||
uint64Zero = pref.ValueOf(uint64(0))
|
uint64Zero = pref.ValueOfUint64(0)
|
||||||
float32Zero = pref.ValueOf(float32(0))
|
float32Zero = pref.ValueOfFloat32(0)
|
||||||
float64Zero = pref.ValueOf(float64(0))
|
float64Zero = pref.ValueOfFloat64(0)
|
||||||
stringZero = pref.ValueOf(string(""))
|
stringZero = pref.ValueOfString("")
|
||||||
bytesZero = pref.ValueOf([]byte(nil))
|
bytesZero = pref.ValueOfBytes(nil)
|
||||||
)
|
)
|
||||||
|
|
||||||
func newSingularConverter(t reflect.Type, fd pref.FieldDescriptor) Converter {
|
func newSingularConverter(t reflect.Type, fd pref.FieldDescriptor) Converter {
|
||||||
@ -376,7 +376,7 @@ type enumConverter struct {
|
|||||||
func newEnumConverter(goType reflect.Type, fd pref.FieldDescriptor) Converter {
|
func newEnumConverter(goType reflect.Type, fd pref.FieldDescriptor) Converter {
|
||||||
var def pref.Value
|
var def pref.Value
|
||||||
if fd.Cardinality() == pref.Repeated {
|
if fd.Cardinality() == pref.Repeated {
|
||||||
def = pref.ValueOf(fd.Enum().Values().Get(0).Number())
|
def = pref.ValueOfEnum(fd.Enum().Values().Get(0).Number())
|
||||||
} else {
|
} else {
|
||||||
def = fd.Default()
|
def = fd.Default()
|
||||||
}
|
}
|
||||||
@ -387,7 +387,7 @@ func (c *enumConverter) PBValueOf(v reflect.Value) pref.Value {
|
|||||||
if v.Type() != c.goType {
|
if v.Type() != c.goType {
|
||||||
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
||||||
}
|
}
|
||||||
return pref.ValueOf(pref.EnumNumber(v.Int()))
|
return pref.ValueOfEnum(pref.EnumNumber(v.Int()))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *enumConverter) GoValueOf(v pref.Value) reflect.Value {
|
func (c *enumConverter) GoValueOf(v pref.Value) reflect.Value {
|
||||||
@ -424,9 +424,9 @@ func (c *messageConverter) PBValueOf(v reflect.Value) pref.Value {
|
|||||||
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
||||||
}
|
}
|
||||||
if m, ok := v.Interface().(pref.ProtoMessage); ok {
|
if m, ok := v.Interface().(pref.ProtoMessage); ok {
|
||||||
return pref.ValueOf(m.ProtoReflect())
|
return pref.ValueOfMessage(m.ProtoReflect())
|
||||||
}
|
}
|
||||||
return pref.ValueOf(legacyWrapMessage(v).ProtoReflect())
|
return pref.ValueOfMessage(legacyWrapMessage(v).ProtoReflect())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *messageConverter) GoValueOf(v pref.Value) reflect.Value {
|
func (c *messageConverter) GoValueOf(v pref.Value) reflect.Value {
|
||||||
|
@ -32,7 +32,7 @@ func (c *listConverter) PBValueOf(v reflect.Value) pref.Value {
|
|||||||
}
|
}
|
||||||
pv := reflect.New(c.goType)
|
pv := reflect.New(c.goType)
|
||||||
pv.Elem().Set(v)
|
pv.Elem().Set(v)
|
||||||
return pref.ValueOf(&listReflect{pv, c.c})
|
return pref.ValueOfList(&listReflect{pv, c.c})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *listConverter) GoValueOf(v pref.Value) reflect.Value {
|
func (c *listConverter) GoValueOf(v pref.Value) reflect.Value {
|
||||||
@ -56,11 +56,11 @@ func (c *listConverter) IsValidGo(v reflect.Value) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *listConverter) New() pref.Value {
|
func (c *listConverter) New() pref.Value {
|
||||||
return pref.ValueOf(&listReflect{reflect.New(c.goType), c.c})
|
return pref.ValueOfList(&listReflect{reflect.New(c.goType), c.c})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *listConverter) Zero() pref.Value {
|
func (c *listConverter) Zero() pref.Value {
|
||||||
return pref.ValueOf(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c})
|
return pref.ValueOfList(&listReflect{reflect.Zero(reflect.PtrTo(c.goType)), c.c})
|
||||||
}
|
}
|
||||||
|
|
||||||
type listPtrConverter struct {
|
type listPtrConverter struct {
|
||||||
@ -72,7 +72,7 @@ func (c *listPtrConverter) PBValueOf(v reflect.Value) pref.Value {
|
|||||||
if v.Type() != c.goType {
|
if v.Type() != c.goType {
|
||||||
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
||||||
}
|
}
|
||||||
return pref.ValueOf(&listReflect{v, c.c})
|
return pref.ValueOfList(&listReflect{v, c.c})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *listPtrConverter) GoValueOf(v pref.Value) reflect.Value {
|
func (c *listPtrConverter) GoValueOf(v pref.Value) reflect.Value {
|
||||||
|
@ -31,7 +31,7 @@ func (c *mapConverter) PBValueOf(v reflect.Value) pref.Value {
|
|||||||
if v.Type() != c.goType {
|
if v.Type() != c.goType {
|
||||||
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
panic(fmt.Sprintf("invalid type: got %v, want %v", v.Type(), c.goType))
|
||||||
}
|
}
|
||||||
return pref.ValueOf(&mapReflect{v, c.keyConv, c.valConv})
|
return pref.ValueOfMap(&mapReflect{v, c.keyConv, c.valConv})
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *mapConverter) GoValueOf(v pref.Value) reflect.Value {
|
func (c *mapConverter) GoValueOf(v pref.Value) reflect.Value {
|
||||||
|
@ -236,10 +236,10 @@ func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey,
|
|||||||
fd.L1.Options = func() pref.ProtoMessage {
|
fd.L1.Options = func() pref.ProtoMessage {
|
||||||
opts := descopts.Field.ProtoReflect().New()
|
opts := descopts.Field.ProtoReflect().New()
|
||||||
if fd.L1.IsWeak {
|
if fd.L1.IsWeak {
|
||||||
opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOf(true))
|
opts.Set(opts.Descriptor().Fields().ByName("weak"), protoreflect.ValueOfBool(true))
|
||||||
}
|
}
|
||||||
if fd.L1.HasPacked {
|
if fd.L1.HasPacked {
|
||||||
opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOf(fd.L1.IsPacked))
|
opts.Set(opts.Descriptor().Fields().ByName("packed"), protoreflect.ValueOfBool(fd.L1.IsPacked))
|
||||||
}
|
}
|
||||||
return opts.Interface()
|
return opts.Interface()
|
||||||
}
|
}
|
||||||
@ -273,7 +273,7 @@ func aberrantAppendField(md *filedesc.Message, goType reflect.Type, tag, tagKey,
|
|||||||
md2.L2.IsMapEntry = true
|
md2.L2.IsMapEntry = true
|
||||||
md2.L2.Options = func() pref.ProtoMessage {
|
md2.L2.Options = func() pref.ProtoMessage {
|
||||||
opts := descopts.Message.ProtoReflect().New()
|
opts := descopts.Message.ProtoReflect().New()
|
||||||
opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOf(true))
|
opts.Set(opts.Descriptor().Fields().ByName("map_entry"), protoreflect.ValueOfBool(true))
|
||||||
return opts.Interface()
|
return opts.Interface()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,7 +99,7 @@ func fieldInfoForOneof(fd pref.FieldDescriptor, fs reflect.StructField, x export
|
|||||||
}
|
}
|
||||||
rv = rv.Elem().Elem().Field(0)
|
rv = rv.Elem().Elem().Field(0)
|
||||||
if rv.IsNil() {
|
if rv.IsNil() {
|
||||||
rv.Set(conv.GoValueOf(pref.ValueOf(conv.New().Message())))
|
rv.Set(conv.GoValueOf(pref.ValueOfMessage(conv.New().Message())))
|
||||||
}
|
}
|
||||||
return conv.PBValueOf(rv)
|
return conv.PBValueOf(rv)
|
||||||
},
|
},
|
||||||
@ -324,14 +324,14 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn
|
|||||||
get: func(p pointer) pref.Value {
|
get: func(p pointer) pref.Value {
|
||||||
lazyInit()
|
lazyInit()
|
||||||
if p.IsNil() {
|
if p.IsNil() {
|
||||||
return pref.ValueOf(messageType.Zero())
|
return pref.ValueOfMessage(messageType.Zero())
|
||||||
}
|
}
|
||||||
fs := p.Apply(weakOffset).WeakFields()
|
fs := p.Apply(weakOffset).WeakFields()
|
||||||
m, ok := (*fs)[num]
|
m, ok := (*fs)[num]
|
||||||
if !ok {
|
if !ok {
|
||||||
return pref.ValueOf(messageType.Zero())
|
return pref.ValueOfMessage(messageType.Zero())
|
||||||
}
|
}
|
||||||
return pref.ValueOf(m.(pref.ProtoMessage).ProtoReflect())
|
return pref.ValueOfMessage(m.(pref.ProtoMessage).ProtoReflect())
|
||||||
},
|
},
|
||||||
set: func(p pointer, v pref.Value) {
|
set: func(p pointer, v pref.Value) {
|
||||||
lazyInit()
|
lazyInit()
|
||||||
@ -356,7 +356,7 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn
|
|||||||
m = messageType.New().Interface().(piface.MessageV1)
|
m = messageType.New().Interface().(piface.MessageV1)
|
||||||
(*fs)[num] = m
|
(*fs)[num] = m
|
||||||
}
|
}
|
||||||
return pref.ValueOf(m.(pref.ProtoMessage).ProtoReflect())
|
return pref.ValueOfMessage(m.(pref.ProtoMessage).ProtoReflect())
|
||||||
},
|
},
|
||||||
newMessage: func() pref.Message {
|
newMessage: func() pref.Message {
|
||||||
lazyInit()
|
lazyInit()
|
||||||
@ -364,7 +364,7 @@ func fieldInfoForWeakMessage(fd pref.FieldDescriptor, weakOffset offset) fieldIn
|
|||||||
},
|
},
|
||||||
newField: func() pref.Value {
|
newField: func() pref.Value {
|
||||||
lazyInit()
|
lazyInit()
|
||||||
return pref.ValueOf(messageType.New())
|
return pref.ValueOfMessage(messageType.New())
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -74,5 +74,5 @@ func mergeMap(dst, src protoreflect.Map, fd protoreflect.FieldDescriptor) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func cloneBytes(v protoreflect.Value) protoreflect.Value {
|
func cloneBytes(v protoreflect.Value) protoreflect.Value {
|
||||||
return protoreflect.ValueOf(append([]byte{}, v.Bytes()...))
|
return protoreflect.ValueOfBytes(append([]byte{}, v.Bytes()...))
|
||||||
}
|
}
|
||||||
|
@ -268,9 +268,9 @@ func unmarshalDefault(s string, fd protoreflect.FieldDescriptor, allowUnresolvab
|
|||||||
}
|
}
|
||||||
v, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)
|
v, ev, err := defval.Unmarshal(s, fd.Kind(), evs, defval.Descriptor)
|
||||||
if err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {
|
if err != nil && allowUnresolvable && evs != nil && protoreflect.Name(s).IsValid() {
|
||||||
v = protoreflect.ValueOf(protoreflect.EnumNumber(0))
|
v = protoreflect.ValueOfEnum(0)
|
||||||
if evs.Len() > 0 {
|
if evs.Len() > 0 {
|
||||||
v = protoreflect.ValueOf(evs.Get(0).Number())
|
v = protoreflect.ValueOfEnum(evs.Get(0).Number())
|
||||||
}
|
}
|
||||||
ev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))
|
ev = filedesc.PlaceholderEnumValue(fd.Enum().FullName().Parent().Append(protoreflect.Name(s)))
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
|
@ -188,9 +188,9 @@ func testField(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
m.Clear(fd)
|
m.Clear(fd)
|
||||||
|
|
||||||
// Set to the wrong type.
|
// Set to the wrong type.
|
||||||
v := pref.ValueOf("")
|
v := pref.ValueOfString("")
|
||||||
if fd.Kind() == pref.StringKind {
|
if fd.Kind() == pref.StringKind {
|
||||||
v = pref.ValueOf(int32(0))
|
v = pref.ValueOfInt32(0)
|
||||||
}
|
}
|
||||||
if !panics(func() {
|
if !panics(func() {
|
||||||
m.Set(fd, v)
|
m.Set(fd, v)
|
||||||
@ -226,7 +226,7 @@ func testFieldMap(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
v := newMapValue(fd, mapv, n, nil)
|
v := newMapValue(fd, mapv, n, nil)
|
||||||
mapv.Set(k, v)
|
mapv.Set(k, v)
|
||||||
want.Set(k, v)
|
want.Set(k, v)
|
||||||
if got, want := m.Get(fd), pref.ValueOf(want); !valueEqual(got, want) {
|
if got, want := m.Get(fd), pref.ValueOfMap(want); !valueEqual(got, want) {
|
||||||
t.Errorf("after inserting %d elements to %q:\nMessage.Get(%v) = %v, want %v", i, name, num, formatValue(got), formatValue(want))
|
t.Errorf("after inserting %d elements to %q:\nMessage.Get(%v) = %v, want %v", i, name, num, formatValue(got), formatValue(want))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -236,7 +236,7 @@ func testFieldMap(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
nv := newMapValue(fd, mapv, 10, nil)
|
nv := newMapValue(fd, mapv, 10, nil)
|
||||||
mapv.Set(k, nv)
|
mapv.Set(k, nv)
|
||||||
want.Set(k, nv)
|
want.Set(k, nv)
|
||||||
if got, want := m.Get(fd), pref.ValueOf(want); !valueEqual(got, want) {
|
if got, want := m.Get(fd), pref.ValueOfMap(want); !valueEqual(got, want) {
|
||||||
t.Errorf("after setting element %v of %q:\nMessage.Get(%v) = %v, want %v", formatValue(k.Value()), name, num, formatValue(got), formatValue(want))
|
t.Errorf("after setting element %v of %q:\nMessage.Get(%v) = %v, want %v", formatValue(k.Value()), name, num, formatValue(got), formatValue(want))
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@ -249,7 +249,7 @@ func testFieldMap(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
if got, want := m.Has(fd), want.Len() > 0; got != want {
|
if got, want := m.Has(fd), want.Len() > 0; got != want {
|
||||||
t.Errorf("after clearing elements of %q:\nMessage.Has(%v) = %v, want %v", name, num, got, want)
|
t.Errorf("after clearing elements of %q:\nMessage.Has(%v) = %v, want %v", name, num, got, want)
|
||||||
}
|
}
|
||||||
if got, want := m.Get(fd), pref.ValueOf(want); !valueEqual(got, want) {
|
if got, want := m.Get(fd), pref.ValueOfMap(want); !valueEqual(got, want) {
|
||||||
t.Errorf("after clearing elements of %q:\nMessage.Get(%v) = %v, want %v", name, num, formatValue(got), formatValue(want))
|
t.Errorf("after clearing elements of %q:\nMessage.Get(%v) = %v, want %v", name, num, formatValue(got), formatValue(want))
|
||||||
}
|
}
|
||||||
return true
|
return true
|
||||||
@ -307,7 +307,7 @@ func testFieldList(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
want.Append(v)
|
want.Append(v)
|
||||||
list.Append(v)
|
list.Append(v)
|
||||||
|
|
||||||
if got, want := m.Get(fd), pref.ValueOf(want); !valueEqual(got, want) {
|
if got, want := m.Get(fd), pref.ValueOfList(want); !valueEqual(got, want) {
|
||||||
t.Errorf("after appending %d elements to %q:\nMessage.Get(%v) = %v, want %v", i+1, name, num, formatValue(got), formatValue(want))
|
t.Errorf("after appending %d elements to %q:\nMessage.Get(%v) = %v, want %v", i+1, name, num, formatValue(got), formatValue(want))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -317,7 +317,7 @@ func testFieldList(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
v := newListElement(fd, list, seed(i+10), nil)
|
v := newListElement(fd, list, seed(i+10), nil)
|
||||||
want.Set(i, v)
|
want.Set(i, v)
|
||||||
list.Set(i, v)
|
list.Set(i, v)
|
||||||
if got, want := m.Get(fd), pref.ValueOf(want); !valueEqual(got, want) {
|
if got, want := m.Get(fd), pref.ValueOfList(want); !valueEqual(got, want) {
|
||||||
t.Errorf("after setting element %d of %q:\nMessage.Get(%v) = %v, want %v", i, name, num, formatValue(got), formatValue(want))
|
t.Errorf("after setting element %d of %q:\nMessage.Get(%v) = %v, want %v", i, name, num, formatValue(got), formatValue(want))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -330,7 +330,7 @@ func testFieldList(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
if got, want := m.Has(fd), want.Len() > 0 || fd.IsExtension(); got != want {
|
if got, want := m.Has(fd), want.Len() > 0 || fd.IsExtension(); got != want {
|
||||||
t.Errorf("after truncating %q to %d:\nMessage.Has(%v) = %v, want %v", name, n, num, got, want)
|
t.Errorf("after truncating %q to %d:\nMessage.Has(%v) = %v, want %v", name, n, num, got, want)
|
||||||
}
|
}
|
||||||
if got, want := m.Get(fd), pref.ValueOf(want); !valueEqual(got, want) {
|
if got, want := m.Get(fd), pref.ValueOfList(want); !valueEqual(got, want) {
|
||||||
t.Errorf("after truncating %q to %d:\nMessage.Get(%v) = %v, want %v", name, n, num, formatValue(got), formatValue(want))
|
t.Errorf("after truncating %q to %d:\nMessage.Get(%v) = %v, want %v", name, n, num, formatValue(got), formatValue(want))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -355,9 +355,9 @@ func testFieldFloat(t testing.TB, m pref.Message, fd pref.FieldDescriptor) {
|
|||||||
for _, v := range []float64{math.Inf(-1), math.Inf(1), math.NaN(), math.Copysign(0, -1)} {
|
for _, v := range []float64{math.Inf(-1), math.Inf(1), math.NaN(), math.Copysign(0, -1)} {
|
||||||
var val pref.Value
|
var val pref.Value
|
||||||
if fd.Kind() == pref.FloatKind {
|
if fd.Kind() == pref.FloatKind {
|
||||||
val = pref.ValueOf(float32(v))
|
val = pref.ValueOfFloat32(float32(v))
|
||||||
} else {
|
} else {
|
||||||
val = pref.ValueOf(v)
|
val = pref.ValueOfFloat64(float64(v))
|
||||||
}
|
}
|
||||||
m.Set(fd, val)
|
m.Set(fd, val)
|
||||||
// Note that Has is true for -0.
|
// Note that Has is true for -0.
|
||||||
@ -543,7 +543,7 @@ func newValue(m pref.Message, fd pref.FieldDescriptor, n seed, stack []pref.Mess
|
|||||||
list.Append(newListElement(fd, list, minVal, stack))
|
list.Append(newListElement(fd, list, minVal, stack))
|
||||||
list.Append(newListElement(fd, list, maxVal, stack))
|
list.Append(newListElement(fd, list, maxVal, stack))
|
||||||
list.Append(newListElement(fd, list, n, stack))
|
list.Append(newListElement(fd, list, n, stack))
|
||||||
return pref.ValueOf(list)
|
return pref.ValueOfList(list)
|
||||||
case fd.IsMap():
|
case fd.IsMap():
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return m.New().Get(fd)
|
return m.New().Get(fd)
|
||||||
@ -553,7 +553,7 @@ func newValue(m pref.Message, fd pref.FieldDescriptor, n seed, stack []pref.Mess
|
|||||||
mapv.Set(newMapKey(fd, minVal), newMapValue(fd, mapv, minVal, stack))
|
mapv.Set(newMapKey(fd, minVal), newMapValue(fd, mapv, minVal, stack))
|
||||||
mapv.Set(newMapKey(fd, maxVal), newMapValue(fd, mapv, maxVal, stack))
|
mapv.Set(newMapKey(fd, maxVal), newMapValue(fd, mapv, maxVal, stack))
|
||||||
mapv.Set(newMapKey(fd, n), newMapValue(fd, mapv, newSeed(n, 0), stack))
|
mapv.Set(newMapKey(fd, n), newMapValue(fd, mapv, newSeed(n, 0), stack))
|
||||||
return pref.ValueOf(mapv)
|
return pref.ValueOfMap(mapv)
|
||||||
case fd.Message() != nil:
|
case fd.Message() != nil:
|
||||||
//if n == 0 {
|
//if n == 0 {
|
||||||
// return m.New().Get(fd)
|
// return m.New().Get(fd)
|
||||||
@ -587,7 +587,7 @@ func newMapValue(fd pref.FieldDescriptor, mapv pref.Map, n seed, stack []pref.Me
|
|||||||
func newScalarValue(fd pref.FieldDescriptor, n seed) pref.Value {
|
func newScalarValue(fd pref.FieldDescriptor, n seed) pref.Value {
|
||||||
switch fd.Kind() {
|
switch fd.Kind() {
|
||||||
case pref.BoolKind:
|
case pref.BoolKind:
|
||||||
return pref.ValueOf(n != 0)
|
return pref.ValueOfBool(n != 0)
|
||||||
case pref.EnumKind:
|
case pref.EnumKind:
|
||||||
vals := fd.Enum().Values()
|
vals := fd.Enum().Values()
|
||||||
var i int
|
var i int
|
||||||
@ -599,85 +599,85 @@ func newScalarValue(fd pref.FieldDescriptor, n seed) pref.Value {
|
|||||||
default:
|
default:
|
||||||
i = int(n) % vals.Len()
|
i = int(n) % vals.Len()
|
||||||
}
|
}
|
||||||
return pref.ValueOf(vals.Get(i).Number())
|
return pref.ValueOfEnum(vals.Get(i).Number())
|
||||||
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
||||||
switch n {
|
switch n {
|
||||||
case minVal:
|
case minVal:
|
||||||
return pref.ValueOf(int32(math.MinInt32))
|
return pref.ValueOfInt32(math.MinInt32)
|
||||||
case maxVal:
|
case maxVal:
|
||||||
return pref.ValueOf(int32(math.MaxInt32))
|
return pref.ValueOfInt32(math.MaxInt32)
|
||||||
default:
|
default:
|
||||||
return pref.ValueOf(int32(n))
|
return pref.ValueOfInt32(int32(n))
|
||||||
}
|
}
|
||||||
case pref.Uint32Kind, pref.Fixed32Kind:
|
case pref.Uint32Kind, pref.Fixed32Kind:
|
||||||
switch n {
|
switch n {
|
||||||
case minVal:
|
case minVal:
|
||||||
// Only use 0 for the zero value.
|
// Only use 0 for the zero value.
|
||||||
return pref.ValueOf(uint32(1))
|
return pref.ValueOfUint32(1)
|
||||||
case maxVal:
|
case maxVal:
|
||||||
return pref.ValueOf(uint32(math.MaxInt32))
|
return pref.ValueOfUint32(math.MaxInt32)
|
||||||
default:
|
default:
|
||||||
return pref.ValueOf(uint32(n))
|
return pref.ValueOfUint32(uint32(n))
|
||||||
}
|
}
|
||||||
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
||||||
switch n {
|
switch n {
|
||||||
case minVal:
|
case minVal:
|
||||||
return pref.ValueOf(int64(math.MinInt64))
|
return pref.ValueOfInt64(math.MinInt64)
|
||||||
case maxVal:
|
case maxVal:
|
||||||
return pref.ValueOf(int64(math.MaxInt64))
|
return pref.ValueOfInt64(math.MaxInt64)
|
||||||
default:
|
default:
|
||||||
return pref.ValueOf(int64(n))
|
return pref.ValueOfInt64(int64(n))
|
||||||
}
|
}
|
||||||
case pref.Uint64Kind, pref.Fixed64Kind:
|
case pref.Uint64Kind, pref.Fixed64Kind:
|
||||||
switch n {
|
switch n {
|
||||||
case minVal:
|
case minVal:
|
||||||
// Only use 0 for the zero value.
|
// Only use 0 for the zero value.
|
||||||
return pref.ValueOf(uint64(1))
|
return pref.ValueOfUint64(1)
|
||||||
case maxVal:
|
case maxVal:
|
||||||
return pref.ValueOf(uint64(math.MaxInt64))
|
return pref.ValueOfUint64(math.MaxInt64)
|
||||||
default:
|
default:
|
||||||
return pref.ValueOf(uint64(n))
|
return pref.ValueOfUint64(uint64(n))
|
||||||
}
|
}
|
||||||
case pref.FloatKind:
|
case pref.FloatKind:
|
||||||
switch n {
|
switch n {
|
||||||
case minVal:
|
case minVal:
|
||||||
return pref.ValueOf(float32(math.SmallestNonzeroFloat32))
|
return pref.ValueOfFloat32(math.SmallestNonzeroFloat32)
|
||||||
case maxVal:
|
case maxVal:
|
||||||
return pref.ValueOf(float32(math.MaxFloat32))
|
return pref.ValueOfFloat32(math.MaxFloat32)
|
||||||
default:
|
default:
|
||||||
return pref.ValueOf(1.5 * float32(n))
|
return pref.ValueOfFloat32(1.5 * float32(n))
|
||||||
}
|
}
|
||||||
case pref.DoubleKind:
|
case pref.DoubleKind:
|
||||||
switch n {
|
switch n {
|
||||||
case minVal:
|
case minVal:
|
||||||
return pref.ValueOf(float64(math.SmallestNonzeroFloat64))
|
return pref.ValueOfFloat64(math.SmallestNonzeroFloat64)
|
||||||
case maxVal:
|
case maxVal:
|
||||||
return pref.ValueOf(float64(math.MaxFloat64))
|
return pref.ValueOfFloat64(math.MaxFloat64)
|
||||||
default:
|
default:
|
||||||
return pref.ValueOf(1.5 * float64(n))
|
return pref.ValueOfFloat64(1.5 * float64(n))
|
||||||
}
|
}
|
||||||
case pref.StringKind:
|
case pref.StringKind:
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return pref.ValueOf("")
|
return pref.ValueOfString("")
|
||||||
}
|
}
|
||||||
return pref.ValueOf(fmt.Sprintf("%d", n))
|
return pref.ValueOfString(fmt.Sprintf("%d", n))
|
||||||
case pref.BytesKind:
|
case pref.BytesKind:
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return pref.ValueOf([]byte(nil))
|
return pref.ValueOfBytes(nil)
|
||||||
}
|
}
|
||||||
return pref.ValueOf([]byte{byte(n >> 24), byte(n >> 16), byte(n >> 8), byte(n)})
|
return pref.ValueOfBytes([]byte{byte(n >> 24), byte(n >> 16), byte(n >> 8), byte(n)})
|
||||||
}
|
}
|
||||||
panic("unhandled kind")
|
panic("unhandled kind")
|
||||||
}
|
}
|
||||||
|
|
||||||
func populateMessage(m pref.Message, n seed, stack []pref.MessageDescriptor) pref.Value {
|
func populateMessage(m pref.Message, n seed, stack []pref.MessageDescriptor) pref.Value {
|
||||||
if n == 0 {
|
if n == 0 {
|
||||||
return pref.ValueOf(m)
|
return pref.ValueOfMessage(m)
|
||||||
}
|
}
|
||||||
md := m.Descriptor()
|
md := m.Descriptor()
|
||||||
for _, x := range stack {
|
for _, x := range stack {
|
||||||
if md == x {
|
if md == x {
|
||||||
return pref.ValueOf(m)
|
return pref.ValueOfMessage(m)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stack = append(stack, md)
|
stack = append(stack, md)
|
||||||
@ -688,7 +688,7 @@ func populateMessage(m pref.Message, n seed, stack []pref.MessageDescriptor) pre
|
|||||||
}
|
}
|
||||||
m.Set(fd, newValue(m, fd, newSeed(n, i), stack))
|
m.Set(fd, newValue(m, fd, newSeed(n, i), stack))
|
||||||
}
|
}
|
||||||
return pref.ValueOf(m)
|
return pref.ValueOfMessage(m)
|
||||||
}
|
}
|
||||||
|
|
||||||
func panics(f func()) (didPanic bool) {
|
func panics(f func()) (didPanic bool) {
|
||||||
|
@ -133,13 +133,13 @@ func (m *Message) Get(fd pref.FieldDescriptor) pref.Value {
|
|||||||
}
|
}
|
||||||
switch {
|
switch {
|
||||||
case fd.IsMap():
|
case fd.IsMap():
|
||||||
return pref.ValueOf(&dynamicMap{desc: fd})
|
return pref.ValueOfMap(&dynamicMap{desc: fd})
|
||||||
case fd.IsList():
|
case fd.IsList():
|
||||||
return pref.ValueOf(emptyList{desc: fd})
|
return pref.ValueOfList(emptyList{desc: fd})
|
||||||
case fd.Message() != nil:
|
case fd.Message() != nil:
|
||||||
return pref.ValueOf(&Message{typ: messageType{fd.Message()}})
|
return pref.ValueOfMessage(&Message{typ: messageType{fd.Message()}})
|
||||||
case fd.Kind() == pref.BytesKind:
|
case fd.Kind() == pref.BytesKind:
|
||||||
return pref.ValueOf(append([]byte(nil), fd.Default().Bytes()...))
|
return pref.ValueOfBytes(append([]byte(nil), fd.Default().Bytes()...))
|
||||||
default:
|
default:
|
||||||
return fd.Default()
|
return fd.Default()
|
||||||
}
|
}
|
||||||
@ -214,14 +214,14 @@ func (m *Message) NewField(fd pref.FieldDescriptor) pref.Value {
|
|||||||
case fd.IsExtension():
|
case fd.IsExtension():
|
||||||
return fd.(pref.ExtensionTypeDescriptor).Type().New()
|
return fd.(pref.ExtensionTypeDescriptor).Type().New()
|
||||||
case fd.IsMap():
|
case fd.IsMap():
|
||||||
return pref.ValueOf(&dynamicMap{
|
return pref.ValueOfMap(&dynamicMap{
|
||||||
desc: fd,
|
desc: fd,
|
||||||
mapv: make(map[interface{}]pref.Value),
|
mapv: make(map[interface{}]pref.Value),
|
||||||
})
|
})
|
||||||
case fd.IsList():
|
case fd.IsList():
|
||||||
return pref.ValueOf(&dynamicList{desc: fd})
|
return pref.ValueOfList(&dynamicList{desc: fd})
|
||||||
case fd.Message() != nil:
|
case fd.Message() != nil:
|
||||||
return pref.ValueOf(NewMessage(fd.Message()).ProtoReflect())
|
return pref.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect())
|
||||||
default:
|
default:
|
||||||
return fd.Default()
|
return fd.Default()
|
||||||
}
|
}
|
||||||
@ -352,7 +352,7 @@ func (x *dynamicMap) Clear(k pref.MapKey) { delete(x.mapv, k.Interface()) }
|
|||||||
func (x *dynamicMap) Len() int { return len(x.mapv) }
|
func (x *dynamicMap) Len() int { return len(x.mapv) }
|
||||||
func (x *dynamicMap) NewValue() pref.Value {
|
func (x *dynamicMap) NewValue() pref.Value {
|
||||||
if md := x.desc.MapValue().Message(); md != nil {
|
if md := x.desc.MapValue().Message(); md != nil {
|
||||||
return pref.ValueOf(NewMessage(md).ProtoReflect())
|
return pref.ValueOfMessage(NewMessage(md).ProtoReflect())
|
||||||
}
|
}
|
||||||
return x.desc.MapValue().Default()
|
return x.desc.MapValue().Default()
|
||||||
}
|
}
|
||||||
@ -474,27 +474,27 @@ func singularTypeIsValid(fd pref.FieldDescriptor, v pref.Value) error {
|
|||||||
func newListEntry(fd pref.FieldDescriptor) pref.Value {
|
func newListEntry(fd pref.FieldDescriptor) pref.Value {
|
||||||
switch fd.Kind() {
|
switch fd.Kind() {
|
||||||
case pref.BoolKind:
|
case pref.BoolKind:
|
||||||
return pref.ValueOf(false)
|
return pref.ValueOfBool(false)
|
||||||
case pref.EnumKind:
|
case pref.EnumKind:
|
||||||
return pref.ValueOf(fd.Enum().Values().Get(0).Number())
|
return pref.ValueOfEnum(fd.Enum().Values().Get(0).Number())
|
||||||
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
case pref.Int32Kind, pref.Sint32Kind, pref.Sfixed32Kind:
|
||||||
return pref.ValueOf(int32(0))
|
return pref.ValueOfInt32(0)
|
||||||
case pref.Uint32Kind, pref.Fixed32Kind:
|
case pref.Uint32Kind, pref.Fixed32Kind:
|
||||||
return pref.ValueOf(uint32(0))
|
return pref.ValueOfUint32(0)
|
||||||
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
case pref.Int64Kind, pref.Sint64Kind, pref.Sfixed64Kind:
|
||||||
return pref.ValueOf(int64(0))
|
return pref.ValueOfInt64(0)
|
||||||
case pref.Uint64Kind, pref.Fixed64Kind:
|
case pref.Uint64Kind, pref.Fixed64Kind:
|
||||||
return pref.ValueOf(uint64(0))
|
return pref.ValueOfUint64(0)
|
||||||
case pref.FloatKind:
|
case pref.FloatKind:
|
||||||
return pref.ValueOf(float32(0))
|
return pref.ValueOfFloat32(0)
|
||||||
case pref.DoubleKind:
|
case pref.DoubleKind:
|
||||||
return pref.ValueOf(float64(0))
|
return pref.ValueOfFloat64(0)
|
||||||
case pref.StringKind:
|
case pref.StringKind:
|
||||||
return pref.ValueOf("")
|
return pref.ValueOfString("")
|
||||||
case pref.BytesKind:
|
case pref.BytesKind:
|
||||||
return pref.ValueOf(([]byte)(nil))
|
return pref.ValueOfBytes(nil)
|
||||||
case pref.MessageKind, pref.GroupKind:
|
case pref.MessageKind, pref.GroupKind:
|
||||||
return pref.ValueOf(NewMessage(fd.Message()).ProtoReflect())
|
return pref.ValueOfMessage(NewMessage(fd.Message()).ProtoReflect())
|
||||||
}
|
}
|
||||||
panic(errors.New("%v: unknown kind %v", fd.FullName(), fd.Kind()))
|
panic(errors.New("%v: unknown kind %v", fd.FullName(), fd.Kind()))
|
||||||
}
|
}
|
||||||
@ -533,14 +533,14 @@ func NewExtensionType(desc pref.ExtensionDescriptor) pref.ExtensionType {
|
|||||||
func (xt extensionType) New() pref.Value {
|
func (xt extensionType) New() pref.Value {
|
||||||
switch {
|
switch {
|
||||||
case xt.desc.IsMap():
|
case xt.desc.IsMap():
|
||||||
return pref.ValueOf(&dynamicMap{
|
return pref.ValueOfMap(&dynamicMap{
|
||||||
desc: xt.desc,
|
desc: xt.desc,
|
||||||
mapv: make(map[interface{}]pref.Value),
|
mapv: make(map[interface{}]pref.Value),
|
||||||
})
|
})
|
||||||
case xt.desc.IsList():
|
case xt.desc.IsList():
|
||||||
return pref.ValueOf(&dynamicList{desc: xt.desc})
|
return pref.ValueOfList(&dynamicList{desc: xt.desc})
|
||||||
case xt.desc.Message() != nil:
|
case xt.desc.Message() != nil:
|
||||||
return pref.ValueOf(NewMessage(xt.desc.Message()))
|
return pref.ValueOfMessage(NewMessage(xt.desc.Message()))
|
||||||
default:
|
default:
|
||||||
return xt.desc.Default()
|
return xt.desc.Default()
|
||||||
}
|
}
|
||||||
@ -549,11 +549,11 @@ func (xt extensionType) New() pref.Value {
|
|||||||
func (xt extensionType) Zero() pref.Value {
|
func (xt extensionType) Zero() pref.Value {
|
||||||
switch {
|
switch {
|
||||||
case xt.desc.IsMap():
|
case xt.desc.IsMap():
|
||||||
return pref.ValueOf(&dynamicMap{desc: xt.desc})
|
return pref.ValueOfMap(&dynamicMap{desc: xt.desc})
|
||||||
case xt.desc.Cardinality() == pref.Repeated:
|
case xt.desc.Cardinality() == pref.Repeated:
|
||||||
return pref.ValueOf(emptyList{desc: xt.desc})
|
return pref.ValueOfList(emptyList{desc: xt.desc})
|
||||||
case xt.desc.Message() != nil:
|
case xt.desc.Message() != nil:
|
||||||
return pref.ValueOf(&Message{typ: messageType{xt.desc.Message()}})
|
return pref.ValueOfMessage(&Message{typ: messageType{xt.desc.Message()}})
|
||||||
default:
|
default:
|
||||||
return xt.desc.Default()
|
return xt.desc.Default()
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user