@@ -161,22 +161,31 @@ func RegisterExtension(extension Extension) {
161
161
extensions = append (extensions , extension )
162
162
}
163
163
164
- func getTypeDecoderFromExtension (typ reflect.Type ) ValDecoder {
165
- decoder := _getTypeDecoderFromExtension (typ )
164
+ func getTypeDecoderFromExtension (cfg * frozenConfig , typ reflect.Type ) ValDecoder {
165
+ decoder := _getTypeDecoderFromExtension (cfg , typ )
166
166
if decoder != nil {
167
167
for _ , extension := range extensions {
168
168
decoder = extension .DecorateDecoder (typ , decoder )
169
169
}
170
+ for _ , extension := range cfg .extensions {
171
+ decoder = extension .DecorateDecoder (typ , decoder )
172
+ }
170
173
}
171
174
return decoder
172
175
}
173
- func _getTypeDecoderFromExtension (typ reflect.Type ) ValDecoder {
176
+ func _getTypeDecoderFromExtension (cfg * frozenConfig , typ reflect.Type ) ValDecoder {
174
177
for _ , extension := range extensions {
175
178
decoder := extension .CreateDecoder (typ )
176
179
if decoder != nil {
177
180
return decoder
178
181
}
179
182
}
183
+ for _ , extension := range cfg .extensions {
184
+ decoder := extension .CreateDecoder (typ )
185
+ if decoder != nil {
186
+ return decoder
187
+ }
188
+ }
180
189
typeName := typ .String ()
181
190
decoder := typeDecoders [typeName ]
182
191
if decoder != nil {
@@ -191,23 +200,32 @@ func _getTypeDecoderFromExtension(typ reflect.Type) ValDecoder {
191
200
return nil
192
201
}
193
202
194
- func getTypeEncoderFromExtension (typ reflect.Type ) ValEncoder {
195
- encoder := _getTypeEncoderFromExtension (typ )
203
+ func getTypeEncoderFromExtension (cfg * frozenConfig , typ reflect.Type ) ValEncoder {
204
+ encoder := _getTypeEncoderFromExtension (cfg , typ )
196
205
if encoder != nil {
197
206
for _ , extension := range extensions {
198
207
encoder = extension .DecorateEncoder (typ , encoder )
199
208
}
209
+ for _ , extension := range cfg .extensions {
210
+ encoder = extension .DecorateEncoder (typ , encoder )
211
+ }
200
212
}
201
213
return encoder
202
214
}
203
215
204
- func _getTypeEncoderFromExtension (typ reflect.Type ) ValEncoder {
216
+ func _getTypeEncoderFromExtension (cfg * frozenConfig , typ reflect.Type ) ValEncoder {
205
217
for _ , extension := range extensions {
206
218
encoder := extension .CreateEncoder (typ )
207
219
if encoder != nil {
208
220
return encoder
209
221
}
210
222
}
223
+ for _ , extension := range cfg .extensions {
224
+ encoder := extension .CreateEncoder (typ )
225
+ if encoder != nil {
226
+ return encoder
227
+ }
228
+ }
211
229
typeName := typ .String ()
212
230
encoder := typeEncoders [typeName ]
213
231
if encoder != nil {
@@ -324,6 +342,9 @@ func createStructDescriptor(cfg *frozenConfig, typ reflect.Type, bindings []*Bin
324
342
for _ , extension := range extensions {
325
343
extension .UpdateStructDescriptor (structDescriptor )
326
344
}
345
+ for _ , extension := range cfg .extensions {
346
+ extension .UpdateStructDescriptor (structDescriptor )
347
+ }
327
348
processTags (structDescriptor , cfg )
328
349
// merge normal & embedded bindings & sort with original order
329
350
allBindings := sortableBindings (append (embeddedBindings , structDescriptor .Fields ... ))
0 commit comments