Ë
    pPêj|   ã                  ó4  — d dl mZ d dlZd dlmZ d dlmZmZ d dlm	Z	m
Z
 d dlmZmZmZ d dlmZ d dlmZmZ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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7 d d
l8m9Z9 d dl:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZN d dlOmPZP d dlQmRZR d dlSmTZTmUZUmVZVmWZW d dlXmYZY d dlZm[Z[m\Z\m]Z] d dl^m_Z_ d dl`maZa d dlbmcZc  G d„ dejÈ                  «      Ze G d„ dejÈ                  «      Zfy)é    )ÚannotationsN)Úassert_string_arrays_equal)ÚEmitterÚEmitterContext)ÚFunctionEmitterVisitorÚgenerate_native_function)ÚHAVE_IMMORTALÚIS_FREE_THREADEDÚPLATFORM_SIZE)ÚClassIR)ÚFuncDeclÚFuncIRÚFuncSignatureÚ
RuntimeArg)!Ú	ERR_NEVERÚAssignÚAssignMultiÚ
BasicBlockÚBoxÚBranchÚCallÚCallCÚCastÚComparisonOpÚCStringÚDecRefÚExtendÚGetAttrÚGetElementPtrÚGotoÚIncRefÚIntegerÚIntOpÚLoadAddressÚLoadLiteralÚLoadMemÚOpÚRegisterÚReturnÚSetAttrÚ
SetElementÚSetMemÚTupleGetÚUnboxÚUndefÚUnreachableÚValue)Úgenerate_names_for_ir)ÚRArrayÚ	RInstanceÚRStructÚRTupleÚRTypeÚRUnionÚRVecÚbool_rprimitiveÚc_int_rprimitiveÚcstring_rprimitiveÚdict_rprimitiveÚint32_rprimitiveÚint64_rprimitiveÚint_rprimitiveÚlist_rprimitiveÚnone_rprimitiveÚobject_rprimitiveÚpointer_rprimitiveÚshort_int_rprimitiveÚstr_rprimitive)Úcompute_vtable)ÚNameGenerator)Údict_get_item_opÚdict_new_opÚdict_set_item_opÚdict_update_op)Ú
int_neg_op)Úlist_append_opÚlist_get_item_opÚlist_set_item_op)Únone_object_op)Ú
binary_ops)Ú
is_subtypec                  ó   — e Zd ZdZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„Z	dQd„Z
dQd	„ZdQd
„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„ZdQd„Z dQd„Z!dQd „Z"dQd!„Z#dQd"„Z$dQd#„Z%dQd$„Z&dQd%„Z'dQd&„Z( e)jT                  e+d'«      dQd(„«       Z,dQd)„Z-dQd*„Z.dQd+„Z/dQd,„Z0 e)jT                  e+d'«      dQd-„«       Z1dQd.„Z2dQd/„Z3dQd0„Z4dQd1„Z5dQd2„Z6dQd3„Z7dQd4„Z8dQd5„Z9dQd6„Z:dQd7„Z;dQd8„Z<dQd9„Z=dQd:„Z>dQd;„Z?dQd<„Z@dQd=„ZAdQd>„ZBdQd?„ZCdQd@„ZDdQdA„ZEdQdB„ZFdQdC„ZGdQdD„ZHdQdE„ZIdQdF„ZJdQdG„ZKdQdH„ZLdQdI„ZMdQdJ„ZNdQdK„ZO	 dRdMdLdMdNœ	 	 	 	 	 	 	 	 	 	 	 	 	 dSdO„ZP	 	 	 	 	 	 	 	 	 	 	 	 dTdP„ZQyL)UÚTestFunctionEmitterVisitorz9Test generation of fragments of C from individual IR ops.c           	     óú  ‡ — g ‰ _         d#ˆ fd„} |dt        «      ‰ _         |dt        «      ‰ _         |dt        «      ‰ _         |dt
        «      ‰ _         |dt
        «      ‰ _         |dt        «      ‰ _	         |dt        «      ‰ _
         |d	t        «      ‰ _         |d
t        «      ‰ _         |dt        «      ‰ _         |dt        «      ‰ _         |dt$        «      ‰ _         |dt$        «      ‰ _         |dt*        «      ‰ _         |dt*        «      ‰ _         |dt0        «      ‰ _         |dt5        t        t        g«      «      ‰ _         |dt5        t5        t        t        g«      t        g«      «      ‰ _         |dt;        t*        «      «      ‰ _         |dt;        t$        «      «      ‰ _         |dt;        t@        «      «      ‰ _!         |dt;        tE        t@        tF        g«      «      «      ‰ _$         |dt;        t;        t@        «      «      «      ‰ _%        tM        dd«      }t        t        t        t*        t$        t5        t        t        g«      dœ|_'        ddg|_(        tS        |«       |g|_*         |dtW        |«      «      ‰ _,         |dtF        «      ‰ _-        t]        dg d ¢t        t$        t*        g«      ‰ _/         |d!‰ j^                  «      ‰ _0        tc        te        dgg«      d"«      ‰ _3        y )$Nc                óV   •— t        || «      }‰j                  j                  |«       |S ©N)r(   Ú	registersÚappend)ÚnameÚrtypeÚregÚselfs      €ú]/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/test/test_emitfunc.pyÚ	add_localz3TestFunctionEmitterVisitor.setUp.<locals>.add_localZ   s&   ø€ Ü˜5 $Ó'ˆCØ�N‰N×!Ñ! #Ô&ØˆJó    ÚnÚmÚkÚlÚllÚoÚo2ÚdÚbÚs1Ús2Úi32Úi32_1Úi64Úi64_1ÚptrÚtÚttÚvi64Úvi32ÚvsÚvvsÚAÚmod)ÚxÚyrg   Úi1Úi2rr   r|   r}   ÚrÚnoneÚFoo)rj   rz   r{   ÚstT)r[   Ústrr\   r7   Úreturnr(   )4rY   r@   rb   rc   rd   rA   re   rf   rC   rg   rh   r=   ri   r:   rj   rE   rk   rl   r>   rm   rn   r?   ro   rp   rD   rq   r6   rr   rs   r9   rt   ru   rF   rv   r8   rB   Úvs_optrw   r   Ú
attributesÚbitmap_attrsrG   Úmror4   r~   r   r5   Ústruct_typer�   r   rH   Úcontext)r^   r`   Úirs   `  r_   ÚsetUpz TestFunctionEmitterVisitor.setUpW   sd  ø€ Ø)+ˆŒõ	ñ
 ˜3¤Ó/ˆŒÙ˜3¤Ó/ˆŒÙ˜3¤Ó/ˆŒÙ˜3¤Ó0ˆŒÙ˜D¤/Ó2ˆŒÙ˜3Ô 1Ó2ˆŒÙ˜DÔ"3Ó4ˆŒÙ˜3¤Ó0ˆŒÙ˜3¤Ó0ˆŒÙ˜DÔ"6Ó7ˆŒÙ˜DÔ"6Ó7ˆŒÙ˜UÔ$4Ó5ˆŒÙ˜wÔ(8Ó9ˆŒ
Ù˜UÔ$4Ó5ˆŒÙ˜wÔ(8Ó9ˆŒ
Ù˜UÔ$6Ó7ˆŒÙ˜3¤¬¼Ð'HÓ IÓJˆŒÙØ”&œ&¤.´/Ð!BÓCÄ_ÐUÓVó
ˆŒñ ˜f¤dÔ+;Ó&<Ó=ˆŒ	Ù˜f¤dÔ+;Ó&<Ó=ˆŒ	Ù˜D¤$¤~Ó"6Ó7ˆŒÙ ¤d¬6´>Ä?Ð2SÓ+TÓ&UÓVˆŒÙ˜U¤D¬¬nÓ)=Ó$>Ó?ˆŒÜ�S˜%Ó ˆä ÜÜ"Ü"Ü"ÜÔ*Ô,=Ð>Ó?ñ
ˆŒð   ˜,ˆŒÜ�rÔØ�ˆŒÙ˜3¤	¨"£Ó.ˆŒÙ˜f¤oÓ6ˆŒ	ä"Ø’?¤_Ô6FÔHXÐ$Yó
ˆÔñ ˜D $×"2Ñ"2Ó3ˆŒä%¤m°e°W°IÓ&>ÀÓEˆ�ra   c                óL   — | j                  t        t        d«      «      d«       y )Né   zgoto CPyL2;)Úassert_emitr    r   ©r^   s    r_   Ú	test_gotoz$TestFunctionEmitterVisitor.test_gotoŽ   s   € Ø×Ñœœj¨›mÓ,¨mÕ<ra   c                óT   — t        d«      }| j                  t        |«      d|¬«       y )Nr�   Ú ©Ú
next_block)r   rŽ   r    )r^   r”   s     r_   Útest_goto_next_blockz/TestFunctionEmitterVisitor.test_goto_next_block‘   s%   € Ü “]ˆ
Ø×Ñœ˜jÓ)¨2¸*ÐÕEra   c                óN   — | j                  t        | j                  «      d«       y )Nzreturn cpy_r_m;)rŽ   r)   rc   r�   s    r_   Útest_returnz&TestFunctionEmitterVisitor.test_return•   s   € Ø×Ñœ §¡›Ð):Õ;ra   c           	     óÊ   — | j                  t        | j                  t        d«      «      d«       | j                  t        | j                  t        dt
        «      «      d«       y )Né   zcpy_r_n = 10;zcpy_r_i32 = 5;)rŽ   r   rb   r"   rm   r;   r�   s    r_   Útest_integerz'TestFunctionEmitterVisitor.test_integer˜   sE   € Ø×Ñœ §¡¬°«
Ó3°_ÔEØ×Ñœ §¡¬'°!Ô5EÓ*FÓGÐIYÕZra   c                óR   — | j                  t        | j                  dd«      d«       y )Né   r   zcpy_r_r0 = cpy_r_t.f1;)rŽ   r-   rr   r�   s    r_   Útest_tuple_getz)TestFunctionEmitterVisitor.test_tuple_getœ   s    € Ø×Ñœ $§&¡&¨!¨QÓ/Ð1IÕJra   c                óv   — | j                  t        t        j                  t        j                  d«      d«       y )Nr   z'cpy_r_r0 = (PyObject *)&_Py_NoneStruct;)rŽ   r$   rQ   ÚtypeÚsrcr�   s    r_   Útest_load_Nonez)TestFunctionEmitterVisitor.test_load_NoneŸ   s+   € Ø×ÑÜœ×+Ñ+¬^×-?Ñ-?ÀÓCØ5õ	
ra   c                ód   — | j                  t        | j                  | j                  «      d«       y )Nzcpy_r_m = cpy_r_n;)rŽ   r   rc   rb   r�   s    r_   Útest_assign_intz*TestFunctionEmitterVisitor.test_assign_int¥   s"   € Ø×Ñœ §¡¨¯©Ó/Ð1EÕFra   c                ój   — | j                  d| j                  | j                  | j                  d«       y )Nú+z+cpy_r_r0 = CPyTagged_Add(cpy_r_m, cpy_r_k);©Úassert_emit_binary_oprb   rc   rd   r�   s    r_   Útest_int_addz'TestFunctionEmitterVisitor.test_int_add¨   s(   € Ø×"Ñ"Ø�—‘˜Ÿ™ §¡Ð)Võ	
ra   c                ój   — | j                  d| j                  | j                  | j                  d«       y )Nú-z0cpy_r_r0 = CPyTagged_Subtract(cpy_r_m, cpy_r_k);r¦   r�   s    r_   Útest_int_subz'TestFunctionEmitterVisitor.test_int_sub­   s(   € Ø×"Ñ"Ø�—‘˜Ÿ™ §¡Ð)[õ	
ra   c                ó*  — t         j                  €J ‚| j                  t        t         j                  | j                  gt         j
                  t         j                  t         j                  t         j                  t         j                  d«      d«       y )Né7   z%cpy_r_r0 = CPyTagged_Negate(cpy_r_m);)	rM   Úc_function_namerŽ   r   rc   Úreturn_typeÚstealsÚis_borrowedÚ
error_kindr�   s    r_   Útest_int_negz'TestFunctionEmitterVisitor.test_int_neg²   sq   € Ü×)Ñ)Ð5Ð5Ð5Ø×ÑÜÜ×*Ñ*Ø—‘�Ü×&Ñ&Ü×!Ñ!Ü×&Ñ&Ü×&Ñ&Ü×%Ñ%Øó	ð 4õ	
ra   c           	     ó6  — | j                  t        | j                  t        d«      t        d«      t        j                  «      d«       t        | j                  t        d«      t        d«      t        j                  «      }d|_        | j                  |d«       y )Né   é	   z£if (cpy_r_b) {
                                goto CPyL8;
                            } else
                                goto CPyL9;
                         Tz¤if (!cpy_r_b) {
                                goto CPyL8;
                            } else
                                goto CPyL9;
                         ©rŽ   r   rj   r   ÚBOOLÚnegated©r^   rj   s     r_   Útest_branchz&TestFunctionEmitterVisitor.test_branchÂ   sr   € Ø×ÑÜ�4—6‘6œ: a›=¬*°Q«-¼¿¹ÓEðô	
ô �4—6‘6œ: a›=¬*°Q«-¼¿¹ÓEˆØˆŒ	Ø×ÑØðõ	
ra   c                óJ  — t        d«      }t        | j                  t        d«      |t        j                  «      }| j	                  |d|¬«       t        d«      }t        | j                  t        d«      |t        j                  «      }d|_        | j	                  |d|¬«       y )Nr¶   rµ   zif (cpy_r_b) goto CPyL8;r“   Tzif (!cpy_r_b) goto CPyL8;©r   r   rj   r¸   rŽ   r¹   ©r^   r”   rj   s      r_   Útest_branch_no_elsez.TestFunctionEmitterVisitor.test_branch_no_elseÖ   s   € Ü “]ˆ
Ü�4—6‘6œ: a›=¨*´f·k±kÓBˆØ×Ñ˜Ð:ÀzÐÔRÜ “]ˆ
Ü�4—6‘6œ: a›=¨*´f·k±kÓBˆØˆŒ	Ø×Ñ˜Ð;È
ÐÕSra   c                óJ  — t        d«      }t        | j                  |t        d«      t        j                  «      }| j	                  |d|¬«       t        d«      }t        | j                  |t        d«      t        j                  «      }d|_        | j	                  |d|¬«       y )Nrœ   r�   zif (!cpy_r_b) goto CPyL2;r“   Tzif (cpy_r_b) goto CPyL2;r½   r¾   s      r_   Útest_branch_no_else_negatedz6TestFunctionEmitterVisitor.test_branch_no_else_negatedß   s   € Ü “]ˆ
Ü�4—6‘6˜:¤z°!£}´f·k±kÓBˆØ×Ñ˜Ð;È
ÐÔSÜ “]ˆ
Ü�4—6‘6˜:¤z°!£}´f·k±kÓBˆØˆŒ	Ø×Ñ˜Ð:ÀzÐÕRra   c                ó:  — t        | j                  t        d«      t        d«      t         j                  «      }| j	                  |d«       t        | j                  t        d«      t        d«      t         j                  «      }d|_        | j	                  |d«       y )Nrµ   r¶   z¨if (cpy_r_b == 2) {
                                goto CPyL8;
                            } else
                                goto CPyL9;
                         Tz¨if (cpy_r_b != 2) {
                                goto CPyL8;
                            } else
                                goto CPyL9;
                         )r   rj   r   ÚIS_ERRORrŽ   r¹   rº   s     r_   Útest_branch_is_errorz/TestFunctionEmitterVisitor.test_branch_is_errorè   sw   € Ü�4—6‘6œ: a›=¬*°Q«-¼¿¹ÓIˆØ×ÑØðô	
ô �4—6‘6œ: a›=¬*°Q«-¼¿¹ÓIˆØˆŒ	Ø×ÑØðõ	
ra   c                ó4  — t        d«      }t        | j                  |t        d«      t        j                  «      }| j	                  |d|¬«       t        | j                  |t        d«      t        j                  «      }d|_        | j	                  |d|¬«       y )Nrµ   r¶   zif (cpy_r_b != 2) goto CPyL9;r“   Tzif (cpy_r_b == 2) goto CPyL9;)r   r   rj   rÃ   rŽ   r¹   r¾   s      r_   Útest_branch_is_error_next_blockz:TestFunctionEmitterVisitor.test_branch_is_error_next_blocký   sv   € Ü “]ˆ
Ü�4—6‘6˜:¤z°!£}´f·o±oÓFˆØ×Ñ˜Ð?ÈJÐÔWÜ�4—6‘6˜:¤z°!£}´f·o±oÓFˆØˆŒ	Ø×Ñ˜Ð?ÈJÐÕWra   c           	     ó‚  — | j                  t        | j                  t        d«      t        d«      t        j                  d¬«      d«       t        d«      }| j                  t        | j                  t        d«      |t        j                  d¬«      d|¬«       t        d«      }t        | j                  |t        d«      t        j                  d¬«      }| j                  |d|¬«       t        d«      }t        | j                  |t        d«      t        j                  d¬«      }d|_        | j                  |d	|¬«       y )
Nrµ   r¶   T©Úrarez­if (unlikely(cpy_r_b)) {
                                goto CPyL8;
                            } else
                                goto CPyL9;
                         z"if (unlikely(cpy_r_b)) goto CPyL8;r“   z!if (likely(!cpy_r_b)) goto CPyL9;z if (likely(cpy_r_b)) goto CPyL9;r·   r¾   s      r_   Útest_branch_rarez+TestFunctionEmitterVisitor.test_branch_rare  sù   € Ø×ÑÜ�4—6‘6œ: a›=¬*°Q«-¼¿¹È4ÔPðô	
ô   “]ˆ
Ø×ÑÜ�4—6‘6œ: a›=¨*´f·k±kÈÔMØ4Ø!ð 	ô 	
ô
   “]ˆ
Ü�4—6‘6˜:¤z°!£}´f·k±kÈÔMˆØ×Ñ˜ÐCÐPZÐÔ[Ü “]ˆ
Ü�4—6‘6˜:¤z°!£}´f·k±kÈÔMˆØˆŒ	Ø×Ñ˜ÐBÈzÐÕZra   c                óª   — t        dd dt        t        dt        «      gt        «      «      }| j	                  t        || j                  gd«      d«       y )NÚmyfnry   rc   r­   z cpy_r_r0 = CPyDef_myfn(cpy_r_m);)r   r   r   r@   rŽ   r   rc   ©r^   Údecls     r_   Ú	test_callz$TestFunctionEmitterVisitor.test_call  sI   € ÜØ�D˜%¤´
¸3ÄÓ0OÐ/PÔR`Ó!aó
ˆð 	×Ñœ˜d T§V¡V H¨bÓ1Ð3UÕVra   c                óÞ   — t        dd dt        t        dt        «      t        dt        «      gt        «      «      }| j	                  t        || j                  | j                  gd«      d«       y )NrÌ   ry   rc   rb   r­   z)cpy_r_r0 = CPyDef_myfn(cpy_r_m, cpy_r_k);)r   r   r   r@   rŽ   r   rc   rd   rÍ   s     r_   Útest_call_two_argsz-TestFunctionEmitterVisitor.test_call_two_args"  sb   € ÜØØØÜÜ˜C¤Ó0´*¸SÄ.Ó2QÐRÔTbóó	
ˆð 	×ÑÜ�˜Ÿ™ §¡Ð'¨Ó,Ð.Yõ	
ra   c                óœ   — | j                  t        | j                  «      d«       | j                  t        | j                  «      dd¬«       y )NzCPy_INCREF(cpy_r_o);TrÈ   )rŽ   r!   rg   r�   s    r_   Útest_inc_refz'TestFunctionEmitterVisitor.test_inc_ref/  ó9   € Ø×Ñœ §¡›Ð)?Ô@Ø×Ñœ §¡›Ð)?ÀdÐÕKra   c                óœ   — | j                  t        | j                  «      d«       | j                  t        | j                  «      dd¬«       y )NzCPy_DECREF(cpy_r_o);zCPy_DecRef(cpy_r_o);TrÈ   )rŽ   r   rg   r�   s    r_   Útest_dec_refz'TestFunctionEmitterVisitor.test_dec_ref3  rÔ   ra   c                óœ   — | j                  t        | j                  «      d«       | j                  t        | j                  «      dd¬«       y )NzCPyTagged_INCREF(cpy_r_m);zCPyTagged_IncRef(cpy_r_m);TrÈ   )rŽ   r!   rc   r�   s    r_   Útest_inc_ref_intz+TestFunctionEmitterVisitor.test_inc_ref_int7  ó9   € Ø×Ñœ §¡›Ð)EÔFØ×Ñœ §¡›Ð)EÈDÐÕQra   c                óœ   — | j                  t        | j                  «      d«       | j                  t        | j                  «      dd¬«       y )NzCPyTagged_DECREF(cpy_r_m);zCPyTagged_DecRef(cpy_r_m);TrÈ   )rŽ   r   rc   r�   s    r_   Útest_dec_ref_intz+TestFunctionEmitterVisitor.test_dec_ref_int;  rÙ   ra   c                óN   — | j                  t        | j                  «      d«       y )NzCPyTagged_DECREF(cpy_r_t.f0);)rŽ   r   rr   r�   s    r_   Útest_dec_ref_tuplez-TestFunctionEmitterVisitor.test_dec_ref_tuple?  s   € Ø×Ñœ §¡›Ð)HÕIra   c                óN   — | j                  t        | j                  «      d«       y )Nz!CPyTagged_DECREF(cpy_r_tt.f0.f0);)rŽ   r   rs   r�   s    r_   Útest_dec_ref_tuple_nestedz4TestFunctionEmitterVisitor.test_dec_ref_tuple_nestedB  s   € Ø×Ñœ §¡›Ð*MÕNra   c                ó  — | j                  t        t        t        j                  «      | j
                  | j                  gt        j                  t        j                  t        j                  t        j                  d«      d«       y )Nr­   z-cpy_r_r0 = CPyList_GetItem(cpy_r_m, cpy_r_k);)rŽ   r   r‚   rO   r®   rc   rd   r¯   r°   r±   r²   r�   s    r_   Útest_list_get_itemz-TestFunctionEmitterVisitor.test_list_get_itemE  sd   € Ø×ÑÜÜÔ$×4Ñ4Ó5Ø—‘˜Ÿ™Ð Ü ×,Ñ,Ü ×'Ñ'Ü ×,Ñ,Ü ×+Ñ+Øóð @õ	
