Ë
    pPêjë  ã                  ó  — d dl mZ d dlZd dlmZmZ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mZmZmZmZmZm Z m!Z!m"Z"m#Z# dd	„Z$dd
„Z% ed e ¬«      Z& G d„ dejN                  «      Z(y)é    )ÚannotationsN)ÚFnErrorÚcan_coerce_toÚcheck_func_ir)ÚClassIR)ÚFuncDeclÚFuncIRÚFuncSignature)	ÚAssignÚ
BasicBlockÚGotoÚIntegerÚLoadAddressÚLoadLiteralÚOpÚRegisterÚReturn)Úformat_func)
Ú	RInstanceÚRTypeÚRUnionÚbytes_rprimitiveÚint32_rprimitiveÚint64_rprimitiveÚnone_rprimitiveÚobject_rprimitiveÚpointer_rprimitiveÚstr_rprimitivec                ó*   — t        | «      }||gk(  sJ ‚y ©N©r   )ÚfnÚerrorÚerrorss      ú\/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/test/test_ircheck.pyÚassert_has_errorr&   "   s   € Ü˜2Ó€FØ�e�WÒÐÑó    c                ó   — t        | «      rJ ‚y r    r!   )r"   s    r%   Úassert_no_errorsr)   '   s   € Ü˜RÔ Ð Ð Ð r'   )Úrtypec                  ó†   — e Zd Zdd„Zdd„Zd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y)ÚTestIrcheckc                ó   — d| _         y )Nr   ©Úlabel©Úselfs    r%   ÚsetUpzTestIrcheck.setUp/   s	   € Øˆ�
r'   c                óh   — | xj                   dz  c_         t        | j                   «      }||_        |S )Né   )r/   r   Úops)r1   r5   Úblocks      r%   Úbasic_blockzTestIrcheck.basic_block2   s)   € Ø�
Š
�a‰�
Ü˜4Ÿ:™:Ó&ˆØˆŒ	Øˆr'   Nc           	     óF   — |€t         }t        |d dt        g |¬«      ¬«      S )NÚmodule)ÚargsÚret_type)ÚnameÚ
class_nameÚmodule_nameÚsig)r   r   r
   )r1   r<   r;   s      r%   Ú	func_declzTestIrcheck.func_decl8   s-   € ØÐÜ&ˆHÜØØØ Ü 2°Ô9ô	
ð 	
r'   c                ó’   — t        t        | j                  d¬«      g | j                  t	        t
        ¬«      g¬«      g¬«      «       y )NÚfunc_1©r<   ©Úvalue©r5   ©ÚdeclÚarg_regsÚblocks)r)   r	   r@   r7   r   Ú
