Ë
    pPêjÂ=  ã                  ó˜  — d Z ddlmZ ddlmZ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$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 ddl9m:Z: ddl;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZP  G d„ d«      ZQdd	„ZR G d
„ deS«      ZTdd„ZUdd„ZVeEj®                  eCj®                  eOj®                  eDj®                  eKj®                  eNj®                  ePj®                  eMj®                  h eXe<«      z  ZYdd„ZZdd„Z[dd„Z\ G d„ de)d   «      Z]y)z@Utilities for checking that internal ir is valid and consistent.é    )Úannotations)ÚFUNC_STATICMETHODÚFuncIR)2ÚAssignÚAssignMultiÚ
BaseAssignÚ
BasicBlockÚBoxÚBranchÚCallÚCallCÚCastÚComparisonOpÚ	ControlOpÚDecRefÚExtendÚFloatÚFloatComparisonOpÚFloatNegÚFloatOpÚGetAttrÚ
GetElementÚ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)Úformat_func)ÚKNOWN_NATIVE_TYPESÚRArrayÚ	RInstanceÚ
RPrimitiveÚRTypeÚRUnionÚRVecÚbytes_rprimitiveÚdict_rprimitiveÚint_rprimitiveÚis_c_py_ssize_t_rprimitiveÚis_fixed_width_rtypeÚis_float_rprimitiveÚis_object_rprimitiveÚis_pointer_rprimitiveÚlist_rprimitiveÚpointer_rprimitiveÚrange_rprimitiveÚset_rprimitiveÚstr_rprimitiveÚtuple_rprimitivec                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚFnErrorc                ó    — || _         || _        y ©N©ÚsourceÚdesc©ÚselfrS   rT   s      ú[/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/analysis/ircheck.pyÚ__init__zFnError.__init__U   s   € ØˆŒØˆ�	ó    c                óŽ   — t        |t        «      xr4 | j                  |j                  k(  xr | j                  |j                  k(  S rQ   )Ú
isinstancerO   rS   rT   )rV   Úothers     rW   Ú__eq__zFnError.__eq__Y   s8   € ä�uœgÓ&Òb¨4¯;©;¸%¿,¹,Ñ+FÒbÈ4Ï9É9ÐX]×XbÑXbÑKbð	
rY   c                ó<   — d| j                   › d| j                  › d�S )NzFnError(source=z, desc=ú)rR   )rV   s    rW   Ú__repr__zFnError.__repr__^   s   € Ø  §¡ ¨W°T·Y±Y°K¸qÐAÐArY   N)rS   zOp | BasicBlockrT   ÚstrÚreturnÚNone)r\   Úobjectrb   Úbool)rb   ra   )Ú__name__Ú
__module__Ú__qualname__rX   r]   r`   © rY   rW   rO   rO   T   s   „ óó
ô
BrY   rO   c                ót  — g }t        «       }| j                  D ]¶  }|j                  s7|j                  t	        |j
                  r|j
                  d   n|d¬«      «       |j
                  dd D ]_  }t        |t        «      r|j                  t	        |d¬«      «       ||v r|j                  t	        |d¬«      «       |j                  |«       Œa Œ¸ |j                  t        | «      «       |r|S t        | «      }| j                  D ]$  }|j
                  D ]  }|j                  |«       Œ Œ& |j                  S )zNApplies validations to a given function ir and returns a list of errors found.éÿÿÿÿzBlock not terminatedrR   Nz%Block has operations after control opzFunc has a duplicate op)ÚsetÚblocksÚ
terminatedÚappendrO   Úopsr[   r   ÚaddÚextendÚcheck_op_sources_validÚ	OpCheckerÚacceptÚerrors)Úfnrv   Úop_setÚblockÚopÚ
op_checkers         rW   Úcheck_func_irr|   b   s  € à€Fä‹U€Fà—‘ò ˆØ×ÒØ�M‰MÜ°·	²	˜uŸy™y¨š}¸uÐKaÔbôð —)‘)˜C˜R�.ò 	ˆBÜ˜"œiÔ(Ø—‘œg¨RÐ6]Ô^Ô_à�V‰|Ø—‘œg¨RÐ6OÔPÔQØ�J‰J�r�Nñ	ðð ‡M�MÔ(¨Ó,Ô-ÙØˆä˜2“€JØ—‘ò "ˆØ—)‘)ò 	"ˆBØ�I‰I�jÕ!ñ	"ð"ð ×ÑÐrY   c                  ó   — e Zd Zy)ÚIrCheckExceptionN)rf   rg   rh   ri   rY   rW   r~   r~   �   s   „ ØrY   r~   c                ó¾   — t        | «      }|rKt        ddj                  t        | |D �cg c]  }|j                  |j
                  f‘Œ c}«      «      z   «      ‚y c c}w )Nz'Internal error: Generated invalid IR: 
ú
)r|   r~   Újoinr8   rS   rT   )rw   rv   Úes      rW   Úassert_func_ir_validrƒ   …   s[   € Ü˜2Ó€FÙÜØ6Ø�i‰iœ BÀVÖ(LÀ¨!¯(©(°A·F±FÒ);Ò(LÓMÓNñOó
ð 	
ð ùò )Ms   ©Ac                ó|  — g }t        «       }t        «       }| j                  D ]¡  }|j                  |j                  «       |j                  D ]u  }t	        |t
        «      r|j                  |j                  «       Œ/t	        |t        «      sŒ@t	        |j                  t        «      sŒ[|j                  |j                  «       Œw Œ£ |j                  | j                  «       | j                  D ]Ë  }|j                  D ]º  }|j                  «       D ]¥  }t	        |t        t        t        f«      rŒt	        |t         «      r8||vsŒ4|j#                  t%        |dt'        |«      j(                  › �¬«      «       Œgt	        |t        «      sŒx||vsŒ}|j#                  t%        |d|j*                  ›�¬«      «       Œ§ Œ¼ ŒÍ |S )Nz#Invalid op reference to op of type rR   z!Invalid op reference to register )rl   rm   Úupdaterp   r[   r   rq   Údestr    Úsrcr+   Úarg_regsÚsourcesr   r   r5   r'   ro   rO   Útyperf   Úname)rw   rv   Ú	valid_opsÚvalid_registersry   rz   rS   s          rW   rs   rs   Ž   sx  € Ø€FÜ›€IÜ%(£U€Oà—‘ò ,ˆØ×Ñ˜Ÿ™Ô#à—)‘)ò 	,ˆBÜ˜"œjÔ)Ø×#Ñ# B§G¡GÕ,Ü˜B¤Õ,´¸B¿F¹FÄHÕ1MØ×#Ñ# B§F¡FÕ+ñ		,ð,ð ×Ñ˜2Ÿ;™;Ô'à—‘ò ˆØ—)‘)ò 	ˆBØŸ*™*›,ò �Ü˜f¤w´´uÐ&=Ô>ØÜ ¬Ô+Ø YÒ.ØŸ™Ü#Ø')Ø'JÌ4ÐPVË<×K`ÑK`ÐJaÐ%bôõô   ¬Õ1Ø _Ò4ØŸ™Ü#Ø')Ð2SÐTZ×T_ÑT_ÐSbÐ0côõññ	ðð* €MrY   c                óð  ‡ ‡— t        ‰t        «      rt        ˆ fd„‰j                  D «       «      S t        ‰t        «      r¶t        ‰ t        «      rV‰ j
                  t        v r+‰j
                  t        v r‰ j
                  ‰j
                  k(  S ‰ j                  ‰j                  k(  S t        ‰ t        t        f«      rt        ‰«      S t        ‰ t        «      rt        ˆfd„‰ j                  D «       «      S yy)z]Check if src can be assigned to dest_rtype.

    Currently okay to have false positives.
    c              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wrQ   ©Úcan_coerce_to)Ú.0Údr‡   s     €rW   ú	<genexpr>z can_coerce_to.<locals>.<genexpr>È   s   øè ø€ Ò=¨Q”=  a×(Ñ=ùó   ƒc              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wrQ   r�   )r’   Úsr†   s     €rW   r”   z can_coerce_to.<locals>.<genexpr>Õ   s   øè ø€ ÒA°!”} Q¨×-ÑAùr•   FT)r[   r>   ÚanyÚitemsr<   r‹   Údisjoint_typesÚsizer;   r?   rF   )r‡   r†   s   ``rW   r‘   r‘   Â   s¶   ù€ ô
 �$œÔÜÓ=°$·*±*Ô=Ó=Ð=ä�$œ
Ô#Ü�cœ:Ô&à�x‰xœ>Ñ)¨d¯i©i¼>Ñ.IØ—x‘x 4§9¡9Ñ,Ð,Ø—8‘8˜tŸy™yÑ(Ð(Ü�cœI¤tÐ,Ô-Ü'¨Ó-Ð-Ü�cœ6Ô"ô ÓA°s·y±yÔAÓAÐAØàrY   c                óŽ   — t        | «      st        | «      syt        | t        «      sJ ‚| j                  t
        j                  k(  S )zCCheck if rtype is a valid displacement type for pointer arithmetic.F)rD   rC   r[   r<   r›   rI   )Úrtypes    rW   Úis_valid_ptr_displacement_typerž   Û   s;   € ä  Ô'Ô+EÀeÔ+LØÜ�eœZÔ(Ð(Ð(Ø�:‰:Ô+×0Ñ0Ñ0Ð0rY   c                ó:  — | j                   t        j                  t        j                  fvryt	        | j
                  «      sy| j                  j
                  }| j                  j
                  }t	        |«      rt        |«      S t	        |«      rt        |«      S y)zVCheck if op is add/subtract targeting pointer_rprimitive and integer of the same size.F)	rz   r   ÚADDÚSUBrG   rŠ   ÚlhsÚrhsrž   )rz   ÚleftÚrights      rW   Úis_pointer_arithmeticr¦   ã   sp   € à	‡u�u”U—Y‘Y¤§	¡	Ð*Ñ*ØÜ  §¡Ô)ØØ�6‰6�;‰;€DØ�F‰F�K‰K€EÜ˜TÔ"Ü-¨eÓ4Ð4Ü˜UÔ#Ü-¨dÓ3Ð3ØrY   c                  óœ  — e Zd Zd4d„Zd5d„Zd6d„Zd7d„Zd8d„Zd9d„Zd9d„Z	d9d„Z
d:d	„Zd;d
„Zd<d„Zd=d„Zd>d„Zd?d„Z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 dPd„Z!dQd „Z"dRd!„Z#dSd"„Z$dTd#„Z%dUd$„Z&dVd%„Z'dWd&„Z(dXd'„Z)dYd(„Z*dZd)„Z+d[d*„Z,d\d+„Z-d]d,„Z.d^d-„Z/d_d.„Z0d`d/„Z1dad0„Z2dbd1„Z3dcd2„Z4y3)drt   c                ó    — || _         g | _        y rQ   )Ú	parent_fnrv   )rV   r©   s     rW   rX   zOpChecker.__init__ó   s   € Ø"ˆŒØ%'ˆ�rY   c                óP   — | j                   j                  t        ||¬«      «       y )NrR   )rv   ro   rO   rU   s      rW   ÚfailzOpChecker.fail÷   s   € Ø�‰×Ñœ7¨&°tÔ<Õ=rY   c                ó    — |j                  «       D ];  }|| j                  j                  vsŒ| j                  |d|j                  › �¬«       Œ= y )Nz"Invalid control operation target: rR   )Útargetsr©   rm   r«   Úlabel)rV   rz   Útargets      rW   Úcheck_control_op_targetsz"OpChecker.check_control_op_targetsú   sG   € Ø—j‘j“lò 	_ˆFØ˜TŸ^™^×2Ñ2Ò2Ø—	‘	 Ð,NÈvÏ|É|ÈnÐ*]�	Õ^ñ	_rY   c                óx   — t        ||«      s.| j                  |d|j                  › d|j                  › �¬«       y y )NzCannot coerce source type z to dest type rR   ©r‘   r«   r‹   )rV   rz   r‡   r†   s       rW   Úcheck_type_coercionzOpChecker.check_type_coercionÿ   sA   € Ü˜S $Ô'Ø�I‰IØÐ"<¸S¿X¹X¸JÀnÐUY×U^ÑU^ÐT_Ð `ð õ ð (rY   c                ó�   — t        ||«      rt        ||«      s.| j                  ||j                  › d|j                  › d�¬«       y y )Nz and z are not compatiblerR   r²   )rV   rz   Útr—   s       rW   Úcheck_compatibilityzOpChecker.check_compatibility  s@   € Ü˜Q Ô"¬-¸¸1Ô*=Ø�I‰I˜R¨¯©¨°°a·f±f°XÐ=PÐ&QˆIÕRð +>rY   c                óp   — t        |j                  «      s!| j                  |d|j                  › d�«       y y )NzFloat expected (actual type is r_   ©rE   rŠ   r«   ©rV   rz   Úvs      rW   Úexpect_floatzOpChecker.expect_float	  s/   € Ü" 1§6¡6Ô*Ø�I‰I�bÐ;¸A¿F¹F¸8À1ÐEÕFð +rY   c                óT   — t        |j                  «      r| j                  |d«       y y )NzFloat not expectedr¸   r¹   s      rW   Úexpect_non_floatzOpChecker.expect_non_float  s"   € Ü˜qŸv™vÔ&Ø�I‰I�bÐ.Õ/ð 'rY   c                óž   — t        |j                  t        «      s3| j                  |dt        |j                  «      j                  › �«       y y )NzRPrimitive expected, got )r[   rŠ   r<   r«   rf   r¹   s      rW   Úexpect_primitive_typezOpChecker.expect_primitive_type  s:   € Ü˜!Ÿ&™&¤*Ô-Ø�I‰I�bÐ5´d¸1¿6¹6³l×6KÑ6KÐ5LÐMÕNð .rY   c                ó&   — | j                  |«       y rQ   ©r°   ©rV   rz   s     rW   Ú
visit_gotozOpChecker.visit_goto  ó   € Ø×%Ñ% bÕ)rY   c                ó&   — | j                  |«       y rQ   rÁ   rÂ   s     rW   Úvisit_branchzOpChecker.visit_branch  rÄ   rY   c                ó¢   — | j                  ||j                  j                  | j                  j                  j
                  j                  «       y rQ   )r³   ÚvaluerŠ   r©   ÚdeclÚsigÚret_typerÂ   s     rW   Úvisit_returnzOpChecker.visit_return  s2   € Ø× Ñ   R§X¡X§]¡]°D·N±N×4GÑ4G×4KÑ4K×4TÑ4TÕUrY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_unreachablezOpChecker.visit_unreachable  s   € ð 	rY   c                óz   — | j                  ||j                  j                  |j                  j                  «       y rQ   )r³   r‡   rŠ   r†   rÂ   s     rW   Úvisit_assignzOpChecker.visit_assign#  s$   € Ø× Ñ   R§V¡V§[¡[°"·'±'·,±,Õ?rY   c                óè   — |j                   D ]c  }t        |j                  j                  t        «      sJ ‚| j                  ||j                  |j                  j                  j                  «       Œe y rQ   )r‡   r[   r†   rŠ   r:   r³   Ú	item_type)rV   rz   r‡   s      rW   Úvisit_assign_multizOpChecker.visit_assign_multi&  sS   € Ø—6‘6ò 	KˆCÜ˜bŸg™gŸl™l¬FÔ3Ð3Ð3Ø×$Ñ$ R¨¯©°2·7±7·<±<×3IÑ3IÕJñ	KrY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_load_error_valuez OpChecker.visit_load_error_value+  s   € ð 	rY   c                óø   — |D ]u  }|�Nt        |t        t        t        t        t
        t        t        f«      s| j                  |dt        |«      › d�«       t        |t        «      sŒd| j                  ||«       Œw y )Nz(Invalid type for item of tuple literal: r_   )r[   ra   Úbytesre   ÚintÚfloatÚcomplexÚtupler«   rŠ   Ú check_tuple_items_valid_literals)rV   rz   rµ   Úxs       rW   rÜ   z*OpChecker.check_tuple_items_valid_literals1  sg   € Øò 	=ˆAØˆ}¤Z°´C¼ÄÄcÌ5ÔRYÔ[`Ð3aÔ%bØ—	‘	˜"Ð HÌÈaËÈ	ÐQRÐSÔTÜ˜!œUÕ#Ø×5Ñ5°b¸!Õ<ñ		=rY   c           
     óð   — |D ]q  }|�*t        |t        t        t        t        t
        t        f«      rŒ0t        |t        «      r| j                  ||«       ŒS| j                  |dt        |«      › d�«       Œs y )Nz,Invalid type for item of frozenset literal: r_   )r[   ra   r×   re   rØ   rÙ   rÚ   rÛ   rÜ   r«   rŠ   )rV   rz   r—   rÝ   s       rW   Ú$check_frozenset_items_valid_literalsz.OpChecker.check_frozenset_items_valid_literals8  si   € Øò 	YˆAØˆyœJ q¬3´´t¼SÄ%ÌÐ*QÔRØÜ˜AœuÔ%Ø×5Ñ5°b¸!Õ<à—	‘	˜"Ð LÌTÐRSËWÈIÐUVÐWÕXñ	YrY   c                óÌ  — d }|j                   €d}�nt        |j                   t        «      rd}nåt        |j                   t        «      rd}nÈt        |j                   t        «      rd}n«t        |j                   t
        «      rd}nŽt        |j                   t        «      rd}nqt        |j                   t        «      rd}| j                  ||j                   «       n8t        |j                   t        «      rd}| j                  ||j                   «       |€J d«       ‚|j                  j                  |dfvr-| j                  |d	|› d
