From dbcdd5f3c9b2ba7859d4c3b0af2425b675e85e82 Mon Sep 17 00:00:00 2001 From: Sergio Salvatore Date: Thu, 29 Aug 2024 14:25:17 -0400 Subject: [PATCH] TextUnmarshaler is Excluded from Mangling We shouldn't ever mangle types that implement TextUnmarshaler. --- transform/transformer.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/transform/transformer.go b/transform/transformer.go index 3e98da6..cb345ae 100644 --- a/transform/transformer.go +++ b/transform/transformer.go @@ -128,12 +128,20 @@ func (t *Transformer) maybeRecursivelyMangle(mangler Mangler, state *transformMa if !mangler.ShouldRecurse(field) { continue } + ft := field.Type + + // also don't recurse into TextUnarshaler types + if ft.Implements(textMReflectType) || reflect.PointerTo(ft).Implements(textMReflectType) { + continue + } + // strip any outer pointerification, slice or array switch ft.Kind() { case reflect.Ptr, reflect.Array, reflect.Slice: ft = ft.Elem() } + fieldTransformer := Transformer{ manglers: []Mangler{mangler}, mState: nil,