
    6 fD                       d Z ddlmZ ddlmZ ddlmZmZmZm	Z	 ddl
mZ ddlmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? dd	l@mAZAmBZBmCZC e	ee2f         ZD G d
 de3eE                   ZFd$dZGd%dZHd&d'dZId(dZJd)d"ZKd#S )*z:Utilities for pretty-printing IR in a human-readable form.    )annotations)defaultdict)AnyFinalSequenceUnion)
short_name)FuncIRall_values_full)	ModuleIRs).	ERR_NEVERAssignAssignMulti
BasicBlockBoxBranchCallCallCCastComparisonOp	ControlOpDecRefExtendFloatFloatComparisonOpFloatNegFloatOpGetAttrGetElementPtrGotoIncRef
InitStaticIntegerIntOp	KeepAliveLoadAddressLoadErrorValue
LoadGlobalLoadLiteralLoadMem
LoadStatic
MethodCallOp	OpVisitorRaiseStandardErrorRegisterReturnSetAttrSetMemTruncateTupleGetTupleSetUnborrowUnboxUnreachableValue)RTypeis_bool_rprimitiveis_int_rprimitivec                  ~   e Zd ZU dZd^dZd_d
Zej        dej        diZ	de
d<   d`dZdadZdbdZdcdZdddZdedZdfdZdgdZdhd Zdid"Zdjd$Zdkd&Zdld(Zdmd*Zdnd,Zdod.Zdpd0Zdqd2Zdrd4Zdsd6Zdtd8Zdud:Z dvd<Z!dwd>Z"dxd@Z#dydBZ$dzdDZ%d{dFZ&d|dHZ'd}dJZ(d~dLZ)ddNZ*ddPZ+ddRZ,ddTZ-ddVZ.ddXZ/dd\Z0d]S )IRPrettyPrintVisitorz(Internal visitor that pretty-prints ops.namesdict[Value, str]returnNonec                    || _         d S N)r@   )selfr@   s     E/var/www/equiseq/venv/lib/python3.11/site-packages/mypyc/ir/pprint.py__init__zIRPrettyPrintVisitor.__init__C   s     


    opr    strc                8    |                      d|j                  S )Nzgoto %l)formatlabelrF   rJ   s     rG   
visit_gotozIRPrettyPrintVisitor.visit_gotoI   s    {{9bh///rI   )%rbool)zis_error(%r) r   branch_op_namesr   c                   | j         |j                 \  }}|j        rd| }|                     ||j                  }d}|j        r
d|j        z  }d| d| d}|r|d| z  }|                     ||j        |j                  S )Nznot rS   z (error at %s:%d)zif z goto %lz else goto %l :: )rT   rJ   negatedrM   valuetraceback_entrytruefalse)rF   rJ   fmttypcondtbs         rG   visit_branchz!IRPrettyPrintVisitor.visit_branchN   s    '.S: 	,,C{{3)) 	:$r'99B3D33"333 	 <#<<C{{3222rI   r1   c                8    |                      d|j                  S )Nz	return %r)rM   rX   rO   s     rG   visit_returnz!IRPrettyPrintVisitor.visit_return\   s    {{;111rI   r9   c                    dS )Nunreachable rO   s     rG   visit_unreachablez&IRPrettyPrintVisitor.visit_unreachable_   s    }rI   r   c                D    |                      d|j        |j                  S )Nz%r = %r)rM   destsrcrO   s     rG   visit_assignz!IRPrettyPrintVisitor.visit_assignb   s    {{9bgrv666rI   r   c                                           d|j        d                     fd|j        D                                 S )Nz	%r = [%s], c              3  D   K   | ]}                     d |          V  dS rQ   NrM   .0vrF   s     rG   	<genexpr>z:IRPrettyPrintVisitor.visit_assign_multi.<locals>.<genexpr>f   s2      :`:`TU4;;tQ;O;O:`:`:`:`:`:`rI   )rM   rh   joinri   rO   s   ` rG   visit_assign_multiz'IRPrettyPrintVisitor.visit_assign_multie   s@    {{;:`:`:`:`Y[Y_:`:`:`1`1`aaarI   r'   c                :    |                      d||j                  S )Nz%r = <error> :: %s)rM   typerO   s     rG   visit_load_error_valuez+IRPrettyPrintVisitor.visit_load_error_valueh   s    {{/RW===rI   r)   c                J   d}t          |j        t                    rd}t          |j                  }t          |j        t                    r@d t          |j        t                    D             }dd                    |          z   dz   }|                     d|||          S )	NrS   zobject c                ,    g | ]}t          |          S re   )repr)rq   is     rG   
<listcomp>z;IRPrettyPrintVisitor.visit_load_literal.<locals>.<listcomp>z   s    JJJ1tAwwJJJrI   )keyzfrozenset({rl   z})z	%r = %s%s)	
isinstancerX   intr{   	frozensetsortedrK   rt   rM   )rF   rJ   prefixrvalueformatted_itemss        rG   visit_load_literalz'IRPrettyPrintVisitor.visit_load_literalk   s     bh$$ 	Fbhbh	** 	G KJrxS0I0I0IJJJO"TYY%?%??$FF{{;FF;;;rI   r   c                n    |                      d||                     |          |j        |j                  S )Nz%r = %s%r.%s)rM   borrow_prefixobjattrrO   s     rG   visit_get_attrz#IRPrettyPrintVisitor.visit_get_attr~   s.    {{>2t/A/A"/E/ErvrwWWWrI   r-   c                    |j         rdS dS )Nzborrow rS   )is_borrowedrO   s     rG   r   z"IRPrettyPrintVisitor.borrow_prefix   s    > 	9rrI   r2   c                    |j         r|j        t          k    sJ |j        t          k    r'|                     d|j        |j        |j                  S |                     d|j        |j        |j        |          S )Nz
%r.%s = %rz%r.%s = %r; %r = is_error)is_init
error_kindr   rM   r   r   ri   rO   s     rG   visit_set_attrz#IRPrettyPrintVisitor.visit_set_attr   sl    : 	.=I----=I%%;;|RVRWbfEEE;;:BFBGRVUWXXXrI   r+   c                    |j         rdt          |j                    dnd}|j        }|j        |j         d| }|                     d|||j        |          S )N  ()rS   .z%r = %s :: %s%s)annr{   
identifiermodule_namerM   	namespace)rF   rJ   r   names       rG   visit_load_staticz&IRPrettyPrintVisitor.visit_load_static   sh    ')v5#DLL####2}>%n--t--D{{,b$cJJJrI   r"   c                z    |j         }|j        |j         d| }|                     d||j        |j                  S )Nr   z%s = %r :: %s)r   r   rM   rX   r   rF   rJ   r   s      rG   visit_init_staticz&IRPrettyPrintVisitor.visit_init_static   sB    }>%n--t--D{{?D"(BLIIIrI   r5   c                n    |                      d||                     |          |j        |j                  S )Nz%r = %s%r[%d])rM   r   ri   indexrO   s     rG   visit_tuple_getz$IRPrettyPrintVisitor.visit_tuple_get   s0    {{?B0B0B20F0FPRPXYYYrI   r6   c                ~     d                      fd|j        D                       }                     d||          S )Nrl   c              3  D   K   | ]}                     d |          V  dS rn   ro   )rq   itemrF   s     rG   rs   z7IRPrettyPrintVisitor.visit_tuple_set.<locals>.<genexpr>   s1      JJT[[t44JJJJJJrI   z	%r = (%s))rt   itemsrM   )rF   rJ   item_strs   `  rG   visit_tuple_setz$IRPrettyPrintVisitor.visit_tuple_set   sA    99JJJJJJJJJ{{;H555rI   r!   c                    |                      d|j                  }t          |j        j                  st	          |j        j                  r$|dt          |j        j        j                   z  }|S )Nz
inc_ref %rrV   )rM   ri   r<   rw   r=   r	   r   rF   rJ   ss      rG   visit_inc_refz"IRPrettyPrintVisitor.visit_inc_ref   sf    KKbf--bfk** 	7.?.L.L 	76
26;#344666ArI   r   c                    |                      d|j        rdnd|j                  }t          |j        j                  st          |j        j                  r$|dt          |j        j        j                   z  }|S )Nz%sdec_ref %rxrS   rV   )rM   is_xdecri   r<   rw   r=   r	   r   r   s      rG   visit_dec_refz"IRPrettyPrintVisitor.visit_dec_ref   ss    KKrz(Ar26JJbfk** 	7.?.L.L 	76
26;#344666ArI   r   c                     d                      fd|j        D                       }|j        j        }| d| d}|j        s                     d|          |z   }|S )Nrl   c              3  D   K   | ]}                     d |          V  dS rn   ro   rq   argrF   s     rG   rs   z2IRPrettyPrintVisitor.visit_call.<locals>.<genexpr>   1      CCCT3//CCCCCCrI   (r   %r = )rt   argsfn	shortnameis_voidrM   )rF   rJ   r   r	   r   s   `    rG   
visit_callzIRPrettyPrintVisitor.visit_call   sq    yyCCCC27CCCCCU_
##D###z 	-GR((1,ArI   r,   c                     d                      fd|j        D                       }                     d|j        |j        |          }|j        s                     d|          |z   }|S )Nrl   c              3  D   K   | ]}                     d |          V  dS rn   ro   r   s     rG   rs   z9IRPrettyPrintVisitor.visit_method_call.<locals>.<genexpr>   r   rI   z	%r.%s(%s)r   )rt   r   rM   r   methodr   )rF   rJ   r   r   s   `   rG   visit_method_callz&IRPrettyPrintVisitor.visit_method_call   sm    yyCCCC27CCCCCKKRVRY==z 	-GR((1,ArI   r   c                n    |                      d||                     |          |j        |j                  S )Nz%r = %scast(%s, %r))rM   r   rw   ri   rO   s     rG   
visit_castzIRPrettyPrintVisitor.visit_cast   s1    {{0"d6H6H6L6LbgWYW]^^^rI   r   c                P    |                      d||j        j        |j                  S )Nz%r = box(%s, %r)rM   ri   rw   rO   s     rG   	visit_boxzIRPrettyPrintVisitor.visit_box   s!    {{-r26;GGGrI   r8   c                F    |                      d||j        |j                  S )Nz%r = unbox(%s, %r))rM   rw   ri   rO   s     rG   visit_unboxz IRPrettyPrintVisitor.visit_unbox   s    {{/RWbfEEErI   r/   c                f   |j         t          |j         t                    r/|                     d||j        t          |j                             S t          |j         t                    r"|                     d||j        |j                   S J d            |                     d||j                  S )Nz%r = raise %s(%s)z%r = raise %s(%r)Fz&value type must be either str or Valuez%r = raise %s)rX   r   rK   rM   
class_namer{   r:   rO   s     rG   visit_raise_standard_errorz/IRPrettyPrintVisitor.visit_raise_standard_error   s    8"(C(( G{{#6BM4PRPX>>ZZZBHe,, G{{#6BM28TTTFFFFu;;BMBBBrI   r   c                     d                      fd|j        D                       }|j        r                     d|j        |          S                      d||j        |          S )Nrl   c              3  D   K   | ]}                     d |          V  dS rn   ro   r   s     rG   rs   z4IRPrettyPrintVisitor.visit_call_c.<locals>.<genexpr>   s1      GGT[[s33GGGGGGrI   z%s(%s)z%r = %s(%s))rt   r   r   rM   function_name)rF   rJ   args_strs   `  rG   visit_call_cz!IRPrettyPrintVisitor.visit_call_c   sj    99GGGGrwGGGGG: 	N;;x)98DDD;;}b"2BHMMMrI   r4   c                R    |                      d||j        |j        |j                  S )Nz%r = truncate %r: %t to %t)rM   ri   src_typerw   rO   s     rG   visit_truncatez#IRPrettyPrintVisitor.visit_truncate   s%    {{7RVR[RTRYZZZrI   r   c                l    |j         rd}nd}|                     d|||j        |j        |j                  S )Nz signedrS   z%r = extend%s %r: %t to %t)signedrM   ri   r   rw   )rF   rJ   extras      rG   visit_extendz!IRPrettyPrintVisitor.visit_extend   s=    9 	EEE{{7UBFBKY[Y`aaarI   r(   c                ~    |j         rdt          |j                    dnd}|                     d||j        |          S )Nr   r   rS   z%r = load_global %s :: static%s)r   r{   rM   r   )rF   rJ   r   s      rG   visit_load_globalz&IRPrettyPrintVisitor.visit_load_global   sC    ')v5#DLL####2{{<b"-QTUUUrI   r$   c                r    |                      d||j        t          j        |j                 |j                  S Nz%r = %r %s %r)rM   lhsr$   op_strrJ   rhsrO   s     rG   visit_int_opz!IRPrettyPrintVisitor.visit_int_op   s)    {{?BRU8KRVTTTrI   r   c                X   |j         t          j        t          j        t          j        t          j        fv rd}n:|j         t          j        t          j        t          j        t          j	        fv rd}nd}| 
                    d||j        t          j        |j                  |j        |          S )Nz
 :: signedz :: unsignedrS   z%r = %r %s %r%s)rJ   r   SLTSGTSLESGEULTUGTULEUGErM   r   r   r   )rF   rJ   sign_formats      rG   visit_comparison_opz(IRPrettyPrintVisitor.visit_comparison_op   s    5\%|'79I<K[\\\&KKU|')9<;K\M]^^^(KKK{{r26<+>ru+Erv{
 
 	
rI   r   c                r    |                      d||j        t          j        |j                 |j                  S r   )rM   r   r   r   rJ   r   rO   s     rG   visit_float_opz#IRPrettyPrintVisitor.visit_float_op   s)    {{?Bru8MrvVVVrI   r   c                :    |                      d||j                  S )Nz%r = -%rrM   ri   rO   s     rG   visit_float_negz$IRPrettyPrintVisitor.visit_float_neg   s    {{:r26222rI   r   c                h    |                      d||j        |j        |j                 |j                  S r   )rM   r   r   rJ   r   rO   s     rG   visit_float_comparison_opz.IRPrettyPrintVisitor.visit_float_comparison_op   s)    {{?B	"%8H"&QQQrI   r*   c                F    |                      d||j        |j                  S )Nz%r = load_mem %r :: %t*r   rO   s     rG   visit_load_memz#IRPrettyPrintVisitor.visit_load_mem  s    {{4b"&"'JJJrI   r3   c                P    |                      d|j        |j        |j                  S )Nzset_mem %r, %r :: %t*)rM   rh   ri   	dest_typerO   s     rG   visit_set_memz"IRPrettyPrintVisitor.visit_set_mem  s!    {{2BGRVR\RRRrI   r   c                R    |                      d||j        |j        |j                  S )Nz %r = get_element_ptr %r %s :: %t)rM   ri   fieldr   rO   s     rG   visit_get_element_ptrz*IRPrettyPrintVisitor.visit_get_element_ptr  s%    {{=r2628UWU`aaarI   r&   c                p   t          |j        t                    r|                     d||j                  S t          |j        t                    rK|j        j        }|j        j        |j        j         d| }|                     d|||j        j                  S |                     d||j                  S )Nz%r = load_address %rr   z%r = load_address %s :: %sz%r = load_address %s)r   ri   r0   rM   r+   r   r   r   r   s      rG   visit_load_addressz'IRPrettyPrintVisitor.visit_load_address
  s    bfh'' 	C;;5r26BBB
++ 	C6$Dv!-&,55t55;;;RrvGWXXX;;5r26BBBrI   r%   c           	          |j         rd}nd}                     d                    |d                     fd|j        D                                           S )Nzsteal rS   zkeep_alive {}{}rl   c              3  D   K   | ]}                     d |          V  dS rn   ro   rp   s     rG   rs   z8IRPrettyPrintVisitor.visit_keep_alive.<locals>.<genexpr>  s1      5[5[qdkk$6J6J5[5[5[5[5[5[rI   )stealrM   rt   ri   )rF   rJ   r   s   `  rG   visit_keep_alivez%IRPrettyPrintVisitor.visit_keep_alive  sg    8 	EEE{{$$UDII5[5[5[5[TVTZ5[5[5[,[,[\\
 
 	
rI   r7   c                :    |                      d||j                  S )Nz%r = unborrow %rr   rO   s     rG   visit_unborrowz#IRPrettyPrintVisitor.visit_unborrow  s    {{-r26:::rI   r\   r   r   c                   g }d}t          |          }|t          |          k     r>|                    d|          }|dk     rt          |          }|                    |||                    |t          |          k     r||dz            }|                    d          }|dk    rt          |t                    sJ t          |t                    r)|                    t          |j	                             nKt          |t                    r)|                    t          |j	                             n|                    | j        |                    n|dk    r|                    d|z             n|dk    r|                    d|z             n|d	k    r5t          |t                    sJ |                    d
|j        z             ns|dk    r2t          |t                    sJ |                    |j                   n;|dk    r#|                    t          |                     nt#          d|           |dz   }n|}|t          |          k     >d                    |          S )a2  Helper for formatting strings.

        These format sequences are supported in fmt:

          %s: arbitrary object converted to string using str()
          %r: name of IR value/register
          %d: int
          %f: float
          %l: BasicBlock (formatted as label 'Ln')
          %t: RType
        r   %   rdz%dfz%flzL%str   zInvalid format sequence %   rS   )listlenfindappendpopr   r:   r#   rK   rX   r   r{   r@   r   rN   r;   r   
ValueErrorrt   )	rF   r\   r   resultr|   arglistntypespecr   s	            rG   rM   zIRPrettyPrintVisitor.format#  sQ    t**#c((lla  A1uuHHMM#ac(###3s88||q1u:kk!nns??%c511111!#w// 7c#)nn5555#C// 7d39oo6666djo6666__MM$*----__MM$*----__%c:66666MM%#)"34444__%c511111MM#(++++__MM#c((++++$%K%K%KLLLEM #c((llN wwvrI   N)r@   rA   rB   rC   )rJ   r    rB   rK   )rJ   r   rB   rK   )rJ   r1   rB   rK   )rJ   r9   rB   rK   )rJ   r   rB   rK   )rJ   r   rB   rK   )rJ   r'   rB   rK   )rJ   r)   rB   rK   )rJ   r   rB   rK   )rJ   r-   rB   rK   )rJ   r2   rB   rK   )rJ   r+   rB   rK   )rJ   r"   rB   rK   )rJ   r5   rB   rK   )rJ   r6   rB   rK   )rJ   r!   rB   rK   )rJ   r   rB   rK   )rJ   r   rB   rK   )rJ   r,   rB   rK   )rJ   r   rB   rK   )rJ   r   rB   rK   )rJ   r8   rB   rK   )rJ   r/   rB   rK   )rJ   r   rB   rK   )rJ   r4   rB   rK   )rJ   r   rB   rK   )rJ   r(   rB   rK   )rJ   r$   rB   rK   )rJ   r   rB   rK   )rJ   r   rB   rK   )rJ   r   rB   rK   )rJ   r   rB   rK   )rJ   r*   rB   rK   )rJ   r3   rB   rK   )rJ   r   rB   rK   )rJ   r&   rB   rK   )rJ   r%   rB   rK   )rJ   r7   rB   rK   )r\   rK   r   r   rB   rK   )1__name__
__module____qualname____doc__rH   rP   r   BOOLIS_ERRORrT   __annotations__r`   rb   rf   rj   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rM   re   rI   rG   r?   r?   @   s        22   0 0 0 0 %k>6?L`aOaaaa3 3 3 32 2 2 2   7 7 7 7b b b b> > > >< < < <&X X X X   
Y Y Y YK K K KJ J J JZ Z Z Z6 6 6 6            _ _ _ _H H H HF F F F	C 	C 	C 	CN N N N[ [ [ [b b b bV V V VU U U U	
 	
 	
 	
W W W W3 3 3 3R R R RK K K KS S S Sb b b b	C 	C 	C 	C
 
 
 
; ; ; ;
6 6 6 6 6 6rI   r?   func_irr
   r@   rA   rB   	list[str]c                l   g }d}t          | j        | j                  }|t          |          k     r|}|||                  g}|dz   t          |          k     rz||dz            j        ||         j        k    r[|dz  }|                    |||                             |dz   t          |          k     r||dz            j        ||         j        k    [|dz  }|                    d                    d                    |          ||         j                             |t          |          k     |S )Nr   r  z{} :: {}rl   )r   arg_regsblocksr
  rw   r  rM   rt   )r  r@   r  r|   regsi0groups          rG   format_registersr"  \  s    F	A7+W^<<D
c$ii--tBx!!ec$iiDQK$4R$E$EFALLtAw((( !ec$iiDQK$4R$E$E 	
Qj''		%(8(8$r(-HHIII c$ii-- MrI   r  list[BasicBlock]source_to_errordict[ErrorSource, list[str]]c                ^   t          |           D ]\  }}||_        i }| D ]7}|j        r.|                    |j        g                               |           8t          |          }g }t          |           D ]\  }}d}	||v rGt          d ||         D                       }
d                    d                    |
                    }	|                    d|j        |	fz             ||v r#||         D ]}|                    d|            |j	        }t          |d         t                    rV|dz   t          |           k     r@|d         j        | |dz            k    r&|                    |d         g           s
|d	d         }|D ]V}d
|                    |          z   }|                    |           ||v r#||         D ]}|                    d|            Wt          |j	        d         t          t          t           t"          f          s|                    d           |S )z<Format a list of IR basic blocks into a human-readable form.rS   c              3  *   K   | ]}d |j         z  V  dS )zL%dN)rN   )rq   bs     rG   rs   z format_blocks.<locals>.<genexpr>  s(      HHEAGOHHHHHHrI   z (handler for {})rl   zL%d:%sz  ERR: r  N    z    [MISSING BLOCK EXIT OPCODE])	enumeraterN   error_handler
setdefaultr  r?   r   rM   rt   opsr   r    r
  getacceptr   r1   r9   )r  r@   r$  r|   blockhandler_mapr(  visitorlineshandler_msglabelserrorr.  rJ   lines                  rG   format_blocksr9  k  sm    f%%  568K B B? 	B""1?B77>>qAAA"5))GEf%% < <5KHH[5GHHHHHF-44TYYv5F5FGGKXk ::;;;O##(/ 0 0.u..////is2w%%	AF##BA..#''B44 /
 crc(C 	4 	4BBIIg...DLL_$$,R0 4 4ELL!25!2!23333%)B-$)LMM 	<LL:;;;LrI   re   r   errors!Sequence[tuple[ErrorSource, str]]c           
         g }| j         r
| j         dz   nd}|                    d                    || j        d                    d | j        D                                            t          | j        | j                  }t          | |          D ]}|                    d|z              t          t                    }|D ] \  }}||                             |           !t          | j        ||          }	|                    |	           |S )Nr   rS   zdef {}{}({}):rl   c              3  $   K   | ]}|j         V  d S rE   )r   )rq   r   s     rG   rs   zformat_func.<locals>.<genexpr>  s$      =Z=Z3ch=Z=Z=Z=Z=Z=ZrI   r*  )r   r  rM   r   rt   r   generate_names_for_irr  r  r"  r   r	  r9  extend)
r   r:  r4  
cls_prefixr@   r8  r$  sourcer7  codes
             rG   format_funcrC    s   E(*=$$2J	LLz27DII=Z=ZRTRY=Z=Z=Z4Z4Z[[   ""+ry99E U++ $ $Vd]####!$''O . .&&u----E?;;D	LLLrI   modulesr   c                    g }|                                  D ]C}|j        D ]9}|                    t          |                     |                    d           :D|S )NrS   )values	functionsr?  rC  r  )rD  r.  moduler   s       rG   format_modulesrI    sg    
C..""  " 	 	BJJ{2'''JJrNNNN	 JrI   r   list[Register]c                   i }t                      }d}| D ]&}|j        ||<   |                    |j                   '|D ]8}|j        D ],}g }|                                D ]}	|	|vr|                    |	           t          |t          t          f          r|                    |j	                   n6t          |t                    s|j        r||vr|                    |           |D ]}
|
|v rt          |
t                    r|
j        r|
j        }n't          |
t          t          f          rHd|z  }|dz  }||v rd}	 d||fz  }||vr|}n|dz  }|||
<   |                    |           .:|S )zGenerate unique names for IR values.

    Give names such as 'r5' to temp values in IR which are useful when
    pretty-printing or generating C. Ensure generated names are unique.
    r   zr%dr  r  Tz%s_%d)setr   addr.  sourcesr  r   r   r   rh   r   r   r0   r#   r   )r   r  r@   
used_names
temp_indexr   r1  rJ   rF  rA  rX   r   r  	candidates                 rG   r>  r>    s    !EJJ ! !Xc
sx     %% %%) $	% $	%BF**,, * *&&MM&)))"v{344 "bg&&&&B	** "bj "5b!!! % %E>>eX.. $5: $ :DD'788 $ :-D!OJ :%%A$+tQi$7	$J66#,D!Q  $et$$$$-%$	%L LrI   N)r  r
   r@   rA   rB   r  )r  r#  r@   rA   r$  r%  rB   r  )re   )r   r
   r:  r;  rB   r  )rD  r   rB   r  )r   rJ  r  r#  rB   rA   )Lr  
__future__r   collectionsr   typingr   r   r   r   mypyc.commonr	   mypyc.ir.func_irr
   r   mypyc.ir.module_irr   mypyc.ir.opsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   mypyc.ir.rtypesr;   r<   r=   ErrorSourcerK   r?   r"  r9  rC  rI  r>  re   rI   rG   <module>r[     sJ   @ @ " " " " " " # # # # # # . . . . . . . . . . . . # # # # # # 4 4 4 4 4 4 4 4 ( ( ( ( ( (/ / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / / /` I H H H H H H H H HJN#Y Y Y Y Y9S> Y Y Yx   0 0 0 0f    &   6 6 6 6 6 6rI   