ra   c                ó&  — | j                  t        t        t        j                  «      | j
                  | j                  | j                  gt        j                  t        j                  t        j                  t        j                  d«      d«       y )Nr­   z6cpy_r_r0 = CPyList_SetItem(cpy_r_l, cpy_r_n, cpy_r_o);)rŽ   r   r‚   rP   r®   re   rb   rg   r¯   r°   r±   r²   r�   s    r_   Útest_list_set_itemz-TestFunctionEmitterVisitor.test_list_set_itemS  sj   € Ø×ÑÜÜÔ$×4Ñ4Ó5Ø—‘˜Ÿ™ §¡Ð(Ü ×,Ñ,Ü ×'Ñ'Ü ×,Ñ,Ü ×+Ñ+Øóð Iõ	
ra   c                óN   — | j                  t        | j                  «      d«       y )Nz,cpy_r_r0 = CPyTagged_StealAsObject(cpy_r_n);)rŽ   r   rb   r�   s    r_   Útest_box_intz'TestFunctionEmitterVisitor.test_box_inta  s   € Ø×Ñœ˜TŸV™V›Ð&XÕYra   c                óZ   — | j                  t        | j                  t        d«      d«       y )Nr­   zàif (likely(PyLong_Check(cpy_r_m)))
                   cpy_r_r0 = CPyTagged_FromObject(cpy_r_m);
               else {
                   CPy_TypeError("int", cpy_r_m); cpy_r_r0 = CPY_INT_TAG;
               }
               )rŽ   r.   rc   r@   r�   s    r_   Útest_unbox_intz)TestFunctionEmitterVisitor.test_unbox_intd  s%   € Ø×ÑÜ�$—&‘&œ.¨"Ó-ðõ	
