
    hiG                       d Z ddlmZ ddlmZ ddlmZ ddl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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dd
lEmFZFmGZGmHZH e
ee4f         ZI G d de5eJ                   ZKd%dZLd&dZMd'd(dZNd)d ZOd*d#ZPd$S )+z:Utilities for pretty-printing IR in a human-readable form.    )annotations)defaultdict)Sequence)AnyFinalUnion)
short_name)FuncIRall_values_full)	ModuleIRs)2	ERR_NEVERAssignAssignMulti
BasicBlockBoxBranchCallCallCCastComparisonOp	ControlOpCStringDecRefExtendFloatFloatComparisonOpFloatNegFloatOpGetAttrGetElementPtrGotoIncRef
InitStaticIntegerIntOp	KeepAliveLoadAddressLoadErrorValue
LoadGlobalLoadLiteralLoadMem
LoadStatic
MethodCallOp	OpVisitorPrimitiveOpRaiseStandardErrorRegisterReturnSetAttr
SetElementSetMemTruncateTupleGetTupleSetUnborrowUnboxUndefUnreachableValue)RTypeis_bool_rprimitiveis_int_rprimitivec                     e Zd ZU dZdbdZdcd
Zej        dej        diZ	de
d<   dddZdedZdfdZdgdZdhdZdidZdjdZdkdZdld Zdmd"Zdnd$Zdod&Zdpd(Zdqd*Zdrd,Zdsd.Zdtd0Zdud2Zdvd4Zdwd6Zdxd8Zdyd:Z dzd<Z!d{d>Z"d|d@Z#d}dBZ$d~dDZ%ddFZ&ddHZ'ddJZ(ddLZ)ddNZ*ddPZ+ddRZ,ddTZ-ddVZ.ddXZ/ddZZ0dd\Z1dd`Z2daS )IRPrettyPrintVisitorz(Internal visitor that pretty-prints ops.namesdict[Value, str]returnNonec                    || _         d S N)rD   )selfrD   s     _/var/www/html/Pagina-Ingenieria-Requisitos/venv/lib/python3.11/site-packages/mypyc/ir/pprint.py__init__zIRPrettyPrintVisitor.__init__H   s     


    opr!   strc                8    |                      d|j                  S )Nzgoto %l)formatlabelrJ   rN   s     rK   
