xref: /aosp_15_r20/external/golang-protobuf/internal/testprotos/irregular/irregular.go (revision 1c12ee1efe575feb122dbf939ff15148a3b3e8f2)
1*1c12ee1eSDan Willemsen// Copyright 2019 The Go Authors. All rights reserved.
2*1c12ee1eSDan Willemsen// Use of this source code is governed by a BSD-style
3*1c12ee1eSDan Willemsen// license that can be found in the LICENSE file.
4*1c12ee1eSDan Willemsen
5*1c12ee1eSDan Willemsenpackage irregular
6*1c12ee1eSDan Willemsen
7*1c12ee1eSDan Willemsenimport (
8*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/encoding/prototext"
9*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/reflect/protodesc"
10*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/reflect/protoreflect"
11*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/runtime/protoiface"
12*1c12ee1eSDan Willemsen
13*1c12ee1eSDan Willemsen	"google.golang.org/protobuf/types/descriptorpb"
14*1c12ee1eSDan Willemsen)
15*1c12ee1eSDan Willemsen
16*1c12ee1eSDan Willemsentype IrregularMessage struct {
17*1c12ee1eSDan Willemsen	set   bool
18*1c12ee1eSDan Willemsen	value string
19*1c12ee1eSDan Willemsen}
20*1c12ee1eSDan Willemsen
21*1c12ee1eSDan Willemsenfunc (m *IrregularMessage) ProtoReflect() protoreflect.Message { return (*message)(m) }
22*1c12ee1eSDan Willemsen
23*1c12ee1eSDan Willemsentype message IrregularMessage
24*1c12ee1eSDan Willemsen
25*1c12ee1eSDan Willemsentype messageType struct{}
26*1c12ee1eSDan Willemsen
27*1c12ee1eSDan Willemsenfunc (messageType) New() protoreflect.Message                  { return &message{} }
28*1c12ee1eSDan Willemsenfunc (messageType) Zero() protoreflect.Message                 { return (*message)(nil) }
29*1c12ee1eSDan Willemsenfunc (messageType) Descriptor() protoreflect.MessageDescriptor { return fileDesc.Messages().Get(0) }
30*1c12ee1eSDan Willemsen
31*1c12ee1eSDan Willemsenfunc (m *message) New() protoreflect.Message                  { return &message{} }
32*1c12ee1eSDan Willemsenfunc (m *message) Descriptor() protoreflect.MessageDescriptor { return fileDesc.Messages().Get(0) }
33*1c12ee1eSDan Willemsenfunc (m *message) Type() protoreflect.MessageType             { return messageType{} }
34*1c12ee1eSDan Willemsenfunc (m *message) Interface() protoreflect.ProtoMessage       { return (*IrregularMessage)(m) }
35*1c12ee1eSDan Willemsenfunc (m *message) ProtoMethods() *protoiface.Methods          { return nil }
36*1c12ee1eSDan Willemsen
37*1c12ee1eSDan Willemsenvar fieldDescS = fileDesc.Messages().Get(0).Fields().Get(0)
38*1c12ee1eSDan Willemsen
39*1c12ee1eSDan Willemsenfunc (m *message) Range(f func(protoreflect.FieldDescriptor, protoreflect.Value) bool) {
40*1c12ee1eSDan Willemsen	if m.set {
41*1c12ee1eSDan Willemsen		f(fieldDescS, protoreflect.ValueOf(m.value))
42*1c12ee1eSDan Willemsen	}
43*1c12ee1eSDan Willemsen}
44*1c12ee1eSDan Willemsen
45*1c12ee1eSDan Willemsenfunc (m *message) Has(fd protoreflect.FieldDescriptor) bool {
46*1c12ee1eSDan Willemsen	if fd == fieldDescS {
47*1c12ee1eSDan Willemsen		return m.set
48*1c12ee1eSDan Willemsen	}
49*1c12ee1eSDan Willemsen	panic("invalid field descriptor")
50*1c12ee1eSDan Willemsen}
51*1c12ee1eSDan Willemsen
52*1c12ee1eSDan Willemsenfunc (m *message) Clear(fd protoreflect.FieldDescriptor) {
53*1c12ee1eSDan Willemsen	if fd == fieldDescS {
54*1c12ee1eSDan Willemsen		m.value = ""
55*1c12ee1eSDan Willemsen		m.set = false
56*1c12ee1eSDan Willemsen		return
57*1c12ee1eSDan Willemsen	}
58*1c12ee1eSDan Willemsen	panic("invalid field descriptor")
59*1c12ee1eSDan Willemsen}
60*1c12ee1eSDan Willemsen
61*1c12ee1eSDan Willemsenfunc (m *message) Get(fd protoreflect.FieldDescriptor) protoreflect.Value {
62*1c12ee1eSDan Willemsen	if fd == fieldDescS {
63*1c12ee1eSDan Willemsen		return protoreflect.ValueOf(m.value)
64*1c12ee1eSDan Willemsen	}
65*1c12ee1eSDan Willemsen	panic("invalid field descriptor")
66*1c12ee1eSDan Willemsen}
67*1c12ee1eSDan Willemsen
68*1c12ee1eSDan Willemsenfunc (m *message) Set(fd protoreflect.FieldDescriptor, v protoreflect.Value) {
69*1c12ee1eSDan Willemsen	if fd == fieldDescS {
70*1c12ee1eSDan Willemsen		m.value = v.String()
71*1c12ee1eSDan Willemsen		m.set = true
72*1c12ee1eSDan Willemsen		return
73*1c12ee1eSDan Willemsen	}
74*1c12ee1eSDan Willemsen	panic("invalid field descriptor")
75*1c12ee1eSDan Willemsen}
76*1c12ee1eSDan Willemsen
77*1c12ee1eSDan Willemsenfunc (m *message) Mutable(protoreflect.FieldDescriptor) protoreflect.Value {
78*1c12ee1eSDan Willemsen	panic("invalid field descriptor")
79*1c12ee1eSDan Willemsen}
80*1c12ee1eSDan Willemsen
81*1c12ee1eSDan Willemsenfunc (m *message) NewField(protoreflect.FieldDescriptor) protoreflect.Value {
82*1c12ee1eSDan Willemsen	panic("invalid field descriptor")
83*1c12ee1eSDan Willemsen}
84*1c12ee1eSDan Willemsen
85*1c12ee1eSDan Willemsenfunc (m *message) WhichOneof(protoreflect.OneofDescriptor) protoreflect.FieldDescriptor {
86*1c12ee1eSDan Willemsen	panic("invalid oneof descriptor")
87*1c12ee1eSDan Willemsen}
88*1c12ee1eSDan Willemsen
89*1c12ee1eSDan Willemsenfunc (m *message) GetUnknown() protoreflect.RawFields { return nil }
90*1c12ee1eSDan Willemsenfunc (m *message) SetUnknown(protoreflect.RawFields)  { return }
91*1c12ee1eSDan Willemsen
92*1c12ee1eSDan Willemsenfunc (m *message) IsValid() bool {
93*1c12ee1eSDan Willemsen	return m != nil
94*1c12ee1eSDan Willemsen}
95*1c12ee1eSDan Willemsen
96*1c12ee1eSDan Willemsenvar fileDesc = func() protoreflect.FileDescriptor {
97*1c12ee1eSDan Willemsen	p := &descriptorpb.FileDescriptorProto{}
98*1c12ee1eSDan Willemsen	if err := prototext.Unmarshal([]byte(descriptorText), p); err != nil {
99*1c12ee1eSDan Willemsen		panic(err)
100*1c12ee1eSDan Willemsen	}
101*1c12ee1eSDan Willemsen	file, err := protodesc.NewFile(p, nil)
102*1c12ee1eSDan Willemsen	if err != nil {
103*1c12ee1eSDan Willemsen		panic(err)
104*1c12ee1eSDan Willemsen	}
105*1c12ee1eSDan Willemsen	return file
106*1c12ee1eSDan Willemsen}()
107*1c12ee1eSDan Willemsen
108*1c12ee1eSDan Willemsenfunc file_internal_testprotos_irregular_irregular_proto_init() { _ = fileDesc }
109*1c12ee1eSDan Willemsen
110*1c12ee1eSDan Willemsenconst descriptorText = `
111*1c12ee1eSDan Willemsen  name: "internal/testprotos/irregular/irregular.proto"
112*1c12ee1eSDan Willemsen  package: "goproto.proto.thirdparty"
113*1c12ee1eSDan Willemsen  message_type {
114*1c12ee1eSDan Willemsen    name: "IrregularMessage"
115*1c12ee1eSDan Willemsen    field {
116*1c12ee1eSDan Willemsen      name: "s"
117*1c12ee1eSDan Willemsen      number: 1
118*1c12ee1eSDan Willemsen      label: LABEL_OPTIONAL
119*1c12ee1eSDan Willemsen      type: TYPE_STRING
120*1c12ee1eSDan Willemsen      json_name: "s"
121*1c12ee1eSDan Willemsen    }
122*1c12ee1eSDan Willemsen  }
123*1c12ee1eSDan Willemsen  options {
124*1c12ee1eSDan Willemsen    go_package: "google.golang.org/protobuf/internal/testprotos/irregular"
125*1c12ee1eSDan Willemsen  }
126*1c12ee1eSDan Willemsen`
127*1c12ee1eSDan Willemsen
128*1c12ee1eSDan Willemsentype AberrantMessage int
129*1c12ee1eSDan Willemsen
130*1c12ee1eSDan Willemsenfunc (m AberrantMessage) ProtoMessage()            {}
131*1c12ee1eSDan Willemsenfunc (m AberrantMessage) Reset()                   {}
132*1c12ee1eSDan Willemsenfunc (m AberrantMessage) String() string           { return "" }
133*1c12ee1eSDan Willemsenfunc (m AberrantMessage) Marshal() ([]byte, error) { return nil, nil }
134*1c12ee1eSDan Willemsenfunc (m AberrantMessage) Unmarshal([]byte) error   { return nil }
135