ra   c                óN   — | j                  t        | j                  «      d«       y )Nz*cpy_r_r0 = PyLong_FromLongLong(cpy_r_i64);)rŽ   r   ro   r�   s    r_   Útest_box_i64z'TestFunctionEmitterVisitor.test_box_i64o  s   € Ø×Ñœ˜TŸX™X›Ð(XÕYra   c                óZ   — | j                  t        | j                  t        d«      d«       y )Nr­   z$cpy_r_r0 = CPyLong_AsInt64(cpy_r_o);)rŽ   r.   rg   r?   r�   s    r_   Útest_unbox_i64z)TestFunctionEmitterVisitor.test_unbox_i64r  s$   € Ø×ÑÜ�$—&‘&Ô*¨BÓ/Ð1[õ	
ra   c                óv  — | j                  t        | j                  «      d«       | j                  t        | j                  «      d«       | j                  t        | j                  «      d«       | j                  t        | j
                  «      d«       | j                  t        | j                  «      d«       y )Nz%cpy_r_r0 = VecI64Api.box(cpy_r_vi64);z%cpy_r_r0 = VecI32Api.box(cpy_r_vi32);z:cpy_r_r0 = VecTApi.box(cpy_r_vs, (size_t)&PyUnicode_Type);z@cpy_r_r0 = VecTApi.box(cpy_r_vs, ((size_t)&PyUnicode_Type | 1));z'cpy_r_r0 = VecNestedApi.box(cpy_r_vvs);)rŽ   r   rt   ru   rv   r„   rw   r�   s    r_   Útest_box_vecz'TestFunctionEmitterVisitor.test_box_vecw  sŠ   € Ø×Ñœ˜TŸY™Y›Ð)TÔUØ×Ñœ˜TŸY™Y›Ð)TÔUØ×ÑÜ�—‘‹LÐZô	
