Skip to content

Commit dbcdd5f

Browse files
TextUnmarshaler is Excluded from Mangling
We shouldn't ever mangle types that implement TextUnmarshaler.
1 parent 4f66430 commit dbcdd5f

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

transform/transformer.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,20 @@ func (t *Transformer) maybeRecursivelyMangle(mangler Mangler, state *transformMa
128128
if !mangler.ShouldRecurse(field) {
129129
continue
130130
}
131+
131132
ft := field.Type
133+
134+
// also don't recurse into TextUnarshaler types
135+
if ft.Implements(textMReflectType) || reflect.PointerTo(ft).Implements(textMReflectType) {
136+
continue
137+
}
138+
132139
// strip any outer pointerification, slice or array
133140
switch ft.Kind() {
134141
case reflect.Ptr, reflect.Array, reflect.Slice:
135142
ft = ft.Elem()
136143
}
144+
137145
fieldTransformer := Transformer{
138146
manglers: []Mangler{mangler},
139147
mState: nil,

0 commit comments

Comments
 (0)