visit_gotozIRPrettyPrintVisitor.visit_gotoN   s    {{9bh///rM   )%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 rW   z (error at %s:%d)zif z goto %lz else goto %l :: )rX   rN   negatedrQ   valuetraceback_entrytruefalse)rJ   rN   fmttypcondtbs         rK   visit_branchz!IRPrettyPrintVisitor.visit_branchS   s    '.S: 	,,C{{3)) 	:$r'99B3D33"333 	 <#<<C{{3222rM   r3   c                8    |                      d|j                  S )Nz	return %r)rQ   r\   rS   s     rK   visit_returnz!IRPrettyPrintVisitor.visit_returna   s    {{;111rM   r=   c                    dS )Nunreachable rS   s     rK   visit_unreachablez&IRPrettyPrintVisitor.visit_unreachabled   s    }rM   r   c                D    |                      d|j        |j                  S )Nz%r = %r)rQ   destsrcrS   s     rK   visit_assignz!IRPrettyPrintVisitor.visit_assigng   s    {{9bgrv666rM   r   c                                           d|j        d                     fd|j        D                                 S )Nz	%r = [%s], c              3  D   K   | ]}                     d |          V  dS rU   NrQ   .0vrJ   s     rK   	<genexpr>z:IRPrettyPrintVisitor.visit_assign_multi.<locals>.<genexpr>k   s2      :`:`TU4;;tQ;O;O:`:`:`:`:`:`rM   )rQ   rl   joinrm   rS   s   ` rK   visit_assign_multiz'IRPrettyPrintVisitor.visit_assign_multij   s@    {{;:`:`:`:`Y[Y_:`:`:`1`1`aaarM   r(   c                :    |                      d||j                  S )Nz%r = <error> :: %s)rQ   typerS   s     rK   visit_load_error_valuez+IRPrettyPrintVisitor.visit_load_error_valuem   s    {{/RW===rM   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 )	NrW   zobject c                ,    g | ]}t          |          S ri   )repr)ru   is     rK   
<listcomp>z;IRPrettyPrintVisitor.visit_load_literal.<locals>.<listcomp>   s    JJJ1tAwwJJJrM   )keyzfrozenset({rp   z})z	%r = %s%s)	
isinstancer\   intr   	frozensetsortedrO   rx   rQ   )rJ   rN   prefixrvalueformatted_itemss        rK   visit_load_literalz'IRPrettyPrintVisitor.visit_load_literalp   s     bh$$ 	Fbhbh	** 	G KJrxS0I0I0IJJJO"TYY%?%??$FF{{;FF;;;rM   r   c                n    |                      d||                     |          |j        |j                  S )Nz%r = %s%r.%s)rQ   borrow_prefixobjattrrS   s     rK   visit_get_attrz#IRPrettyPrintVisitor.visit_get_attr   s.    {{>2t/A/A"/E/ErvrwWWWrM   r.   c                    |j         rdS dS )Nzborrow rW   )is_borrowedrS   s     rK   r   z"IRPrettyPrintVisitor.borrow_prefix   s    > 	9rrM   r4   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   rQ   r   r   rm   rS   s     rK   visit_set_attrz#IRPrettyPrintVisitor.visit_set_attr   sl    : 	.=I----=I%%;;|RVRWbfEEE;;:BFBGRVUWXXXrM   r,   c                    |j         rdt          |j                    dnd}|j        }|j        |j         d| }|                     d|||j        |          S )N  ()rW   .z%r = %s :: %s%s)annr   
identifiermodule_namerQ   	namespace)rJ   rN   r   names       rK   visit_load_staticz&IRPrettyPrintVisitor.visit_load_static   sh    ')v5#DLL####2}>%n--t--D{{,b$cJJJrM   r#   c                z    |j         }|j        |j         d| }|                     d||j        |j                  S )Nr   z%s = %r :: %s)r   r   rQ   r\   r   rJ   rN   r   s      rK   visit_init_staticz&IRPrettyPrintVisitor.visit_init_static   sB    }>%n--t--D{{?D"(BLIIIrM   r8   c                n    |                      d||                     |          |j        |j                  S )Nz%r = %s%r[%d])rQ   r   rm   indexrS   s     rK   visit_tuple_getz$IRPrettyPrintVisitor.visit_tuple_get   s0    {{?B0B0B20F0FPRPXYYYrM   r9   c                ~     d                      fd|j        D                       }                     d||          S )Nrp   c              3  D   K   | ]}                     d |          V  dS rr   rs   )ru   itemrJ   s     rK   rw   z7IRPrettyPrintVisitor.visit_tuple_set.<locals>.<genexpr>   s1      JJT[[t44JJJJJJrM   z	%r = (%s))rx   itemsrQ   )rJ   rN   item_strs   `  rK   visit_tuple_setz$IRPrettyPrintVisitor.visit_tuple_set   sA    99JJJJJJJJJ{{;H555rM   r"   c                    |                      d|j                  }t          |j        j                  st	          |j        j                  r$|dt          |j        j        j                   z  }|S )Nz
inc_ref %rrZ   )rQ   rm   r@   r{   rA   r	   r   rJ   rN   ss      rK   visit_inc_refz"IRPrettyPrintVisitor.visit_inc_ref   sf    KKbf--bfk** 	7.?.L.L 	76
26;#344666ArM   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xrW   rZ   )rQ   is_xdecrm   r@   r{   rA   r	   r   r   s      rK   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rM   r   c                     d                      fd|j        D                       }|j        j        }| d| d}|j        s                     d|          |z   }|S )Nrp   c              3  D   K   | ]}                     d |          V  dS rr   rs   ru   argrJ   s     rK   rw   z2IRPrettyPrintVisitor.visit_call.<locals>.<genexpr>   1      CCCT3//CCCCCCrM   (r   %r = )rx   argsfn	shortnameis_voidrQ   )rJ   rN   r   r	   r   s   `    rK   
visit_callzIRPrettyPrintVisitor.visit_call   sq    yyCCCC27CCCCCU_
##D###z 	-GR((1,ArM   r-   c                     d                      fd|j        D                       }                     d|j        |j        |          }|j        s                     d|          |z   }|S )Nrp   c              3  D   K   | ]}                     d |          V  dS rr   rs   r   s     rK   rw   z9IRPrettyPrintVisitor.visit_method_call.<locals>.<genexpr>   r   rM   z	%r.%s(%s)r   )rx   r   rQ   r   methodr   )rJ   rN   r   r   s   `   rK   visit_method_callz&IRPrettyPrintVisitor.visit_method_call   sm    yyCCCC27CCCCCKKRVRY==z 	-GR((1,ArM   r   c                    |j         rd}nd}|                     d|||                     |          |j        |j                  S )Nz
unchecked rW   z%r = %s%scast(%s, %r))is_uncheckedrQ   r   r{   rm   )rJ   rN   r   s      rK   
visit_castzIRPrettyPrintVisitor.visit_cast   sO    ? 	!FFF{{#R1C1CB1G1GRTRX
 
 	
rM   r   c                P    |                      d||j        j        |j                  S )Nz%r = box(%s, %r))rQ   rm   r{   rS   s     rK   	visit_boxzIRPrettyPrintVisitor.visit_box   s!    {{-r26;GGGrM   r;   c                F    |                      d||j        |j                  S )Nz%r = unbox(%s, %r))rQ   r{   rm   rS   s     rK   visit_unboxz IRPrettyPrintVisitor.visit_unbox   s    {{/RWbfEEErM   r1   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)r\   r   rO   rQ   
class_namer   r>   rS   s     rK   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FF;;BMBBBrM   r   c                     d                      fd|j        D                       }|j        r                     d|j        |          S                      d||j        |          S )Nrp   c              3  D   K   | ]}                     d |          V  dS rr   rs   r   s     rK   rw   z4IRPrettyPrintVisitor.visit_call_c.<locals>.<genexpr>   1      GGT[[s33GGGGGGrM   z%s(%s)z%r = %s(%s))rx   r   r   rQ   function_namerJ   rN   args_strs   `  rK   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MrM   r0   c                     d                      fd|j        D                       }|j        r!                     d|j        j        |          S                      d||j        j        |          S )Nrp   c              3  D   K   | ]}                     d |          V  dS rr   rs   r   s     rK   rw   z:IRPrettyPrintVisitor.visit_primitive_op.<locals>.<genexpr>   r   rM   z%s %sz
%r = %s %s)rx   r   r   rQ   descr   r   s   `  rK   visit_primitive_opz'IRPrettyPrintVisitor.visit_primitive_op   sl    99GGGGrwGGGGG: 	I;;wh???;;|RxHHHrM   r7   c                R    |                      d||j        |j        |j                  S )Nz%r = truncate %r: %t to %t)rQ   rm   src_typer{   rS   s     rK   visit_truncatez#IRPrettyPrintVisitor.visit_truncate   s%    {{7RVR[RTRYZZZrM   r   c                l    |j         rd}nd}|                     d|||j        |j        |j                  S )Nz signedrW   z%r = extend%s %r: %t to %t)signedrQ   rm   r   r{   )rJ   rN   extras      rK   visit_extendz!IRPrettyPrintVisitor.visit_extend   s=    9 	EEE{{7UBFBKY[Y`aaarM   r)   c                ~    |j         rdt          |j                    dnd}|                     d||j        |          S )Nr   r   rW   z%r = load_global %s :: static%s)r   r   rQ   r   )rJ   rN   r   s      rK   visit_load_globalz&IRPrettyPrintVisitor.visit_load_global   sC    ')v5#DLL####2{{<b"-QTUUUrM   r%   c                r    |                      d||j        t          j        |j                 |j                  S Nz%r = %r %s %r)rQ   lhsr%   op_strrN   rhsrS   s     rK   visit_int_opz!IRPrettyPrintVisitor.visit_int_op   s)    {{?BRU8KRVTTTrM   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 :: unsignedrW   z%r = %r %s %r%s)rN   r   SLTSGTSLESGEULTUGTULEUGErQ   r   r   r   )rJ   rN   sign_formats      rK   visit_comparison_opz(IRPrettyPrintVisitor.visit_comparison_op   s    5\%|'79I<K[\\\&KKU|')9<;K\M]^^^(KKK{{r26<+>ru+Erv{
 
 	
rM   r   c                r    |                      d||j        t          j        |j                 |j                  S r   )rQ   r   r   r   rN   r   rS   s     rK   visit_float_opz#IRPrettyPrintVisitor.visit_float_op
  s)    {{?Bru8MrvVVVrM   r   c                :    |                      d||j                  S )Nz%r = -%rrQ   rm   rS   s     rK   visit_float_negz$IRPrettyPrintVisitor.visit_float_neg  s    {{:r26222rM   r   c                h    |                      d||j        |j        |j                 |j                  S r   )rQ   r   r   rN   r   rS   s     rK   visit_float_comparison_opz.IRPrettyPrintVisitor.visit_float_comparison_op  s)    {{?B	"%8H"&QQQrM   r+   c                n    |                      d||                     |          |j        |j                  S )Nz%r = %sload_mem %r :: %t*)rQ   r   rm   r{   rS   s     rK   visit_load_memz#IRPrettyPrintVisitor.visit_load_mem  s5    {{'T-?-?-C-CRVRW
 
 	
rM   r6   c                P    |                      d|j        |j        |j                  S )Nzset_mem %r, %r :: %t*)rQ   rl   rm   	dest_typerS   s     rK   visit_set_memz"IRPrettyPrintVisitor.visit_set_mem  s!    {{2BGRVR\RRRrM   r    c                R    |                      d||j        |j        |j                  S )Nz %r = get_element_ptr %r %s :: %t)rQ   rm   fieldr   rS   s     rK   visit_get_element_ptrz*IRPrettyPrintVisitor.visit_get_element_ptr  s%    {{=r2628UWU`aaarM   r5   c                R    |                      d||j        |j        |j                  S )Nz%r = set_element %r, %s, %r)rQ   rm   r   r   rS   s     rK   visit_set_elementz&IRPrettyPrintVisitor.visit_set_element  s%    {{8"bfbhPRPWXXXrM   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   rm   r2   rQ   r,   r   r   r   r   s      rK   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BrM   r&   c           	          |j         rd}nd}                     d                    |d                     fd|j        D                                           S )Nzsteal rW   zkeep_alive {}{}rp   c              3  D   K   | ]}                     d |          V  dS rr   rs   rt   s     rK   rw   z8IRPrettyPrintVisitor.visit_keep_alive.<locals>.<genexpr>2  s1      5[5[qdkk$6J6J5[5[5[5[5[5[rM   )stealrQ   rx   rm   )rJ   rN   r  s   `  rK   visit_keep_alivez%IRPrettyPrintVisitor.visit_keep_alive,  sg    8 	EEE{{$$UDII5[5[5[5[TVTZ5[5[5[,[,[\\
 
 	
rM   r:   c                :    |                      d||j                  S )Nz%r = unborrow %rr   rS   s     rK   visit_unborrowz#IRPrettyPrintVisitor.visit_unborrow5  s    {{-r26:::rM   r`   r   r   c                   g }d}t          |          }|t          |          k     r|                    d|          }|dk     rt          |          }|                    |||                    |t          |          k     r;||dz            }|                    d          }|dk    r"t          |t                    sJ t          |t                    r)|                    t          |j	                             nt          |t                    r)|                    t          |j	                             n{t          |t                    r |                    d|j	        d           nFt          |t                    r$|                    d|j        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   %   rzCString(r   zundef dz%dfz%flzL%str   zInvalid format sequence %   rW   )listlenfindappendpopr   r>   r$   rO   r\   r   r   r   r<   r{   r   rD   r   rR   r?   
ValueErrorrx   )	rJ   r`   r   resultr   arglistntypespecr   s	            rK   rQ   zIRPrettyPrintVisitor.format:  s    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#C11 7&?&?&?&?@@@@#C// 7&>sx}&>&>????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U #c((llV wwvrM   N)rD   rE   rF   rG   )rN   r!   rF   rO   )rN   r   rF   rO   )rN   r3   rF   rO   )rN   r=   rF   rO   )rN   r   rF   rO   )rN   r   rF   rO   )rN   r(   rF   rO   )rN   r*   rF   rO   )rN   r   rF   rO   )rN   r.   rF   rO   )rN   r4   rF   rO   )rN   r,   rF   rO   )rN   r#   rF   rO   )rN   r8   rF   rO   )rN   r9   rF   rO   )rN   r"   rF   rO   )rN   r   rF   rO   )rN   r   rF   rO   )rN   r-   rF   rO   )rN   r   rF   rO   )rN   r   rF   rO   )rN   r;   rF   rO   )rN   r1   rF   rO   )rN   r   rF   rO   )rN   r0   rF   rO   )rN   r7   rF   rO   )rN   r   rF   rO   )rN   r)   rF   rO   )rN   r%   rF   rO   )rN   r   rF   rO   )rN   r   rF   rO   )rN   r   rF   rO   )rN   r   rF   rO   )rN   r+   rF   rO   )rN   r6   rF   rO   )rN   r    rF   rO   )rN   r5   rF   rO   )rN   r'   rF   rO   )rN   r&   rF   rO   )rN   r:   rF   rO   )r`   rO   r   r   rF   rO   )3__name__
__module____qualname____doc__rL   rT   r   BOOLIS_ERRORrX   __annotations__rd   rf   rj   rn   ry   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  rQ   ri   rM   rK   rC   rC   E   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I I I I[ [ [ [b b b bV V V VU U U U	
 	
 	
 	
W W W W3 3 3 3R R R R
 
 
 

S S S Sb b b bY Y Y Y	C 	C 	C 	C
 
 
 
; ; ; ;
: : : : : :rM   rC   func_irr
   rD   rE   rF   	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{} :: {}rp   )r   arg_regsblocksr  r{   r  rQ   rx   )r&  rD   r  r   regsi0groups          rK   format_registersr.  w  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-- MrM   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.rW   c              3  *   K   | ]}d |j         z  V  dS )zL%dN)rR   )ru   bs     rK   rw   z format_blocks.<locals>.<genexpr>  s(      HHEAGOHHHHHHrM   z (handler for {})rp   zL%d:%sz  ERR: r  N    z    [MISSING BLOCK EXIT OPCODE])	enumeraterR   error_handler