ð 	×ÑÜ�—‘ÓØRô	
ð 	×Ñœ˜TŸX™X›Ð(UÕVra   c                óJ  — | j                  t        | j                  t        t        «      d«      d«       | j                  t        | j                  t        t
        «      d«      d«       | j                  t        | j                  t        t        «      d«      d«       | j                  t        | j                  t        t        t        t        g«      «      d«      d«       | j                  t        | j                  t        | j                  j                  «      d«      d«       y )Nr­   zËcpy_r_r0 = VecI64Api.unbox(cpy_r_o);
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[i64]", cpy_r_o); cpy_r_r0 = (VecI64) { -1, NULL };
               }
               zËcpy_r_r0 = VecI32Api.unbox(cpy_r_o);
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[i32]", cpy_r_o); cpy_r_r0 = (VecI32) { -1, NULL };
               }
               zàcpy_r_r0 = VecTApi.unbox(cpy_r_o, (size_t)&PyUnicode_Type);
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[str]", cpy_r_o); cpy_r_r0 = (VecT) { -1, NULL };
               }
               zícpy_r_r0 = VecTApi.unbox(cpy_r_o, ((size_t)&PyUnicode_Type | 1));
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[str | None]", cpy_r_o); cpy_r_r0 = (VecT) { -1, NULL };
               }
               zÜcpy_r_r0 = VecTApi.unbox(cpy_r_o, (size_t)CPyType_A);
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[mod.A]", cpy_r_o); cpy_r_r0 = (VecT) { -1, NULL };
               }
               )rŽ   r.   rg   r9   r?   r>   rF   r8   rB   r~   rŸ   r�   s    r_   Útest_unbox_vecz)TestFunctionEmitterVisitor.test_unbox_vecƒ  sæ   € Ø×ÑÜ�$—&‘&œ$Ô/Ó0°"Ó5ðô	
ð 	×ÑÜ�$—&‘&œ$Ô/Ó0°"Ó5ðô	
ð 	×ÑÜ�$—&‘&œ$œ~Ó.°Ó3ðô	
ð 	×ÑÜ�$—&‘&œ$œv¤~´Ð&GÓHÓIÈ2ÓNðô	
ð 	×ÑÜ�$—&‘&œ$˜tŸv™vŸ{™{Ó+¨RÓ0ðõ	
ra   c                ó�  — | j                  t        | j                  t        t        t        «      «      d«      d«       | j                  t        | j                  t        t        t        t        t        g«      «      «      d«      d«       | j                  t        | j                  t        t        t        «      «      d«      d«       y )Nr­   zòcpy_r_r0 = VecNestedApi.unbox(cpy_r_o, (size_t)&PyUnicode_Type, 1);
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[vec[str]]", cpy_r_o); cpy_r_r0 = (VecNested) { -1, NULL };
               }
               zÿcpy_r_r0 = VecNestedApi.unbox(cpy_r_o, ((size_t)&PyUnicode_Type | 1), 1);
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[vec[str | None]]", cpy_r_o); cpy_r_r0 = (VecNested) { -1, NULL };
               }
               zÜcpy_r_r0 = VecNestedApi.unbox(cpy_r_o, 2, 1);
               if (VEC_IS_ERROR(cpy_r_r0)) {
                   CPy_TypeError("vec[vec[i64]]", cpy_r_o); cpy_r_r0 = (VecNested) { -1, NULL };
               }
               )rŽ   r.   rg   r9   rF   r8   rB   r?   r�   s    r_   Útest_unbox_vec_nestedz0TestFunctionEmitterVisitor.test_unbox_vec_nested­  s™   € Ø×ÑÜ�$—&‘&œ$œt¤NÓ3Ó4°bÓ9ðô	
ð 	×ÑÜ�$—&‘&œ$œt¤F¬N¼OÐ+LÓ$MÓNÓOÐQSÓTðô	
ð 	×ÑÜ�$—&‘&œ$œtÔ$4Ó5Ó6¸Ó;ðõ	
ra   c                ó  — | j                  t        t        t        j                  «      | j
                  | j                  gt        j                  t        j                  t        j                  t        j                  d«      d«       y )Nrœ   z+cpy_r_r0 = PyList_Append(cpy_r_l, cpy_r_o);)rŽ   r   r‚   rN   r®   re   rg   r¯   r°   r±   r²   r�   s    r_   Útest_list_appendz+TestFunctionEmitterVisitor.test_list_appendÇ  sb   € Ø×ÑÜÜ”N×2Ñ2Ó3Ø—‘˜Ÿ™Ð Ü×*Ñ*Ü×%Ñ%Ü×*Ñ*Ü×)Ñ)Øóð >õ	
ra   c                óR   — | j                  t        | j                  dd«      d«       y )Nr{   rœ   a#  cpy_r_r0 = ((mod___AObject *)cpy_r_r)->_y;
               if (unlikely(cpy_r_r0 == CPY_INT_TAG)) {
                   PyErr_SetString(PyExc_AttributeError, "attribute 'y' of 'A' undefined");
               } else {
                   CPyTagged_INCREF(cpy_r_r0);
               }
            ©rŽ   r   r~   r�   s    r_   Útest_get_attrz(TestFunctionEmitterVisitor.test_get_attrÕ  s%   € Ø×ÑÜ�D—F‘F˜C Ó#ðõ		
ra   c                óR   — | j                  t        | j                  dd«      d«       y )Nrz   rœ   zÒcpy_r_r0 = ((mod___AObject *)cpy_r_r)->_x;
               if (unlikely(cpy_r_r0 == 2)) {
                   PyErr_SetString(PyExc_AttributeError, "attribute 'x' of 'A' undefined");
               }
            rõ   r�   s    r_   Útest_get_attr_non_refcountedz7TestFunctionEmitterVisitor.test_get_attr_non_refcountedá  s%   € Ø×ÑÜ�D—F‘F˜C Ó#ðõ	
ra   zrequires a free threaded buildc                óR   — | j                  t        | j                  dd«      d«       y )Nrg   rœ   a              cpy_r_r0 = CPy_GetAttrRef((PyObject *)cpy_r_r, (PyObject **)&((mod___AObject *)cpy_r_r)->_o);
            if (unlikely(cpy_r_r0 == NULL)) {
                PyErr_SetString(PyExc_AttributeError, "attribute 'o' of 'A' undefined");
            }
            rõ   r�   s    r_   Útest_get_attr_ref_free_threadedz:TestFunctionEmitterVisitor.test_get_attr_ref_free_threadedí  s%   € à×ÑÜ�D—F‘F˜C Ó#ðõ	
ra   c                óÆ   — t        | j                  dd«      }t        |t        d«      t        d«      t        j                  «      }d|_        | j                  |d|d¬«       y )	Nr{   rœ   rµ   r¶   ©Úfoobaré{   aD              cpy_r_r0 = ((mod___AObject *)cpy_r_r)->_y;
            if (unlikely(cpy_r_r0 == CPY_INT_TAG)) {
                CPy_AttributeError("prog.py", "foobar", "A", "y", 123, CPyStatic_prog___globals);
                goto CPyL8;
            }
            CPyTagged_INCREF(cpy_r_r0);
            goto CPyL9;
            T)Únext_branchÚ	skip_next)r   r~   r   r   rÃ   Útraceback_entryrŽ   ©r^   ÚopÚbranchs      r_   Útest_get_attr_mergedz/TestFunctionEmitterVisitor.test_get_attr_mergedù  s[   € Ü�T—V‘V˜S !Ó$ˆÜ˜œJ q›M¬:°a«=¼&¿/¹/ÓJˆØ!0ˆÔØ×ÑØðð Øð 	õ 	
ra   c                óR   — | j                  t        | j                  dd«      d«       y )Nr|   rœ   a  cpy_r_r0 = ((mod___AObject *)cpy_r_r)->_i1;
               if (unlikely(cpy_r_r0 == -113) && !(((mod___AObject *)cpy_r_r)->bitmap & 1)) {
                   PyErr_SetString(PyExc_AttributeError, "attribute 'i1' of 'A' undefined");
               }
            rõ   r�   s    r_   Útest_get_attr_with_bitmapz4TestFunctionEmitterVisitor.test_get_attr_with_bitmap  s%   € Ø×ÑÜ�D—F‘F˜D !Ó$ðõ	
ra   c                óV   — | j                  t        | j                  ddd¬«      d«       y )Nrr   rœ   T)Úallow_error_valuezÊcpy_r_r0 = ((mod___AObject *)cpy_r_r)->_t;
               if (cpy_r_r0.f0 != NULL) {
                   CPy_INCREF(cpy_r_r0.f0);
                   CPy_INCREF(cpy_r_r0.f1);
               }
            rõ   r�   s    r_   Ú!test_get_attr_nullable_with_tuplez<TestFunctionEmitterVisitor.test_get_attr_nullable_with_tuple  s'   € Ø×ÑÜ�D—F‘F˜C °dÔ;ðõ	
ra   c                óh   — | j                  t        | j                  d| j                  d«      d«       y )Nr{   rœ   zíif (((mod___AObject *)cpy_r_r)->_y != CPY_INT_TAG) {
                   CPyTagged_DECREF(((mod___AObject *)cpy_r_r)->_y);
               }
               ((mod___AObject *)cpy_r_r)->_y = cpy_r_m;
               cpy_r_r0 = 1;
            )rŽ   r*   r~   rc   r�   s    r_   Útest_set_attrz(TestFunctionEmitterVisitor.test_set_attr!  s+   € Ø×ÑÜ�D—F‘F˜C §¡¨Ó+ðõ	
ra   c                óh   — | j                  t        | j                  d| j                  d«      d«       y )Nrg   rœ   zŽ            CPy_SetAttrRef((PyObject *)cpy_r_r, (PyObject **)&((mod___AObject *)cpy_r_r)->_o, cpy_r_o);
            cpy_r_r0 = 1;
            )rŽ   r*   r~   rg   r�   s    r_   Útest_set_attr_ref_free_threadedz:TestFunctionEmitterVisitor.test_set_attr_ref_free_threaded,  s+   € à×ÑÜ�D—F‘F˜C §¡¨Ó+ðõ	
