blob: 7a6bd4431cbfd4079dc0c60a6d7f4ac453c237a8 [file] [log] [blame]
// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package irregular
import (
"google.golang.org/protobuf/encoding/prototext"
"google.golang.org/protobuf/reflect/protodesc"
"google.golang.org/protobuf/reflect/protoreflect"
"google.golang.org/protobuf/runtime/protoiface"
"google.golang.org/protobuf/types/descriptorpb"
)
type IrregularMessage struct {
set bool
value string
}
func (m *IrregularMessage) ProtoReflect() protoreflect.Message { return (*message)(m) }
type message IrregularMessage
type messageType struct{}
func (messageType) New() protoreflect.Message { return &message{} }
func (messageType) Zero() protoreflect.Message { return (*message)(nil) }
func (messageType) Descriptor() protoreflect.MessageDescriptor { return fileDesc.Messages().Get(0) }
func (m *message) New() protoreflect.Message { return &message{} }
func (m *message) Descriptor() protoreflect.MessageDescriptor { return fileDesc.Messages().Get(0) }
func (m *message) Type() protoreflect.MessageType { return messageType{} }
func (m *message) Interface() protoreflect.ProtoMessage { return (*IrregularMessage)(m) }
func (m *message) ProtoMethods() *protoiface.Methods { return nil }
var fieldDescS = fileDesc.Messages().Get(0).Fields().Get(0)
func (m *message) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
if m.set {
f(fieldDescS, protoreflect.ValueOf(m.value))
}
}
func (m *message) Has(fd protoreflect.FieldDescriptor) bool {
if fd == fieldDescS {
return m.set
}
panic("invalid field descriptor")
}
func (m *message) Clear(fd protoreflect.FieldDescriptor) {
if fd == fieldDescS {
m.value = ""
m.set = false
return
}
panic("invalid field descriptor")
}
func (m *message) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
if fd == fieldDescS {
return protoreflect.ValueOf(m.value)
}
panic("invalid field descriptor")
}
func (m *message) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
if fd == fieldDescS {
m.value = v.String()
m.set = true
return
}
panic("invalid field descriptor")
}
func (m *message) Mutable(protoreflect.FieldDescriptor) protoreflect.Value {
panic("invalid field descriptor")
}
func (m *message) NewField(protoreflect.FieldDescriptor) protoreflect.Value {
panic("invalid field descriptor")
}
func (m *message) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
panic("invalid oneof descriptor")
}
func (m *message) GetUnknown() protoreflect.RawFields { return nil }
func (m *message) SetUnknown(protoreflect.RawFields) { return }
func (m *message) IsValid() bool {
return m != nil
}
var fileDesc = func() protoreflect.FileDescriptor {
p := &descriptorpb.FileDescriptorProto{}
if err := prototext.Unmarshal([]byte(descriptorText), p); err != nil {
panic(err)
}
file, err := protodesc.NewFile(p, nil)
if err != nil {
panic(err)
}
return file
}()
func file_internal_testprotos_irregular_irregular_proto_init() { _ = fileDesc }
const descriptorText = `
name: "internal/testprotos/irregular/irregular.proto"
package: "goproto.proto.thirdparty"
message_type {
name: "IrregularMessage"
field {
name: "s"
number: 1
label: LABEL_OPTIONAL
type: TYPE_STRING
json_name: "s"
}
}
options {
go_package: "google.golang.org/protobuf/internal/testprotos/irregular"
}
`
type AberrantMessage int
func (m AberrantMessage) ProtoMessage() {}
func (m AberrantMessage) Reset() {}
func (m AberrantMessage) String() string { return "" }
func (m AberrantMessage) Marshal() ([]byte, error) { return nil, nil }
func (m AberrantMessage) Unmarshal([]byte) error { return nil }