|j                  j                  › �«       y y )Nzbuiltins.objectzbuiltins.intzbuiltins.strzbuiltins.byteszbuiltins.floatzbuiltins.tuplezbuiltins.setz#Missed a case for LoadLiteral checkz/Invalid literal value for type: value has type z, but op has type )rÈ   r[   rØ   ra   r×   rÙ   rÚ   rÛ   rÜ   Ú	frozensetrß   rŠ   r‹   r«   )rV   rz   Úexpected_types      rW   Úvisit_load_literalzOpChecker.visit_load_literalA  s!  € ØˆØ�8‰8ÐØ-ŠMÜ˜Ÿ™¤#Ô&Ø*‰MÜ˜Ÿ™¤#Ô&Ø*‰MÜ˜Ÿ™¤%Ô(Ø,‰MÜ˜Ÿ™¤%Ô(Ø,‰MÜ˜Ÿ™¤'Ô*Ø-‰MÜ˜Ÿ™¤%Ô(Ø,ˆMØ×1Ñ1°"°b·h±hÕ?Ü˜Ÿ™¤)Ô,ð +ˆMØ×5Ñ5°b¸"¿(¹(ÔCàÐ(ÐOÐ*OÓOÐ(à�7‰7�<‰< Ð/@ÐAÑAØ�I‰IØðØ%�Ð&8¸¿¹¿¹¸ðHõð BrY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_get_attrzOpChecker.visit_get_attra  ó   € àrY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_set_attrzOpChecker.visit_set_attre  ræ   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_load_staticzOpChecker.visit_load_staticj  ó   € ØrY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_init_staticzOpChecker.visit_init_staticm  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_tuple_getzOpChecker.visit_tuple_getp  ræ   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_tuple_setzOpChecker.visit_tuple_sett  ræ   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_inc_refzOpChecker.visit_inc_refx  ræ   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_dec_refzOpChecker.visit_dec_ref|  ræ   rY   c                óÊ   — t        |j                  |j                  j                  j                  «      D ],  \  }}| j	                  ||j
                  |j
                  «       Œ. y rQ   )ÚzipÚargsrw   rÊ   r³   rŠ   )rV   rz   Ú	arg_valueÚarg_runtimes       rW   Ú