ra   c                óh   — | j                  t        | j                  d| j                  d«      d«       y )Nrz   rœ   zS((mod___AObject *)cpy_r_r)->_x = cpy_r_b;
               cpy_r_r0 = 1;
            )rŽ   r*   r~   rj   r�   s    r_   Útest_set_attr_non_refcountedz7TestFunctionEmitterVisitor.test_set_attr_non_refcounted6  s+   € Ø×ÑÜ�D—F‘F˜C §¡¨Ó+ðõ	
ra   c                ó‚   — t        | j                  d| j                  d«      }t        |_        | j                  |d«       y )Nr{   rœ   zÐif (((mod___AObject *)cpy_r_r)->_y != CPY_INT_TAG) {
                   CPyTagged_DECREF(((mod___AObject *)cpy_r_r)->_y);
               }
               ((mod___AObject *)cpy_r_r)->_y = cpy_r_m;
            )r*   r~   rc   r   r²   rŽ   ©r^   r  s     r_   Útest_set_attr_no_errorz1TestFunctionEmitterVisitor.test_set_attr_no_error>  s7   € Ü�T—V‘V˜S $§&¡&¨!Ó,ˆÜ!ˆŒØ×ÑØðõ	
ra   c                ó‚   — t        | j                  d| j                  d«      }t        |_        | j                  |d«       y )Nrz   rœ   z6((mod___AObject *)cpy_r_r)->_x = cpy_r_b;
            )r*   r~   rj   r   r²   rŽ   r  s     r_   Ú%test_set_attr_non_refcounted_no_errorz@TestFunctionEmitterVisitor.test_set_attr_non_refcounted_no_errorJ  s7   € Ü�T—V‘V˜S $§&¡&¨!Ó,ˆÜ!ˆŒØ×ÑØðõ	
ra   c                óÌ   — | j                  t        | j                  d| j                  d«      d«       | j                  t        | j                  d| j                  d«      d«       y )Nr|   rœ   úÕif (unlikely(cpy_r_i64 == -113)) {
                   ((mod___AObject *)cpy_r_r)->bitmap |= 1;
               }
               ((mod___AObject *)cpy_r_r)->_i1 = cpy_r_i64;
               cpy_r_r0 = 1;
            r}   zÕif (unlikely(cpy_r_i32 == -113)) {
                   ((mod___AObject *)cpy_r_r)->bitmap |= 2;
               }
               ((mod___AObject *)cpy_r_r)->_i2 = cpy_r_i32;
               cpy_r_r0 = 1;
            )rŽ   r*   r~   ro   rm   r�   s    r_   Útest_set_attr_with_bitmapz4TestFunctionEmitterVisitor.test_set_attr_with_bitmapS  sX   € ð 	×ÑÜ�D—F‘F˜D $§(¡(¨AÓ.ðô	
ð 	×ÑÜ�D—F‘F˜D $§(¡(¨AÓ.ðõ	
ra   c                óz   — t        | j                  d| j                  d«      }d|_        | j	                  |d«       y )Nr|   rœ   Tr  )r*   r~   ro   Úis_initrŽ   r  s     r_   Útest_set_attr_init_with_bitmapz9TestFunctionEmitterVisitor.test_set_attr_init_with_bitmapi  s7   € Ü�T—V‘V˜T 4§8¡8¨QÓ/ˆØˆŒ
Ø×ÑØðõ	
ra   c                ó  — | j                  t        t        t        j                  «      | j
                  | j                  gt        j                  t        j                  t        j                  t        j                  d«      d«       y )Nrœ   z.cpy_r_r0 = CPyDict_GetItem(cpy_r_d, cpy_r_o2);)rŽ   r   r‚   rI   r®   ri   rh   r¯   r°   r±   r²   r�   s    r_   Útest_dict_get_itemz-TestFunctionEmitterVisitor.test_dict_get_itemv  sd   € Ø×ÑÜÜÔ$×4Ñ4Ó5Ø—‘˜Ÿ™Ð!Ü ×,Ñ,Ü ×'Ñ'Ü ×,Ñ,Ü ×+Ñ+Øóð Aõ	
ra   c                ó&  — | j                  t        t        t        j                  «      | j
                  | j                  | j                  gt        j                  t        j                  t        j                  t        j                  d«      d«       y )Nrœ   z7cpy_r_r0 = CPyDict_SetItem(cpy_r_d, cpy_r_o, cpy_r_o2);)rŽ   r   r‚   rK   r®   ri   rg   rh   r¯   r°   r±   r²   r�   s    r_   Útest_dict_set_itemz-TestFunctionEmitterVisitor.test_dict_set_item„  sj   € Ø×ÑÜÜÔ$×4Ñ4Ó5Ø—‘˜Ÿ™ §¡Ð)Ü ×,Ñ,Ü ×'Ñ'Ü ×,Ñ,Ü ×+Ñ+Øóð Jõ	
ra   c                ó  — | j                  t        t        t        j                  «      | j
                  | j                  gt        j                  t        j                  t        j                  t        j                  d«      d«       y )Nrœ   z,cpy_r_r0 = CPyDict_Update(cpy_r_d, cpy_r_o);)rŽ   r   r‚   rL   r®   ri   rg   r¯   r°   r±   r²   r�   s    r_   Útest_dict_updatez+TestFunctionEmitterVisitor.test_dict_update’  sb   € Ø×ÑÜÜ”N×2Ñ2Ó3Ø—‘˜Ÿ™Ð Ü×*Ñ*Ü×%Ñ%Ü×*Ñ*Ü×)Ñ)Øóð ?õ	
ra   c                óÒ   — | j                  t        t        j                  g t        j                  t        j
                  t        j                  t        j                  d«      d«       y )Nrœ   zcpy_r_r0 = PyDict_New();)rŽ   r   rJ   r®   r¯   r°   r±   r²   r�   s    r_   Útest_new_dictz(TestFunctionEmitterVisitor.test_new_dict   sP   € Ø×ÑÜÜ×+Ñ+ØÜ×'Ñ'Ü×"Ñ"Ü×'Ñ'Ü×&Ñ&Øóð +õ	
ra   c                ój   — | j                  d| j                  | j                  | j                  d«       y )NÚinz-cpy_r_r0 = PyDict_Contains(cpy_r_d, cpy_r_o);)r§   rj   rg   ri   r�   s    r_   Útest_dict_containsz-TestFunctionEmitterVisitor.test_dict_contains®  s(   € Ø×"Ñ"Ø�$—&‘&˜$Ÿ&™& $§&¡&Ð*]õ	
ra   c           	     óò  — | j                  t        t        | j                  | j                  t        j
                  d«      d«       | j                  t        t        | j                  | j                  t        j                  d«      d«       | j                  t        t        | j                  | j                  t        j                  d«      d«       | j                  t        t        | j                  | j                  t        j                  d«      d«       | j                  t        t        | j                  | j                  t        j                  d«      d«       | j                  t        t        | j                  | j                  t        j                  d«      d«       | j                  t        t        | j                  | j                  t        j                  d«      d«       | j                  t        t        | j                  | j                  t        j                  d«      d	«       | j                  t        t        | j                  | j                  t        j                  d«      d
«       | j                  t        t        | j                  | j                  t        j                  d«      d«       | j                  t        t        | j                  | j                   t        j                  d«      d«       y )Nrœ   zcpy_r_r0 = cpy_r_s1 + cpy_r_s2;zcpy_r_r0 = cpy_r_s1 - cpy_r_s2;zcpy_r_r0 = cpy_r_s1 * cpy_r_s2;zcpy_r_r0 = cpy_r_s1 / cpy_r_s2;zcpy_r_r0 = cpy_r_s1 % cpy_r_s2;zcpy_r_r0 = cpy_r_s1 & cpy_r_s2;zcpy_r_r0 = cpy_r_s1 | cpy_r_s2;zcpy_r_r0 = cpy_r_s1 ^ cpy_r_s2;z cpy_r_r0 = cpy_r_s1 << cpy_r_s2;z8cpy_r_r0 = (Py_ssize_t)cpy_r_s1 >> (Py_ssize_t)cpy_r_s2;z$cpy_r_r0 = cpy_r_i64 >> cpy_r_i64_1;)rŽ   r#   rE   rk   rl   ÚADDÚSUBÚMULÚDIVÚMODÚANDÚORÚXORÚ
LEFT_SHIFTÚRIGHT_SHIFTro   rp   r�   s    r_   Útest_int_opz&TestFunctionEmitterVisitor.test_int_op³  s  € Ø×ÑÜÔ&¨¯©°·±¼%¿)¹)ÀQÓGØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%¿)¹)ÀQÓGØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%¿)¹)ÀQÓGØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%¿)¹)ÀQÓGØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%¿)¹)ÀQÓGØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%¿)¹)ÀQÓGØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%¿(¹(ÀAÓFØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%¿)¹)ÀQÓGØ1ô	
ð 	×ÑÜÔ&¨¯©°·±¼%×:JÑ:JÈAÓNØ2ô	
ð 	×ÑÜÔ&¨¯©°·±¼%×:KÑ:KÈQÓOØJô	
ð 	×ÑÜÔ&¨¯©°$·*±*¼e×>OÑ>OÐQRÓSØ6õ	
ra   c                ó  — | j                  t        | j                  | j                  t        j                  d«      d«       | j                  t        | j
                  | j                  t        j                  d«      d«       | j                  t        | j                  | j                  t        j                  d«      d«       | j                  t        | j                  | j                  t        j                  d«      d«       | j                  t        | j
                  | j                  t        j                  d«      d«       | j                  t        | j                  | j                  t        j                  d«      d«       | j                  t        | j                  | j                  t        j                  d«      d«       | j                  t        | j                  | j                  t        j                  d«      d	«       y )