NONE_VALUEr0   s    r%   Útest_valid_fnzTestIrcheck.test_valid_fnB   s?   € ÜÜØ—^‘^¨�^Ó2ØØ×(Ñ(¬f¼:Ô.FÐ-GÐ(ÓHÐIôõ	
r'   c                ó’   — | j                  g «      }t        | j                  d¬«      g |g¬«      }t        |t	        |d¬«      «       y )NrB   rC   rG   zBlock not terminated©ÚsourceÚdesc)r7   r	   r@   r&   r   )r1   r6   r"   s      r%   Ú%test_block_not_terminated_empty_blockz1TestIrcheck.test_block_not_terminated_empty_blockK   s?   € Ø× Ñ  Ó$ˆÜ˜Ÿ™¨X˜Ó6ÀÈUÈGÔTˆÜ˜œW¨EÐ8NÔOÕPr'   c                óÒ   — | j                  t        t        ¬«      g«      }| j                  t        |¬«      g«      }t	        | j                  d¬«      g ||g¬«      }t        |«       y )NrD   r.   rB   rC   rG   )r7   r   rK   r   r	   r@   r)   )r1   Úblock_1Úblock_2r"   s       r%   Útest_valid_gotozTestIrcheck.test_valid_gotoP   sY   € Ø×"Ñ"¤F´Ô$<Ð#=Ó>ˆØ×"Ñ"¤D¨wÔ$7Ð#8Ó9ˆÜ˜Ÿ™¨X˜Ó6ÀÈWÐV]ÐL^Ô_ˆÜ˜Õr'   c                óì   — | j                  t        t        ¬«      g«      }t        |¬«      }| j                  |g«      }t	        | j                  d¬«      g |g¬«      }t        |t        |d¬«      «       y )NrD   r.   rB   rC   rG   ú#Invalid control operation target: 1rN   )r7   r   rK   r   r	   r@   r&   r   )r1   rS   ÚgotorT   r"   s        r%   Útest_invalid_gotozTestIrcheck.test_invalid_gotoV   sj   € Ø×"Ñ"¤F´Ô$<Ð#=Ó>ˆÜ˜'Ô"ˆØ×"Ñ" D 6Ó*ˆÜØ—‘ X�Ó.Øà�9ô	
ˆô 	˜œW¨DÐ7\Ô]Õ^r'   c                óÊ   — t        t        t        d¬«      ¬«      }| j                  |g«      }t	        | j                  d¬«      g |g¬«      }t        |t        |d¬«      «       y )	NÚr1©Útyper<   rD   rB   rC   rG   z%Invalid op reference to register 'r1'rN   )r   r   r   r7   r	   r@   r&   r   ©r1   Úretr6   r"   s       r%   Útest_invalid_register_sourcez(TestIrcheck.test_invalid_register_sourceb   sR   € Üœ8¬¸tÔDÔEˆØ× Ñ  # Ó'ˆÜ˜Ÿ™¨X˜Ó6ÀÈUÈGÔTˆÜ˜œW¨CÐ6]Ô^Õ_r'   c                óÊ   — t        t        dt        ¬«      ¬«      }| j                  |g«      }t	        | j                  d¬«      g |g¬«      }t        |t        |d¬«      «       y )	NÚfoo©rE   r*   rD   rB   rC   rG   z.Invalid op reference to op of type LoadLiteralrN   )r   r   r   r7   r	   r@   r&   r   r^   s       r%   Útest_invalid_op_sourcez"TestIrcheck.test_invalid_op_sourceh   sU   € Üœ;¨U¼.ÔIÔJˆØ× Ñ  # Ó'ˆÜ˜Ÿ™¨X˜Ó6ÀÈUÈGÔTˆÜØ”˜sÐ)YÔZõ	
r'   c                óÐ   — t        t        dt        ¬«      ¬«      }t        | j	                  dt
        ¬«      g | j                  |g«      g¬«      }t        |t        |d¬«      «       y )	Né   rc   rD   rB   )r<   r;   rG   ú.Cannot coerce source type i32 to dest type i64rN   )	r   r   r   r	   r@   r   r7   r&   r   )r1   r_   r"   s      r%   Útest_invalid_return_typez$TestIrcheck.test_invalid_return_typep   s\   € Üœ7¨Ô2BÔCÔDˆÜØ—‘ XÔ8H�ÓIØØ×$Ñ$ c UÓ+Ð,ô
ˆô
 	Ø”˜sÐ)YÔZõ	
r'   c                ó  — t        t        d¬«      }t        |t        dt        ¬«      ¬«      }t        t        ¬«      }t        | j                  d¬«      |g| j                  ||g«      g¬	«      }t        |t        |d
¬«      «       y )Nr[   r\   rf   rc   ©ÚdestÚsrcrD   rB   rC   rG   rg   rN   )r   r   r   r   r   r   rK   r	   r@   r7   r&   r   )r1   Úarg_regÚassignr_   r"   s        r%   Útest_invalid_assignzTestIrcheck.test_invalid_assign{   sv   € ÜÔ 0°tÔ<ˆÜ˜W¬'¸ÔAQÔ*RÔSˆÜœ:Ô&ˆÜØ—‘ X�Ó.Ø�YØ×$Ñ$ f¨c ]Ó3Ð4ô
ˆô
 	Ø”˜vÐ,\Ô]õ	
r'   c           
     ó²  — t        dd¬«      }t        t        ft        t        ft        t        ft        t        ft	        t
        t        g«      t        ft        t	        t
        t        g«      ft        |«      t        fg}t        t        ft        |«      t        ft        t
        fg}|D ]  \  }}t        ||«      rŒJ ‚ |D ]  \  }}t        ||«      sŒJ ‚ y )NÚClsÚcls)r<   r>   )	r   r   r   r   r   r   r   r   r   )r1   rr   Úvalid_casesÚinvalid_casesrl   rk   s         r%   Útest_can_coerce_tozTestIrcheck.test_can_coerce_toˆ   sÙ   € Ü˜5¨eÔ4ˆäÔ/Ð0Üœ^Ð,ÜÔ.Ð/Ü¤Ð/ÜÔ%¤~Ð6Ó7¼ÐHÜœVÔ%5´~Ð$FÓGÐHÜ�s‹^Ô.Ð/ð
