15
15
package protoencoding
16
16
17
17
import (
18
- "fmt"
19
-
20
18
"google.golang.org/protobuf/proto"
21
19
"google.golang.org/protobuf/types/descriptorpb"
22
20
)
@@ -62,11 +60,7 @@ func stripLegacyOptionsFromFile(file *descriptorpb.FileDescriptorProto) (*descri
62
60
continue
63
61
}
64
62
if ! cloned {
65
- newFile , err := clone (file )
66
- if err != nil {
67
- return nil , err
68
- }
69
- file = newFile
63
+ file = proto .CloneOf (file )
70
64
cloned = true
71
65
}
72
66
file .MessageType [i ] = newDescriptor
@@ -77,11 +71,7 @@ func stripLegacyOptionsFromFile(file *descriptorpb.FileDescriptorProto) (*descri
77
71
}
78
72
if newExts != nil {
79
73
if ! cloned {
80
- newFile , err := clone (file )
81
- if err != nil {
82
- return nil , err
83
- }
84
- file = newFile
74
+ file = proto .CloneOf (file )
85
75
cloned = true
86
76
}
87
77
file .Extension = newExts
@@ -100,11 +90,7 @@ func stripLegacyOptionsFromMessage(message *descriptorpb.DescriptorProto) (*desc
100
90
if message .GetOptions ().GetMessageSetWireFormat () {
101
91
// Strip this option since the Go runtime does not support
102
92
// creating protoreflect.Descriptor instances with this set.
103
- newMessage , err := clone (message )
104
- if err != nil {
105
- return nil , err
106
- }
107
- message = newMessage
93
+ message = proto .CloneOf (message )
108
94
cloned = true
109
95
message .Options .MessageSetWireFormat = nil
110
96
}
@@ -117,11 +103,7 @@ func stripLegacyOptionsFromMessage(message *descriptorpb.DescriptorProto) (*desc
117
103
continue
118
104
}
119
105
if ! cloned {
120
- newMessage , err := clone (message )
121
- if err != nil {
122
- return nil , err
123
- }
124
- message = newMessage
106
+ message = proto .CloneOf (message )
125
107
cloned = true
126
108
}
127
109
message .Field [i ] = newDescriptor
@@ -136,11 +118,7 @@ func stripLegacyOptionsFromMessage(message *descriptorpb.DescriptorProto) (*desc
136
118
continue
137
119
}
138
120
if ! cloned {
139
- newMessage , err := clone (message )
140
- if err != nil {
141
- return nil , err
142
- }
143
- message = newMessage
121
+ message = proto .CloneOf (message )
144
122
cloned = true
145
123
}
146
124
message .NestedType [i ] = newDescriptor
@@ -151,11 +129,7 @@ func stripLegacyOptionsFromMessage(message *descriptorpb.DescriptorProto) (*desc
151
129
}
152
130
if newExtRanges != nil {
153
131
if ! cloned {
154
- newMessage , err := clone (message )
155
- if err != nil {
156
- return nil , err
157
- }
158
- message = newMessage
132
+ message = proto .CloneOf (message )
159
133
cloned = true
160
134
}
161
135
message .ExtensionRange = newExtRanges
@@ -166,11 +140,7 @@ func stripLegacyOptionsFromMessage(message *descriptorpb.DescriptorProto) (*desc
166
140
}
167
141
if newExts != nil {
168
142
if ! cloned {
169
- newMessage , err := clone (message )
170
- if err != nil {
171
- return nil , err
172
- }
173
- message = newMessage
143
+ message = proto .CloneOf (message )
174
144
cloned = true
175
145
}
176
146
message .Extension = newExts
@@ -192,10 +162,7 @@ func stripLegacyOptionsFromField(field *descriptorpb.FieldDescriptorProto) (*des
192
162
// creating protoreflect.Descriptor instances with this set.
193
163
// Buf CLI doesn't actually support weak dependencies, so
194
164
// there should be no practical consequences of removing this.
195
- newField , err := clone (field )
196
- if err != nil {
197
- return nil , err
198
- }
165
+ newField := proto .CloneOf (field )
199
166
newField .Options .Weak = nil
200
167
return newField , nil
201
168
}
@@ -267,10 +234,7 @@ func stripLegacyOptionsFromExtensionRanges(extRanges []*descriptorpb.DescriptorP
267
234
continue
268
235
}
269
236
if extRange .GetEnd () > maxTagNumber + 1 /* extension range end is exclusive */ {
270
- newExtRange , err := clone (extRange )
271
- if err != nil {
272
- return nil , err
273
- }
237
+ newExtRange := proto .CloneOf (extRange )
274
238
newExtRange .End = proto .Int32 (maxTagNumber + 1 )
275
239
if newExtRanges == nil {
276
240
// initialize to everything so far except current item (that we're replacing)
@@ -286,13 +250,3 @@ func stripLegacyOptionsFromExtensionRanges(extRanges []*descriptorpb.DescriptorP
286
250
}
287
251
return newExtRanges , nil
288
252
}
289
-
290
- func clone [M proto.Message ](message M ) (M , error ) {
291
- clone := proto .Clone (message )
292
- newMessage , isFileProto := clone .(M )
293
- if ! isFileProto {
294
- var zero M
295
- return zero , fmt .Errorf ("proto.Clone returned unexpected value: %T instead of %T" , clone , message )
296
- }
297
- return newMessage , nil
298
- }
0 commit comments