setdefaultr  rC   r   rQ   rx   opsr   r!   r  getacceptr   r3   r=   )r*  rD   r0  r   blockhandler_mapr4  visitorlineshandler_msglabelserrorr:  rN   lines                  rK   format_blocksrE    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:;;;LrM   ri   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   rW   zdef {}{}({}):rp   c              3  $   K   | ]}|j         V  d S rI   )r   )ru   r   s     rK   rw   zformat_func.<locals>.<genexpr>  s$      =Z=Z3ch=Z=Z=Z=Z=Z=ZrM   r6  )r   r  rQ   r   rx   r   generate_names_for_irr)  r*  r.  r   r  rE  extend)
r   rF  r@  
cls_prefixrD   rD  r0  sourcerC  codes
             rK   format_funcrO    s   E(*=$$2J	LLz27DII=Z=ZRTRY=Z=Z=Z4Z4Z[[   ""+ry99E U++ $ $Vd]####!$''O . .&&u----E?;;D	LLLrM   modulesr   c                    g }|                                  D ]C}|j        D ]9}|                    t          |                     |                    d           :D|S )NrW   )values	functionsrK  rO  r  )rP  r:  moduler   s       rK   format_modulesrU    sg    
C..""  " 	 	BJJ{2'''JJrNNNN	 JrM   r   list[Register]c           	         i }t                      }d}| D ]&}|j        ||<   |                    |j                   '|D ]>}|j        D ]2}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          t          f          rNd|z  }|dz  }||v rd}	 d||fz  }||vr|}n|dz  }|||
<   |                    |           4@|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   rl   r   r   r2   r$   r   r<   )r   r*  rD   
used_names
temp_indexr   r=  rN   rR  rM  r\   r   r  	candidates                 rK   rJ  rJ    s    !EJJ ! !Xc
sx     %% %%) $	% $	%BF**,, * *&&MM&)))"v{344 "bg&&&&B	** "bj "5b!!! % %E>>eX.. $5: $ :DD'>?? $ :-D!OJ :%%A$+tQi$7	$J66#,D!Q  $et$$$$-%$	%L LrM   N)r&  r
   rD   rE   rF   r'  )r*  r/  rD   rE   r0  r1  rF   r'  )ri   )r   r
   rF  rG  rF   r'  )rP  r   rF   r'  )r   rV  r*  r/  rF   rE   )Qr"  
__future__r   collectionsr   collections.abcr   typingr   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:   r;   r<   r=   r>   mypyc.ir.rtypesr?   r@   rA   ErrorSourcerO   rC   r.  rE  rO  rU  rJ  ri   rM   rK   <module>rh     s~   @ @ " " " " " " # # # # # # $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ # # # # # # 4 4 4 4 4 4 4 4 ( ( ( ( ( (3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3h I H H H H H H H H HJN#o o o o o9S> o o od	   0 0 0 0f    &   6 6 6 6 6 6rM   