Nrœ   z7cpy_r_r0 = (Py_ssize_t)cpy_r_s1 < (Py_ssize_t)cpy_r_s2;z#cpy_r_r0 = cpy_r_i32 < cpy_r_i32_1;z#cpy_r_r0 = cpy_r_i64 < cpy_r_i64_1;zcpy_r_r0 = cpy_r_s1 < cpy_r_s2;z7cpy_r_r0 = (uint32_t)cpy_r_i32 < (uint32_t)cpy_r_i32_1;z7cpy_r_r0 = (uint64_t)cpy_r_i64 < (uint64_t)cpy_r_i64_1;zcpy_r_r0 = cpy_r_o == cpy_r_o2;zcpy_r_r0 = cpy_r_o != cpy_r_o2;)rŽ   r   rk   rl   ÚSLTrm   rn   ro   rp   ÚULTrg   rh   ÚEQÚNEQr�   s    r_   Útest_comparison_opz-TestFunctionEmitterVisitor.test_comparison_opá  sv  € à×ÑÜ˜Ÿ™ $§'¡'¬<×+;Ñ+;¸QÓ?ØIô	
ð 	×ÑÜ˜Ÿ™ 4§:¡:¬|×/?Ñ/?ÀÓCØ5ô	
ð 	×ÑÜ˜Ÿ™ 4§:¡:¬|×/?Ñ/?ÀÓCØ5ô	
ð
 	×ÑÜ˜Ÿ™ $§'¡'¬<×+;Ñ+;¸QÓ?Ø1ô	
ð 	×ÑÜ˜Ÿ™ 4§:¡:¬|×/?Ñ/?ÀÓCØIô	
ð 	×ÑÜ˜Ÿ™ 4§:¡:¬|×/?Ñ/?ÀÓCØIô	
ð 	×ÑÜ˜Ÿ™ §¡¬,¯/©/¸1Ó=Ø1ô	
ð 	×ÑÜ˜Ÿ™ §¡¬,×*:Ñ*:¸AÓ>Ø1õ	
ra   c                óX   — | j                  t        t        | j                  «      d«       y )Nzcpy_r_r0 = *(char *)cpy_r_ptr;)rŽ   r&   r:   rq   r�   s    r_   Útest_load_memz(TestFunctionEmitterVisitor.test_load_mem  s   € Ø×Ñœ¤°$·(±(Ó;Ð=aÕbra   c                ón   — | j                  t        t        | j                  | j                  «      d«       y )Nz*(char *)cpy_r_ptr = cpy_r_b;)rŽ   r,   r:   rq   rj   r�   s    r_   Útest_set_memz'TestFunctionEmitterVisitor.test_set_mem
  s'   € Ø×ÑÜ”? D§H¡H¨d¯f©fÓ5Ð7Zõ	
ra   c                ó*  — t        dg d¢t        t        t        g«      }| j	                  t        | j                  |d«      d«       | j	                  t        | j                  |d«      d«       | j	                  t        | j                  |d«      d«       y )	Nr€   )rj   rm   ro   rj   z8cpy_r_r0 = (CPyPtr)((CPyPtr)cpy_r_o + offsetof(Foo, b));rm   z:cpy_r_r0 = (CPyPtr)((CPyPtr)cpy_r_o + offsetof(Foo, i32));ro   z:cpy_r_r0 = (CPyPtr)((CPyPtr)cpy_r_o + offsetof(Foo, i64));)r5   r:   r>   r?   rŽ   r   rg   )r^   r~   s     r_   Útest_get_element_ptrz/TestFunctionEmitterVisitor.test_get_element_ptr  s†   € ÜØÒ&¬Ô:JÔL\Ð(]ó
ˆð 	×ÑÜ˜$Ÿ&™& ! SÓ)ØJô	
ð 	×ÑÜ˜$Ÿ&™& ! UÓ+ØLô	
ð 	×ÑÜ˜$Ÿ&™& ! UÓ+ØLõ	
ra   c                óÚ   — | j                  t        t        | j                  «      d| j                  «      d«       | j                  t        | j
                  d| j                  «      d«       y )Nrj   zcpy_r_r0.b = cpy_r_b;rz   z7cpy_r_r0 = (Foo) { cpy_r_st.b, cpy_r_i32, cpy_r_st.y };)rŽ   r+   r/   rˆ   rj   r�   rm   r�   s    r_   Útest_set_elementz+TestFunctionEmitterVisitor.test_set_element   sU   € à×ÑÜ”u˜T×-Ñ-Ó.°°T·V±VÓ<Ð>Yô	
ð 	×ÑÜ�t—w‘w  T§X¡XÓ.ØIõ	
ra   c                óD   — | j                  t        t        d«      d«       y )NÚPyDict_Typez$cpy_r_r0 = (PyObject *)&PyDict_Type;)rŽ   r$   rC   r�   s    r_   Útest_load_addressz,TestFunctionEmitterVisitor.test_load_address+  s   € Ø×ÑÜÔ)¨=Ó9Ø6õ	
ra   c                óÖ   — t        t        d«      }t        |d«      }| j                  j	                  |«       | j                  t        || j                  | j                  g«      d«       y )Nr�   Úaz+PyObject *cpy_r_a[2] = {cpy_r_o, cpy_r_o2};)	r3   rC   r(   rY   rZ   rŽ   r   rg   rh   )r^   rr   rE  s      r_   Útest_assign_multiz,TestFunctionEmitterVisitor.test_assign_multi1  sU   € ÜÔ$ aÓ(ˆÜ�Q˜ÓˆØ�‰×Ñ˜aÔ Ø×ÑÜ˜˜DŸF™F D§G¡GÐ,Ó-Ð/`õ	
ra   c           	     óÌ   — t        t        d«      }| j                  t        |t	        dt        «      «      d«       | j                  t        |t	        dt        «      «      d«       y )NrE  l        zcpy_r_a = 2147483648LL;iÿÿÿzcpy_r_a = 2147483647;©r(   r?   rŽ   r   r"   ©r^   rE  s     r_   Útest_long_unsignedz-TestFunctionEmitterVisitor.test_long_unsigned9  sW   € ÜÔ% sÓ+ˆØ×ÑÜ�1”g˜gÔ'7Ó8Ó9Ð;Xô	
ð 	×ÑÜ�1”g˜mÔ-=Ó>Ó?ÐA\õ	
ra   c           	     óÌ   — t        t        d«      }| j                  t        |t	        dt        «      «      d«       | j                  t        |t	        dt        «      «      d«       y )NrE  i  €zcpy_r_a = -2147483647;i   €zcpy_r_a = -2147483648LL;rH  rI  s     r_   Útest_long_signedz+TestFunctionEmitterVisitor.test_long_signedB  sW   € ÜÔ% sÓ+ˆØ×ÑÜ�1”g˜nÔ.>Ó?Ó@ÐB^ô	
ð 	×ÑÜ�1”g˜jÔ*:Ó;Ó<Ð>\õ	
ra   c                óÔ   — t        | j                  t        d«      }t        d«      }t	        |t        d«      |t        j
                  «      }d|_        | j                  |d||d¬«       y )Nrœ   r¶   rµ   rü   zµif (likely(PyDict_Check(cpy_r_r)))
    cpy_r_r0 = cpy_r_r;
else {
    CPy_TypeErrorTraceback("prog.py", "foobar", 123, CPyStatic_prog___globals, "dict", cpy_r_r);
    goto CPyL8;
}
T©r”   rÿ   r   )r   r~   r=   r   r   rÃ   r  rŽ   ©r^   r  r”   r  s       r_   Útest_cast_and_branch_mergez5TestFunctionEmitterVisitor.test_cast_and_branch_mergeK  sc   € Ü�$—&‘&œ/¨1Ó-ˆÜ “]ˆ
Ü˜œJ q›M¨:´v·±ÓGˆØ!0ˆÔØ×ÑØðð "ØØð 	õ 	
ra   c                óâ   — t        | j                  t        d«      }t        |t	        d«      t	        d«      t        j
                  «      }d|_        | j                  |dt	        d«      |d¬«       y )	Nrœ   rµ   r¶   rü   úÑ            if (likely(PyDict_Check(cpy_r_r)))
                cpy_r_r0 = cpy_r_r;
            else {
                CPy_TypeError("dict", cpy_r_r);
                cpy_r_r0 = NULL;
            }
            é
   FrN  )r   r~   r=   r   r   rÃ   r  rŽ   r  s      r_   Útest_cast_and_branch_no_merge_1z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_1_  sb   € Ü�$—&‘&œ/¨1Ó-ˆÜ˜œJ q›M¬:°a«=¼&¿/¹/ÓJˆØ!0ˆÔØ×ÑØðô " "“~ØØð 	õ 	
ra   c                óà   — t        | j                  t        d«      }t        d«      }t	        |t        d«      |t        j
                  «      }d|_        d|_        | j                  |d||¬«       y )Nrœ   r¶   rµ   Trü   rR  ©r”   rÿ   )	r   r~   r=   r   r   rÃ   r¹   r  rŽ   rO  s       r_   Útest_cast_and_branch_no_merge_2z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_2r  sg   € Ü�$—&‘&œ/¨1Ó-ˆÜ “]ˆ
Ü˜œJ q›M¨:´v·±ÓGˆØˆŒØ!0ˆÔØ×ÑØðð "Øð 	õ 	
ra   c                óÒ   — t        | j                  t        d«      }t        d«      }t	        |t        d«      |t        j
                  «      }d|_        | j                  |d||¬«       y )Nrœ   r¶   rµ   rü   rR  rV  )r   r~   r=   r   r   r¸   r  rŽ   rO  s       r_   Útest_cast_and_branch_no_merge_3z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_3†  s`   € Ü�$—&‘&œ/¨1Ó-ˆÜ “]ˆ
