
    X-Ph                        d dl mZ d dlZd dlmZ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mZmZmZmZmZmZmZmZ d dlmZ d d	lmZ  G d
 dej                  ZdS )    )annotationsN)EmitterEmitterContext)HAVE_IMMORTAL)ClassIR)
BasicBlockRegisterValue)		RInstanceRTupleRUnionbool_rprimitiveint_rprimitivelist_rprimitivenone_rprimitiveobject_rprimitivestr_rprimitive)compute_vtable)NameGeneratorc                      e Zd ZddZddZddZddZddZddZdd	Z	dd
Z
ddZddZddZddZddZddZddZddZddZddZddZddZdS )TestEmitterreturnNonec                *   t          t          d          | _        t          t	          dgg                    | _        t          | j        i           | _        t          dd          }t          |           |g|_
        t          |          | _        d S )NnmodA)r	   r   r   r   r   contextr   emitterr   r   mror   
instance_a)selfirs     T/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypyc/test/test_emit.pysetUpzTestEmitter.setUp   sx    .#..%meWI&>&>??t|R00S%  r#B--    c                `    | j                             t          d                    dk    sJ d S )N   CPyL4)r   labelr   r"   s    r$   
test_labelzTestEmitter.test_label#   s/    |!!*Q--00G;;;;;;r&   c                    | j         di}t          | j        |          }|                    | j                   dk    sJ d S )Nr   cpy_r_n)r   r   r   reg)r"   namesr   s      r$   test_regzTestEmitter.test_reg&   sC    #'63-$,..{{46""i//////r&   c                    | j                             dd          dk    sJ | j                             t          t          d                    d          dk    sJ d S )Nhello, worldline;z /* 'hello, world' */   z~ /* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
         23, 24, 25, 26, 27, 28, 29] */)r   object_annotationlistranger+   s    r$   test_object_annotationz"TestEmitter.test_object_annotation+   sj    |--ngFFJaaaaaL**4b		??GDD++ + + + + +r&   c                   | j         }|                    d           |                    d           |                    d           |                    d           |j        g dk    sJ t          | j        i           }|                    dd           |                    d	t          t          d
                               |j        d         dk    sJ |j        d         dk    sJ d S )Nr4   za {zf();})zline;
