@@ -700,6 +700,10 @@ def _unpack_composite(schema: Schema, composite: Composite, buffer: memoryview):
700700 return UnpackedValue (rv , size )
701701
702702def _prettify_type (_schema : Schema , t : Type , v ):
703+ if isinstance (t , RefType ):
704+ return _prettify_type (_schema , _schema .types [t .type ], v )
705+ if isinstance (t , Set ):
706+ return t .decode (v )
703707 if t .primitiveType == PrimitiveType .CHAR and (
704708 t .characterEncoding in (CharacterEncoding .ASCII , CharacterEncoding .US_ASCII ) or t .characterEncoding is None
705709 ):
@@ -1029,6 +1033,10 @@ def _walk_fields_decode_composite(schema: Schema, rv: dict, composite: Composite
10291033 rv [t .name ] = {}
10301034 _walk_fields_decode_composite (schema , rv [t .name ], t , vals , cursor )
10311035
1036+ elif isinstance (t , RefType ):
1037+ _t = _resolve_ref_type (t , composite )
1038+ _decode_value (schema , rv , t .name , _t , vals , cursor )
1039+
10321040 else :
10331041 if t .presence != Presence .CONSTANT :
10341042 _decode_value (schema , rv , t .name , t , vals , cursor )
@@ -1053,6 +1061,12 @@ def _walk_fields_decode(schema: Schema, rv: dict, fields: List[Union[Group, Fiel
10531061 rv [f .name ] = {}
10541062 _walk_fields_decode_composite (schema , rv [f .name ], f .type , vals , cursor )
10551063
1064+ elif isinstance (f .type , PrimitiveType ):
1065+ _decode_value (schema , rv , f .name , f .type , vals , cursor )
1066+
1067+ elif isinstance (f .type , RefType ):
1068+ _decode_value (schema , rv , f .name , schema .types [f .type ], vals , cursor )
1069+
10561070 else :
10571071 if f .type .presence != Presence .CONSTANT :
10581072 _decode_value (schema , rv , f .name , f .type , vals , cursor )
0 commit comments