ˆô Ô/Ð0Ü�s‹^œ^Ð,ÜÔ-Ð.ð
ˆð %ò 	,‰IˆC�Ü   dÕ+Ð+Ð+ð	,à&ò 	0‰IˆC�Ü$ S¨$Õ/Ð/Ð/ñ	0r'   c                ó  — t        t        d¬«      }t        |t        dt        ¬«      ¬«      }| j	                  ||t        t        ¬«      g«      }t        | j                  d¬«      g |g¬	«      }t        |t        |d
¬«      «       y )Nr[   r\   rf   rc   rj   rD   rB   rC   rG   zFunc has a duplicate oprN   )r   r   r   r   r7   r   rK   r	   r@   r&   r   )r1   rm   rn   r6   r"   s        r%   Útest_duplicate_opzTestIrcheck.test_duplicate_opŸ   sl   € ÜÔ 0°tÔ<ˆÜ˜W¬'¸ÔAQÔ*RÔSˆØ× Ñ  &¨&´&¼zÔ2JÐ!KÓLˆÜ˜Ÿ™¨X˜Ó6ÀÈUÈGÔTˆÜ˜œW¨FÐ9RÔSÕTr'   c                óò   — | j                  t        t        ¬«      g«      }t        |¬«      }| j                  |g«      }t	        | j                  d¬«      g |g¬«      }|dfg}t        ||«      }|g d¢k(  sJ ‚y )NrD   r.   rB   rC   rG   rW   )zdef func_1():zL0:u    â�Œ goto L1u3       ðŸ‘† ERROR: Invalid control operation target: 1)r7   r   rK   r   r	   r@   r   )r1   rS   rX   rT   r"   r$   Ú	formatteds          r%   Útest_pprintzTestIrcheck.test_pprint¦   s‰   € Ø×"Ñ"¤F´Ô$<Ð#=Ó>ˆÜ˜'Ô"ˆØ×"Ñ" D 6Ó*ˆÜØ—‘ X�Ó.Øà�9ô	
ˆð Ð>Ð?Ð@ˆÜ  FÓ+ˆ	Øò 
ò 
ð 	
ñ 
r'   c                ó
  — t        t        d«      }t        t        d«      }t        t        |«      }t	        t        | j                  d¬«      g | j                  |t        ||«      t        t        ¬«      g¬«      g¬«      «       y )NÚxÚyrB   rC   rD   rF   rG   )r   r   r   r   r)   r	   r@   r7   r   r   rK   )r1   ÚrxÚryÚ	load_addrs       r%   Ú#test_load_address_declares_registerz/TestIrcheck.test_load_address_declares_register¹   sw   € Ü”n cÓ*ˆÜÔ(¨#Ó.ˆÜÔ 2°BÓ7ˆ	ÜÜØ—^‘^¨�^Ó2Øà×$Ñ$Ø&¬¨r°9Ó(=¼vÌJÔ?WÐXð %ó ðôõ
	
r'   )ÚreturnÚNone)r5   zlist[Op]r‚   r   r    )r<   Ústrr;   zRType | Noner‚   r   )Ú__name__Ú
__module__Ú__qualname__r2   r7   r@   rL   rQ   rU   rY   r`   rd   rh   ro   ru   rw   rz   r�   © r'   r%   r,   r,   .   sQ   „ óóô
ó
óQó
ó
_ó`ó
ó	
ó
ó0ó.Uó
ô&
r'   r,   )r"   r	   r#   r   r‚   rƒ   )r"   r	   r‚   rƒ   ))Ú
__future__r   ÚunittestÚmypyc.analysis.ircheckr   r   r   Úmypyc.ir.class_irr   Úmypyc.ir.func_irr   r	   r
   Úmypyc.ir.opsr   r   r   r   r   r   r   r   r   Úmypyc.ir.pprintr   Úmypyc.ir.rtypesr   r   r   r   r   r   r   r   r   r   r&   r)   rK   ÚTestCaser,   rˆ   r'   r%   ú<module>r’      si   ðÝ "ã ç HÑ HÝ %ß <Ñ <÷
÷ 
õ 
õ (÷÷ ÷ óó
!ñ �Q˜oÔ.€
ôY
�(×#Ñ#õ Y
r'   