visit_callzOpChecker.visit_call€  sM   € ô '*¨"¯'©'°2·5±5·9±9·>±>Ó&Bò 	KÑ"ˆI�{Ø×$Ñ$ R¨¯©¸×9IÑ9IÕJñ	KrY   c                óÞ  — |j                   j                  j                  |j                  «      }|j                  t
        k(  rd}nd}t        |j                  «      |z   t        |j                  j                  «      k7  r| j                  |d«       t        |j                  |j                  j                  |d  «      D ],  \  }}| j                  ||j                  |j                  «       Œ. y )Nr   é   z)Incorrect number of args for method call.)Úreceiver_typeÚclass_irÚmethod_declÚmethodÚkindr   Úlenrø   rÊ   r«   r÷   r³   rŠ   )rV   rz   r   Ú
decl_indexrù   rú   s         rW   Úvisit_method_callzOpChecker.visit_method_call†  s¾   € à×&Ñ&×/Ñ/×;Ñ;¸B¿I¹IÓFˆØ×ÑÔ0Ò0Ø‰JàˆJäˆr�w‰w‹<˜*Ñ$¬¨K¯O©O×,@Ñ,@Ó(AÒAØ�I‰I�bÐEÔFô '*¨"¯'©'°;·?±?×3GÑ3GÈ
ÈÐ3TÓ&Uò 	KÑ"ˆI�{Ø×$Ñ$ R¨¯©¸×9IÑ9IÕJñ	KrY   c                 ó   — y rQ   ri   rÂ   s     rW   Ú
visit_castzOpChecker.visit_cast•  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Ú	visit_boxzOpChecker.visit_box˜  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_unboxzOpChecker.visit_unbox›  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_raise_standard_errorz$OpChecker.visit_raise_standard_errorž  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_call_czOpChecker.visit_call_c¡  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_primitive_opzOpChecker.visit_primitive_op¤  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_truncatezOpChecker.visit_truncate§  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_extendzOpChecker.visit_extendª  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_load_globalzOpChecker.visit_load_global­  rë   rY   c                ót  — | j                  ||j                  «       | j                  ||j                  «       | j                  ||j                  «       | j                  ||j                  «       |j                  j                  }|j                  j                  }|j
                  |j                     }t        |t        «      rst        |t        «      rb|j                  |j                  k7  rH|dv s|dvr?|j                  |j                  k7  r%t        |«      s| j                  |d|› d|› �«       y y y y y y y )N)ú+ú-Ú*ú/ú%)z<<z>>ú'Operand types have incompatible signs: ú, )r¿   r¢   r£   r½   rŠ   Úop_strrz   r[   r<   Ú	is_signedr›   r¦   r«   )rV   rz   r¤   r¥   r   s        rW   Úvisit_int_opzOpChecker.visit_int_op°  s  € Ø×"Ñ" 2 r§v¡vÔ.Ø×"Ñ" 2 r§v¡vÔ.Ø×Ñ˜b "§&¡&Ô)Ø×Ñ˜b "§&¡&Ô)Ø�v‰v�{‰{ˆØ—‘—‘ˆØ—‘˜2Ÿ5™5Ñ!ˆä�tœZÔ(Ü˜5¤*Ô-Ø—‘ %§/¡/Ò1àÐ3Ñ3Ø ,Ñ.°4·9±9ÀÇ