Ü˜œJ q›M¨:´v·{±{ÓCˆØ!0ˆÔØ×ÑØðð "Øð 	õ 	
ra   c                óÄ   — t        | j                  t        d«      }t        d«      }t	        |t        d«      |t        j
                  «      }| j                  |d||¬«       y )Nrœ   r¶   rµ   rR  rV  )r   r~   r=   r   r   rÃ   rŽ   rO  s       r_   Útest_cast_and_branch_no_merge_4z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_4™  sX   € Ü�$—&‘&œ/¨1Ó-ˆÜ “]ˆ
Ü˜œJ q›M¨:´v·±ÓGˆØ×ÑØðð "Øð 	õ 	
ra   c                ó
  — t        t        d«      }| j                  t        |t        d¬«      d«       | j                  t        |t        d¬«      d«       t
        dk(  rX| j                  t        | j                  t        d¬«      d«       | j                  t        | j                  t        d¬«      d	«       t
        d
k(  rE| j                  t        |t        d¬«      d«       | j                  t        |t        d¬«      d«       y y )NrE  T)Úsignedzcpy_r_r0 = cpy_r_a;Fzcpy_r_r0 = (uint32_t)cpy_r_a;é   zcpy_r_r0 = (Py_ssize_t)cpy_r_n;zcpy_r_r0 = cpy_r_n;rµ   )r(   r>   rŽ   r   r?   r   rb   r@   rI  s     r_   Útest_extendz&TestFunctionEmitterVisitor.test_extend«  sÞ   € ÜÔ% sÓ+ˆØ×Ñœ Ô#3¸DÔAÐC\Ô]Ø×ÑÜ�1Ô&¨uÔ5Ð7Zô	
ô ˜AÒØ×ÑÜ�t—v‘vÔ/¸Ô=Ø5ôð ×ÑÜ�t—v‘vÔ/¸Ô>Ð@Yôô ˜AÒØ×ÑœV A¤~¸dÔCÐE^Ô_Ø×ÑÜ�qœ.°Ô7Ð9\õð ra   c                ó‚   — t        | j                  «      }| j                  |t        |«      gt        rd«       y d«       y ©Nr’   úCPy_INCREF(cpy_r_r0);)r   r   rŽ   r!   r	   rº   s     r_   Útest_inc_ref_nonez,TestFunctionEmitterVisitor.test_inc_ref_none¿  s/   € Ü�—	‘	‹NˆØ×Ñ˜!œV A›Y˜­}¨ÕZÐBYÕZra   c                ó‚   — t        | j                  «      }| j                  |t        |«      gt        rd«       y d«       y ra  )r   rj   rŽ   r!   r	   rº   s     r_   Útest_inc_ref_boolz,TestFunctionEmitterVisitor.test_inc_ref_boolÃ  s/   € Ü�—‘‹KˆØ×Ñ˜!œV A›Y˜­}¨ÕZÐBYÕZra   c                óä   — dD ]7  }t        |t        «      }| j                  |t        |«      gt        rdnd«       Œ9 dD ]/  }t        |t        «      }| j                  |t        |«      gd«       Œ1 y )N)éûÿÿÿr   rœ   r™   éÿ   é   r’   rb  )iåÛîÿiúÿÿÿi  ilX)r%   rC   rŽ   r!   r	   )r^   rz   rj   s      r_   Útest_inc_ref_int_literalz3TestFunctionEmitterVisitor.test_inc_ref_int_literalÇ  sv   € Ø&ò 	_ˆAÜ˜AÔ0Ó1ˆAØ×Ñ˜a¤¨£˜^µ=©RÐF]Õ^ð	_ð .ò 	FˆAÜ˜AÔ0Ó1ˆAØ×Ñ˜a¤¨£˜^Ð-DÕEñ	Fra   c           	     óh  — t        t        d«      }| j                  t        |t	        d«      «      d«       | j                  t        |t	        d«      «      d«       | j                  t        |t	        d«      «      d«       | j                  t        |t	        d«      «      d	«       t        d
«      D ]€  }t        |g«      }|dk(  rd}nA|dk(  rd}n9|dk(  rd}n1|dk(  rd}n)|dk(  rd}n!|dk  s|dk\  rd|z  }n|j                  d«      }| j                  t        |t	        |«      «      d|› d�«       Œ‚ y )NÚss   foozcpy_r_s = "foo";s   foo "ozcpy_r_s = "foo \"o";ó    zcpy_r_s = "\x00";ó   \zcpy_r_s = "\\";ri  ó   
z\nó   z\ró   	z\tó   "z\"z\\é    é   z\x%.2xÚasciizcpy_r_s = "z";)r(   r<   rŽ   r   r   ÚrangeÚbytesÚdecode)r^   rl  Úirj   Útargets        r_   Útest_c_stringz(TestFunctionEmitterVisitor.test_c_stringÏ  s%  € ÜÔ'¨Ó-ˆØ×Ñœ ¤7¨6£?Ó3Ð5KÔLØ×Ñœ ¤7¨9Ó#5Ó6Ð8SÔTØ×Ñœ ¤7¨7Ó#3Ó4Ð6NÔOØ×Ñœ ¤7¨5£>Ó2Ð4JÔKÜ�s“ò 	NˆAÜ�q�c“
ˆAØ�EŠzØ‘Ø�e’Ø‘Ø�e’Ø‘Ø�d’Ø‘Ø�e’Ø‘Ø�R’˜1 š8Ø" Q™‘àŸ™ 'Ó*�Ø×ÑœV A¤w¨q£zÓ2°kÀ&ÀÈÐ4LÕMñ!	Nra   NF)rÉ   rÿ   r   c               óÜ  — t        d«      }t        |t        «      r|j                  j	                  |«       n |j                  j                  |«       |d   }t        | j                  |g«      }t        | j                  |«      }	t        | j                  |«      }
g |	_
        g |
_
        t        |	|
dd«      }||_        ||_        |r
||g|_        n|g|_        d|_        |j                  |«       |
j                  |	j                  z   }|D �cg c]  }|j!                  d«      ‘Œ }}t#        d„ |D «       «      sJ ‚|D �cg c]  }|j%                  d«      ‘Œ }}|j!                  «       sg }n|j%                  «       j'                  d«      }|D �cg c]  }|j!                  d«      ‘Œ }}t)        ||dd	¬
«       |r|j                  dk(  sJ ‚y |j                  dk(  sJ ‚y c c}w c c}w c c}w )Nr   éÿÿÿÿúprog.pyÚprogú c              3  ó>   K  — | ]  }|j                  d «      –— Œ y­w)ú
N)Úendswith)Ú.0Úlines     r_   ú	<genexpr>z9TestFunctionEmitterVisitor.assert_emit.<locals>.<genexpr>	  s   è ø€ Ò@¨4�4—=‘= ×&Ñ@ùs   ‚r‚  zGenerated code unexpectedT)ÚmsgÚ	tracebackrœ   )r   Ú
isinstancer'   ÚopsrZ   Úextendr2   rY   r   r‰   Ú	fragmentsr   r”   rÉ   Úop_indexÚacceptÚstripÚallÚrstripÚsplitr   )r^   r  Úexpectedr”   rÉ   rÿ   r   ÚblockÚvalue_namesÚemitterÚdeclarationsÚvisitorÚfragsr…  Úactual_linesÚexpected_liness                   r_   rŽ   z&TestFunctionEmitterVisitor.assert_emitç  sÁ  € ô ˜1“ˆÜ�bœ"ÔØ�I‰I×Ñ˜RÕ à�I‰I×Ñ˜RÔ Ø�B‘ˆBÜ+¨D¯N©N¸U¸GÓDˆÜ˜$Ÿ,™,¨Ó4ˆÜ˜tŸ|™|¨[Ó9ˆØˆÔØ!#ˆÔä(¨°,À	È6ÓRˆØ'ˆÔØˆŒÙØ˜{Ð+ˆG�Kà˜$ˆGŒKØˆÔà
�	‰	�'ÔØ×&Ñ&¨×):Ñ):Ñ:ˆØ49Ö:¨D˜Ÿ
™
 3�Ð:ˆÐ:ÜÑ@°<Ô@Ô@Ð@Ð@Ø6BÖC¨d˜Ÿ™ DÕ)ÐCˆÐCØ�~‰~ÔØ‰Nà%Ÿ_™_Ó.×4Ñ4°TÓ:ˆNØ6DÖE¨d˜$Ÿ*™* S�/ÐEˆÐEÜ"Ø˜LÐ.IÐUYõ	
