o
    2g                     @  sr   d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZmZmZmZ d dlmZ G dd dejZdS )	    )annotationsN)EmitterEmitterContext)
BasicBlockRegisterValue)RTuplebool_rprimitiveint_rprimitivestr_rprimitive)NameGeneratorc                   @  sR   e Zd ZdddZdddZdddZdd	d
ZdddZdddZdddZ	dS )TestEmitterreturnNonec                 C  s"   t td| _ttdgg| _d S )Nnmod)r   r
   r   r   r   context)self r   L/home/garg/my-data/venv/lib/python3.10/site-packages/mypyc/test/test_emit.pysetUp   s   zTestEmitter.setUpc                 C  s&   t | ji }|tddksJ d S )N   CPyL4)r   r   labelr   r   emitterr   r   r   
test_label   s   zTestEmitter.test_labelc                 C  s.   | j di}t| j|}|| j dksJ d S )Nr   cpy_r_n)r   r   r   reg)r   namesr   r   r   r   test_reg   s   
zTestEmitter.test_regc                 C  s@   t | ji }|dddks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   r   object_annotationlistranger   r   r   r   test_object_annotation   s
   z"TestEmitter.test_object_annotationc                 C  s   t | ji }|d |d |d |d |jg dks#J t | ji }|jddd |jd	ttd
d |jd dksDJ |jd dksMJ d S )Nr"   za {zf();})zline;
za {
z	    f();
z}
zCPyStatics[0];r!   )annzCPyStatics[1];r#   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   r   	emit_line	fragmentsr%   r&   r   r   r   r   test_emit_line#   s   



zTestEmitter.test_emit_linec                 C  sF   t | ji }|tdksJ |tdksJ |tdks!J d S )NCPY_INT_TAGNULL2)r   r   c_undefined_valuer
   r   r	   r   r   r   r   )test_emit_undefined_value_for_simple_type5   s   z5TestEmitter.test_emit_undefined_value_for_simple_typec                 C  sd   t | ji }|ttttgdksJ |ttgdks J |tttgtgdks0J d S )Nz&(tuple_T3OIC) { NULL, CPY_INT_TAG, 2 }z(tuple_T1O) { NULL }z(tuple_T2T1OC) { { NULL }, 2 })r   r   r1   r   r   r
   r	   r   r   r   r   #test_emit_undefined_value_for_tuple;   s   z/TestEmitter.test_emit_undefined_value_for_tupleN)r   r   )
__name__
__module____qualname__r   r   r    r'   r-   r2   r3   r   r   r   r   r      s    






r   )
__future__r   unittestmypyc.codegen.emitr   r   mypyc.ir.opsr   r   r   mypyc.ir.rtypesr   r	   r
   r   mypyc.namegenr   TestCaser   r   r   r   r   <module>   s    