Á
Ò3Jä)¨"Ô-à�I‰I�bÐCÀDÀ6ÈÈEÈ7ÐSÕTð .ð 4KÐ.ð 2ð .ð )rY   c                óê  — | j                  ||j                  j                  |j                  j                  «       | j	                  ||j                  «       | j	                  ||j                  «       |j                  j                  }|j                  j                  }t        |t        «      rDt        |t        «      r3|j                  |j                  k7  r| j                  |d|› d|› �«       y y y y )Nr  r  )	r¶   r¢   rŠ   r£   r½   r[   r<   r!  r«   )rV   rz   r¤   r¥   s       rW   Úvisit_comparison_opzOpChecker.visit_comparison_opÄ  sµ   € Ø× Ñ   R§V¡V§[¡[°"·&±&·+±+Ô>Ø×Ñ˜b "§&¡&Ô)Ø×Ñ˜b "§&¡&Ô)Ø�v‰v�{‰{ˆØ—‘—‘ˆä�tœZÔ(Ü˜5¤*Ô-Ø—‘ %§/¡/Ò1à�I‰I�bÐCÀDÀ6ÈÈEÈ7ÐSÕTð 2ð .ð )rY   c                ót   — | j                  ||j                  «       | j                  ||j                  «       y rQ   ©r»   r¢   r£   rÂ   s     rW   Úvisit_float_opzOpChecker.visit_float_opÑ  ó*   € Ø×Ñ˜"˜bŸf™fÔ%Ø×Ñ˜"˜bŸf™fÕ%rY   c                ó<   — | j                  ||j                  «       y rQ   )r»   r‡   rÂ   s     rW   Úvisit_float_negzOpChecker.visit_float_negÕ  s   € Ø×Ñ˜"˜bŸf™fÕ%rY   c                ót   — | j                  ||j                  «       | j                  ||j                  «       y rQ   r&  rÂ   s     rW   Úvisit_float_comparison_opz#OpChecker.visit_float_comparison_opØ  r(  rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_load_memzOpChecker.visit_load_memÜ  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_set_memzOpChecker.visit_set_memß  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_get_elementzOpChecker.visit_get_elementâ  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_get_element_ptrzOpChecker.visit_get_element_ptrå  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_set_elementzOpChecker.visit_set_elementè  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_load_addresszOpChecker.visit_load_addressë  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_keep_alivezOpChecker.visit_keep_aliveî  rë   rY   c                 ó   — y rQ   ri   rÂ   s     rW   Úvisit_unborrowzOpChecker.visit_unborrowñ  rë   rY   N)r©   r   rb   rc   )rS   r'   rT   ra   rb   rc   )rz   r   rb   rc   )rz   r'   r‡   r=   r†   r=   rb   rc   )rz   r'   rµ   r=   r—   r=   rb   rc   )rz   r'   rº   r7   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r,   rb   rc   )rz   r6   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r!   rb   rc   )rz   r#   rµ   ztuple[object, ...]rb   rc   )rz   r#   r—   zfrozenset[object]rb   rc   )rz   r#   rb   rc   )rz   r   rb   rc   )rz   r-   rb   rc   )rz   r%   rb   rc   )rz   r   rb   rc   )rz   r1   rb   rc   )rz   r2   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r&   rb   rc   )rz   r   rb   rc   )rz   r
   rb   rc   )rz   r4   rb   rc   )rz   r*   rb   rc   )rz   r   rb   rc   )rz   r)   rb   rc   )rz   r0   rb   rc   )rz   r   rb   rc   )rz   r"   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r$   rb   rc   )rz   r/   rb   rc   )rz   r   rb   rc   )rz   r   rb   rc   )rz   r.   rb   rc   )rz   r    rb   rc   )rz   r   rb   rc   )rz   r3   rb   rc   )5rf   rg   rh   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  r  r  r  r  r  r"  r$  r'  r*  r,  r.  r0  r2  r4  r6  r8  r:  r<  ri   rY   rW   rt   rt   ò   s	  „ ó(ó>ó_ó
óSóGó0óOó*ó*óVóó
@óKó
ó=óYóó@óó
óóóóóóKóKóóóóóóóóóóUó(Uó&ó&ó&óóóóóóóôrY   rt   N)rw   r   rb   zlist[FnError])rw   r   rb   rc   )r‡   r=   r†   r=   rb   re   )r�   r=   rb   re   )rz   r   rb   re   )^Ú__doc__Ú
__future__r   Úmypyc.ir.func_irr   r   Ú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(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   Úmypyc.ir.pprintr8   Úmypyc.ir.rtypesr9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rO   r|   Ú	Exceptionr~   rƒ   rs   r‹   rl   rš   r‘   rž   r¦   rt   ri   rY   rW   ú<module>rD     s  ðÙ Få "ç 6÷3÷ 3÷ 3÷ 3÷ 3÷ 3÷ 3÷ 3÷ 3÷ 3÷ 3÷ 3÷ 3õh (÷÷ ÷ ÷ ÷ õ ÷2Bñ Bóô>	�yô 	ó
ó%ðR ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×ÑØ×Ñð	ñ ÐÓñ	€óó21óô@�	˜$‘õ @rY   