Compare commits

...

1 Commits

Author SHA1 Message Date
seedhammer
1e5ed28b4f feat: implement TinyGo support for encode 2025-07-18 21:58:12 +02:00
3 changed files with 4 additions and 4 deletions

View File

@ -69,7 +69,7 @@ func newTypeInfo(t reflect.Type) *typeInfo {
tInfo.spclType = specialTypeTag
} else if t == typeTime {
tInfo.spclType = specialTypeTime
} else if reflect.PtrTo(t).Implements(typeUnmarshaler) {
} else if implements(reflect.PtrTo(t), typeUnmarshaler) {
tInfo.spclType = specialTypeUnmarshalerIface
}

View File

@ -3078,7 +3078,7 @@ func fillFloat(t cborType, val float64, v reflect.Value) error {
}
func fillByteString(t cborType, val []byte, shared bool, v reflect.Value, bsts ByteStringToStringMode, bum BinaryUnmarshalerMode) error {
if bum == BinaryUnmarshalerByteString && reflect.PtrTo(v.Type()).Implements(typeBinaryUnmarshaler) {
if bum == BinaryUnmarshalerByteString && implements(reflect.PtrTo(v.Type()), typeBinaryUnmarshaler) {
if v.CanAddr() {
v = v.Addr()
if u, ok := v.Interface().(encoding.BinaryUnmarshaler); ok {

View File

@ -1799,10 +1799,10 @@ func getEncodeFuncInternal(t reflect.Type) (ef encodeFunc, ief isEmptyFunc) {
case typeByteString:
return encodeMarshalerType, isEmptyString
}
if reflect.PtrTo(t).Implements(typeMarshaler) {
if implements(reflect.PtrTo(t), typeMarshaler) {
return encodeMarshalerType, alwaysNotEmpty
}
if reflect.PtrTo(t).Implements(typeBinaryMarshaler) {
if implements(reflect.PtrTo(t), typeBinaryMarshaler) {
defer func() {
// capture encoding method used for modes that disable BinaryMarshaler
bme := binaryMarshalerEncoder{