ñ Ø×#Ñ# qÒ(Ð(Ñ(à×#Ñ# qÒ(Ð(Ñ(ùò ;ùâCùò
 Fs   ÄGÅ G$ÆG)c                óø  — |t         v rçt         |   }|D ]Ø  }t        |j                  |j                  d   «      sŒ't        |j                  |j                  d   «      sŒK||g}|j                  �|j                  D �	cg c]  }	||	   ‘Œ	 }}	|j
                  €J ‚| j                  t        |j
                  ||j                  |j                  |j                  |j                  d«      |«        y  y J d«       ‚c c}	w )Nr   rœ   r­   zCould not find matching op)rR   rS   rŸ   Ú	arg_typesÚorderingr®   rŽ   r   r¯   r°   r±   r²   )
r^   r  ÚdestÚleftÚrightr“  rŠ  ÚdescÚargsry  s
             r_   r§   z0TestFunctionEmitterVisitor.assert_emit_binary_op  sù   € ð ”ÑÜ˜R‘.ˆCØò �Ü˜dŸi™i¨¯©¸Ñ):Õ;Ä
Ø—J‘J §¡¨qÑ 1õAð ! %˜=�DØ—}‘}Ð0Ø15·±Ö?¨A  Q£Ð?˜Ð?à×/Ñ/Ð;Ð;Ð;Ø×$Ñ$ÜØ ×0Ñ0Ø Ø ×,Ñ,Ø ŸK™KØ ×,Ñ,Ø ŸO™OØóð !ôñ ñ+ð. 7Ð6Ó6�5ùò#  @s   Á=C7©rƒ   ÚNonerX   )r  zOp | list[Op]r“  r‚   r”   zBasicBlock | NonerÉ   Úboolrÿ   zBranch | Noner   r¦  rƒ   r¥  )r  r‚   rŸ  r1   r   r1   r¡  r1   r“  r‚   rƒ   r¥  )RÚ__name__Ú
__module__Ú__qualname__Ú__doc__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ø   ÚunittestÚ
skipUnlessr
   rú   r  r  r
  r  r  r  r  r  r  r  r  r  r!  r#  r&  r2  r8  r:  r<  r>  r@  rC  rF  rJ  rL  rP  rT  rW  rY  r[  r_  rc  re  rj  r{  rŽ   r§   © ra   r_   rU   rU   T   sd  „ ÙCó5Fón=óFó<ó[óKó
óGó
ó

ó

ó 
ó(TóSó
ó*Xó[ó.Wó
óLóLóRóRóJóOó
ó
óZó	
óZó
ó

Wó(
óT
ó4
ó

ó
ð €X×ÑÐ)Ð+KÓLò	
ó Mð	
ó
ó&
ó	
ó	
ð €X×ÑÐ)Ð+KÓLò
ó Mð
ó
ó

ó
ó
ó,
ó
ó
ó
ó
ó
ó
,
ó\$
óLcó
ó

ó"	
ó
ó
ó
ó
ó
ó(
ó&
ó(
ó&
ó$ó([ó[óFóNð8 )-ð	/)ð Ø%)Øñ/)àð/)ð ð/)ð &ð	/)ð ð/)ð #ð/)ð ð/)ð 
ó/)ðb7Øð7Ø"ð7Ø*/ð7Ø8=ð7ØILð7à	ô7ra   rU   c                  ó$   — e Zd Zdd„Zdd„Zdd„Zy)ÚTestGenerateFunctionc                óx   — t        dt        «      | _        t        t        d«      | _        t        d«      | _        y )NÚargr   )r   r@   r±  r(   r]   r   r”  r�   s    r_   r‹   zTestGenerateFunction.setUp8  s)   € Ü˜e¤^Ó4ˆŒÜœN¨EÓ2ˆŒÜ “]ˆ�
ra   c                óÚ  — | j                   j                  j                  t        | j                  «      «       t        t        dd dt        | j                  gt        «      «      | j                  g| j                   g«      }t        |j                  |j                  «      }t        t        t        dgg«      d«      |«      }t!        ||dd«       |j"                  }t%        g d¢|d¬«       y )	NÚmyfuncry   Tr~  r  )z/CPyTagged CPyDef_myfunc(CPyTagged cpy_r_arg) {
z    return cpy_r_arg;
ú}
úGenerated code invalid©r‡  )r”  rŠ  rZ   r)   r]   r   r   r   r±  r@   r2   Úarg_regsÚblocksr   r   rH   r   rŒ  r   )r^   Úfnr•  r–  Úresults        r_   Útest_simplez TestGenerateFunction.test_simple=  s´   € Ø�
‰
�‰×Ñœf T§X¡XÓ.Ô/ÜÜ�X˜t U¬M¸4¿8¹8¸*ÄnÓ,UÓVØ�X‰XˆJØ�Z‰ZˆLó
ˆô
 ,¨B¯K©K¸¿¹ÓCˆÜœ.¬¸¸°yÓ)AÀ4ÓHÈ+ÓVˆÜ   W¨i¸Ô@Ø×"Ñ"ˆÜ"ÚbØØ(ö	
ra   c                óV  — t        t        «      }t        |t        d«      «      }| j                  j
                  j                  |«       | j                  j
                  j                  t        «       «       t        t        dd dt        | j                  gt        «      «      | j                  g| j                  g«      }t        |j                  |j                   «      }t#        t%        t'        dgg«      d«      |«      }t)        ||dd«       |j*                  }t-        g d¢|d¬	«       y )
Nr™   r³  ry   Tr~  r  )z/PyObject *CPyDef_myfunc(CPyTagged cpy_r_arg) {
z    CPyTagged cpy_r_r0;
z    cpy_r_r0 = 10;
z    CPy_Unreachable();
r´  rµ  r¶  )r(   r@   r   r"   r”  rŠ  rZ   r0   r   r   r   r±  rA   r]   r2   r·  r¸  r   r   rH   r   rŒ  r   )r^   r]   r  r¹  r•  r–  rº  s          r_   Útest_registerz"TestGenerateFunction.test_registerN  sá   € Ü”~Ó&ˆÜ�Cœ ›Ó$ˆØ�
‰
�‰×Ñ˜bÔ!Ø�
‰
�‰×Ñœk›mÔ,ÜÜ�X˜t U¬M¸4¿8¹8¸*ÄoÓ,VÓWØ�X‰XˆJØ�Z‰ZˆLó
ˆô
 ,¨B¯K©K¸¿¹ÓCˆÜœ.¬¸¸°yÓ)AÀ4ÓHÈ+ÓVˆÜ   W¨i¸Ô@Ø×"Ñ"ˆÜ"òð Ø(ö
	
ra   Nr¤  )r§  r¨  r©  r‹   r»  r½  r­  ra   r_   r¯  r¯  7  s   „ ó#ó

ô"
ra   r¯  )gÚ
__future__r   r«  Úmypy.test.helpersr   Úmypyc.codegen.emitr   r   Úmypyc.codegen.emitfuncr   r   Úmypyc.commonr	   r
   r   Úmypyc.ir.class_irr   Úmypyc.ir.func_irr   r   r   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/   r0   r1   Úmypyc.ir.pprintr2   Úmypyc.ir.rtypesr3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   Úmypyc.irbuild.vtablerG   Úmypyc.namegenrH   Úmypyc.primitives.dict_opsrI   rJ   rK   rL   Úmypyc.primitives.int_opsrM   Úmypyc.primitives.list_opsrN   rO   rP   Úmypyc.primitives.misc_opsrQ   Úmypyc.primitives.registryrR   Úmypyc.subtyperS   ÚTestCaserU   r¯  r­  ra   r_   ú<module>rÑ     sÁ   ðÝ "ã å 8ß 6ß Sß GÑ GÝ %ß HÓ H÷"÷ "÷ "÷ "÷ "÷ "÷ "÷ "õ "õF 2÷÷ ÷ ÷ ÷ ó õ, 0Ý '÷ó õ 0ß XÑ XÝ 4Ý 0Ý $ô`7 ×!2Ñ!2ô `7ôF/
˜8×,Ñ,õ /
ra   