private static void TypeSignatureToString()

in src/Refasmer/ToString/SignatureToString.cs [84:154]


    private static void TypeSignatureToString( MetadataReader reader, ref BlobReader blobReader, StringBuilder stringBuilder )
    {
        var typeCode = blobReader.ReadCompressedInteger();
            
        if (typeCode != (int)SignatureTypeKind.Class && typeCode != (int)SignatureTypeKind.ValueType)
            stringBuilder.Append($"{(SignatureTypeCode) typeCode} ");

        switch (typeCode)
        {
            case (int)SignatureTypeCode.Boolean:
            case (int)SignatureTypeCode.Char:
            case (int)SignatureTypeCode.SByte:
            case (int)SignatureTypeCode.Byte:
            case (int)SignatureTypeCode.Int16:
            case (int)SignatureTypeCode.UInt16:
            case (int)SignatureTypeCode.Int32:
            case (int)SignatureTypeCode.UInt32:
            case (int)SignatureTypeCode.Int64:
            case (int)SignatureTypeCode.UInt64:
            case (int)SignatureTypeCode.Single:
            case (int)SignatureTypeCode.Double:
            case (int)SignatureTypeCode.IntPtr:
            case (int)SignatureTypeCode.UIntPtr:
            case (int)SignatureTypeCode.Object:
            case (int)SignatureTypeCode.String:
            case (int)SignatureTypeCode.Void:
            case (int)SignatureTypeCode.TypedReference:

            case (int)SignatureTypeCode.Sentinel:
                break;

            case (int)SignatureTypeCode.Pointer:
            case (int)SignatureTypeCode.ByReference:
            case (int)SignatureTypeCode.Pinned:
            case (int)SignatureTypeCode.SZArray:
                TypeSignatureToString(reader, ref blobReader, stringBuilder);
                break;

            case (int)SignatureTypeCode.FunctionPointer:
                var header = blobReader.ReadSignatureHeader();
                MethodSignatureToString(reader, header, ref blobReader, stringBuilder);
                break;

            case (int)SignatureTypeCode.Array:
                ArrayTypeSignatureToString(reader, ref blobReader, stringBuilder);
                break;

            case (int)SignatureTypeCode.RequiredModifier:
            case (int)SignatureTypeCode.OptionalModifier:
                ModifiedTypeSignatureToString(reader, ref blobReader, stringBuilder);
                break;

            case (int)SignatureTypeCode.GenericTypeInstance:
                GenericTypeInstanceSignatureToString(reader, ref blobReader, stringBuilder);
                break;

            case (int)SignatureTypeCode.GenericTypeParameter:
            case (int)SignatureTypeCode.GenericMethodParameter:
                var index = blobReader.ReadCompressedInteger();
                stringBuilder.Append($"{index} ");
                break;

            case (int)SignatureTypeKind.Class:
            case (int)SignatureTypeKind.ValueType:
                TypeHandleSignatureToString(reader, ref blobReader, stringBuilder);
                break;

            default:
                throw new BadImageFormatException();
        }
    }