za {
z	    f();
z}
zCPyStatics[0];r3   )annzCPyStatics[1];r5   r   z$CPyStatics[0]; /* 'hello, world' */
   zCPyStatics[1]; /* [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
                  21, 22, 23, 24, 25, 26, 27, 28, 29] */
)r   	emit_line	fragmentsr   r   r7   r8   r"   r   s     r$   test_emit_linezTestEmitter.test_emit_line4   s   ,'"""%   &!!!# $M$M$MMMMM$,++*???*U2YY@@@ #'NNNNNa >> > > > > >r&   c                    | j         }|                    t                    dk    sJ |                    t                    dk    sJ |                    t                    dk    sJ d S )NCPY_INT_TAGNULL2)r   c_undefined_valuer   r   r   r@   s     r$   )test_emit_undefined_value_for_simple_typez5TestEmitter.test_emit_undefined_value_for_simple_typeF   sl    ,((88MIIII((88FBBBB((99S@@@@@@r&   c                h   | j         }|                    t          t          t          t
          g                    dk    sJ |                    t          t          g                    dk    sJ |                    t          t          t          g          t
          g                    dk    sJ d S )Nz&(tuple_T3OIC) { NULL, CPY_INT_TAG, 2 }z(tuple_T1O) { NULL }z(tuple_T2T1OC) { { NULL }, 2 })r   rF   r   r   r   r   r@   s     r$   #test_emit_undefined_value_for_tuplez/TestEmitter.test_emit_undefined_value_for_tupleL   s    ,%%fnno-^&_&_``78 8 8 8 ((0@)A)ABBF\\\\\%%ffn5E.F.F-X&Y&YZZ/0 0 0 0 0 0r&   c                p    | j                             dt                     |                     d           d S )NxCPy_INCREF(x);
)r   emit_inc_refr   assert_outputr+   s    r$   test_emit_inc_ref_objectz$TestEmitter.test_emit_inc_ref_objectX   s6    !!#'8999-.....r&   c                p    | j                             dt                     |                     d           d S )NrK   zCPyTagged_INCREF(x);
)r   rM   r   rN   r+   s    r$   test_emit_inc_ref_intz!TestEmitter.test_emit_inc_ref_int\   s5    !!#~666344444r&   c                    | j                             dt          d           |                     d           | j                             dt          d           |                     d           d S )NrK   TrarerL   zCPyTagged_IncRef(x);
)r   rM   r   rN   r   r+   s    r$   test_emit_inc_ref_rarez"TestEmitter.test_emit_inc_ref_rare`   m    !!#'8t!DDD-...!!#~D!AAA344444r&   c                    | j                             dt                     t          r|                     d           d S |                     d           d S NrK   zCPy_INCREF_NO_IMM(x);
rL   )r   rM   r   r   rN   r+   s    r$   test_emit_inc_ref_listz"TestEmitter.test_emit_inc_ref_listf   sX    !!#777 	3899999122222r&   c                    | j                             d| j                   t          r|                     d           d S |                     d           d S rX   )r   rM   r!   r   rN   r+   s    r$   test_emit_inc_ref_instancez&TestEmitter.test_emit_inc_ref_instancem   sZ    !!#t777 	3899999122222r&   c                    t          | j        t          g          }| j                            d|           |                     d           d S )NozCPy_INCREF(o);
)r   r!   r   r   rM   rN   r"   optionals     r$   test_emit_inc_ref_optionalz&TestEmitter.test_emit_inc_ref_optionalt   I    4?O<==!!#x000-.....r&   c                    | j                             dt                     |                     d           | j                             dt          d           |                     d           d S )NrK   CPy_DECREF(x);
Tis_xdecCPy_XDECREF(x);
)r   emit_dec_refr   rN   r+   s    r$   test_emit_dec_ref_objectz$TestEmitter.test_emit_dec_ref_objecty   si    !!#'8999-...!!#'8$!GGG./////r&   c                    | j                             dt                     |                     d           | j                             dt          d           |                     d           d S )NrK   zCPyTagged_DECREF(x);
Trd   zCPyTagged_XDECREF(x);
)r   rg   r   rN   r+   s    r$   test_emit_dec_ref_intz!TestEmitter.test_emit_dec_ref_int   sg    !!#~6663444!!#~t!DDD455555r&   c                    | j                             dt          d           |                     d           | j                             dt          d           |                     d           d S )NrK   TrS   zCPy_DecRef(x);
zCPyTagged_DecRef(x);
)r   rg   r   rN   r   r+   s    r$   test_emit_dec_ref_rarez"TestEmitter.test_emit_dec_ref_rare   rV   r&   c                T   | j                             dt                     t          r|                     d           n|                     d           | j                             dt          d           t          r|                     d           d S |                     d           d S NrK   zCPy_DECREF_NO_IMM(x);
rc   Trd   zCPy_XDECREF_NO_IMM(x);
rf   )r   rg   r   r   rN   r+   s    r$   test_emit_dec_ref_listz"TestEmitter.test_emit_dec_ref_list   s    !!#777 	3899991222!!#!EEE 	49:::::233333r&   c                T   | j                             d| j                   t          r|                     d           n|                     d           | j                             d| j        d           t          r|                     d           d S |                     d           d S rn   )r   rg   r!   r   rN   r+   s    r$   test_emit_dec_ref_instancez&TestEmitter.test_emit_dec_ref_instance   s    !!#t777 	3899991222!!#t!EEE 	49:::::233333r&   c                    t          | j        t          g          }| j                            d|           |                     d           d S )Nr]   zCPy_DECREF(o);
)r   r!   r   r   rg   rN   r^   s     r$   test_emit_dec_ref_optionalz&TestEmitter.test_emit_dec_ref_optional   ra   r&   expectedstrc                h    d                     | j        j                  |k    sJ g | j        _        d S )N )joinr   r?   )r"   rt   s     r$   rN   zTestEmitter.assert_output   s4    wwt|-..(::::!#r&   N)r   r   )rt   ru   r   r   )__name__
__module____qualname__r%   r,   r1   r9   rA   rG   rI   rO   rQ   rU   rY   r[   r`   rh   rj   rl   ro   rq   rs   rN    r&   r$   r   r      s       ( ( ( (< < < <0 0 0 0

 
 
 

 
 
 
$A A A A

 

 

 

/ / / /5 5 5 55 5 5 53 3 3 33 3 3 3/ / / /
0 0 0 06 6 6 65 5 5 5
4 
4 
4 
4
4 
4 
4 
4/ / / /
$ $ $ $ $ $r&   r   )
__future__r   unittestmypyc.codegen.emitr   r   mypyc.commonr   mypyc.ir.class_irr   mypyc.ir.opsr   r	   r
   mypyc.ir.rtypesr   r   r   r   r   r   r   r   r   mypyc.irbuild.vtabler   mypyc.namegenr   TestCaser   r|   r&   r$   <module>r      sO   " " " " " "  6 6 6 6 6 6 6 6 & & & & & & % % % % % % 4 4 4 4 4 4 4 4 4 4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 0 / / / / / ' ' ' ' ' 'R$ R$ R$ R$ R$(# R$ R$ R$ R$ R$r&   