§
    ƒÛg[  ã                   ó”  — d Z ddlmZmZ ddlmZmZ ddlmZ ddlm	Z	m
Z
 ddlZ ed¬¦  «        d	„ ¦   «         Zd
„ Z ed¬¦  «        dd„¦   «         Zd„ Z ed¬¦  «        dd„¦   «         Zd„ Zd„ Z ed¬¦  «        d„ ¦   «         Zd„ Z ed¬¦  «        dd„¦   «         Zd„ Z G d„ de	¦  «        Zedk    r ej        ¦   «          dS dS )zd
Test problems in nested calls.
Usually due to invalid type conversion between function boundaries.
é    )Úint32Úint64)ÚjitÚgenerated_jit)Útypes)ÚTestCaseÚtagNT©Únopythonc                 ó   — | ||fS ©N© ©ÚaÚbÚcs      úS/granary/edev/quantum/lib/python3.11/site-packages/numba/tests/test_nested_calls.pyÚf_innerr      ó   € àˆa�ˆ7€Nó    c                 ó&   — t          | ||¬¦  «        S )N)r   r   )r   ©ÚxÚyÚzs      r   Úfr      s   € Ý�1˜˜QÐÑÔÐr   é   é   c                 ó   — | ||fS r   r   r   s      r   Úg_innerr       r   r   c                 óF   — t          | |¬¦  «        t          || ¬¦  «        fS )N)r   )r   r   )r    r   s      r   Úgr"      s$   € Ý�1˜ˆ?‰?Œ?�G a¨1Ð-Ñ-Ô-Ð-Ð-r   é   c                 ó
   — | |fS r   r   ©r   r   s     r   Ú
star_innerr&      s   € àˆaˆ4€Kr   c                 óD   — t          | ¬¦  «        t          | ||¦  «        fS )N)r   ©r&   r   s      r   Ústarr)       s!   € Ý˜ˆ?‰?Œ?�J q¨!¨QÑ/Ô/Ð/Ð/r   c                 ó.   — t          | g|¢R Ž t          |Ž fS r   r(   r   s      r   Ú	star_callr+   #   s!   € Ý�aÐ˜!ÐÐÐ�j¨!˜nÐ,Ð,r   c                 ó(   — |rt          d¦  «        } | S )Nr   )r   r%   s     r   Úargcast_innerr-   &   s   € àð å�!‰HŒHˆØ€Hr   c                 ó<   — t          t          | ¦  «        |¦  «        S r   )r-   r   r%   s     r   Úargcastr/   -   s   € Ý�˜q™œ 1Ñ%Ô%Ð%r   é   c                 óH   — t          | t          j        ¦  «        rd„ }nd„ }|S )Nc                 ó   — | |z   |fS r   r   r   s      r   Úimplzgenerated_inner.<locals>.impl3   ó   € Ø�q‘5˜!�8ˆOr   c                 ó   — | |z
  |fS r   r   r   s      r   r3   zgenerated_inner.<locals>.impl6   r4   r   )Ú
isinstancer   ÚComplex)r   r   r   r3   s       r   Úgenerated_innerr8   0   s>   € å�!•U”]Ñ#Ô#ð ð	ð 	ð 	ð 	ð	ð 	ð 	à€Kr   c                 ó$   — t          | |¬¦  «        S )N)r   )r8   r%   s     r   Úcall_generatedr:   :   s   € Ý˜1 Ð"Ñ"Ô"Ð"r   c                   óX   — e Zd Zdd„Zd„ Zdd„Zd„ Zdd„Zd„ Zd„ Z	dd	„Z
d
„ Zd„ Zd„ ZdS )ÚTestNestedCallFc                 óŒ   ‡ ‡‡— ˆˆˆ fd„}|rt          d¬¦  «        nt          d¬¦  «        } t          di |¤Ž‰¦  «        Š‰|fS )Nc                  óT   •—  ‰| i |¤Ž} ‰| i |¤Ž}‰                      ||¦  «         d S r   )ÚassertPreciseEqual)ÚargsÚkwargsÚexpectedÚresultr   ÚpyfuncÚselfs       €€€r   Úcheckz*TestNestedCall.compile_func.<locals>.checkA   sG   ø€ Ø�v˜tÐ. vÐ.Ð.ˆHØ�Q˜Ð' Ð'Ð'ˆFØ×#Ò# F¨HÑ5Ô5Ð5Ð5Ð5r   T)Úforceobjr
   r   )Údictr   )rE   rD   ÚobjmoderF   Úflagsr   s   ``   @r   Úcompile_funczTestNestedCall.compile_func@   sq   øøø€ ð	6ð 	6ð 	6ð 	6ð 	6ð 	6ð 	6ð (/ÐG•˜dÐ#Ñ#Ô#Ð#µDÀ$Ð4GÑ4GÔ4GˆØ�CˆLˆL�%ˆLˆL˜Ñ Ô ˆØ�%ˆxˆr   c                 óè   ‡— t          d¬¦  «        d„ ¦   «         Št          d¬¦  «        ˆfd„¦   «         }|                       |d¦  «        ¦  «         |                       |d¦  «        ¦  «         d S )NTr
   c                 ó   — |  S r   r   )r   s    r   Úinnerz1TestNestedCall.test_boolean_return.<locals>.innerJ   s	   € à�5ˆLr   c                 ó"   •—  ‰| ¦  «        rdS dS )NTFr   )r   rN   s    €r   Úouterz1TestNestedCall.test_boolean_return.<locals>.outerN   s   ø€ àˆu�Q‰xŒxð Ø�tà�ur   F)r   ÚassertFalseÚ
assertTrue)rE   rP   rN   s     @r   Útest_boolean_returnz"TestNestedCall.test_boolean_returnI   s—   ø€ Ý	�dÐ	Ñ	Ô	ð	ð 	ñ 
Ô	ð	õ 
�dÐ	Ñ	Ô	ð	ð 	ð 	ð 	ñ 
Ô	ð	ð 	×Ò˜˜˜t™œÑ%Ô%Ð%Ø�Š˜˜˜e™œÑ%Ô%Ð%Ð%Ð%r   c                 óx   — |                       t          |¦  «        \  }} |ddd¦  «          |ddd¬¦  «         dS )zM
        Test a nested function call with named (keyword) arguments.
        é   r   r   ©r   r   N)rK   r   ©rE   rI   ÚcfuncrF   s       r   Útest_named_argszTestNestedCall.test_named_argsX   óK   € ð ×(Ò(­¨GÑ4Ô4‰ˆˆuØˆˆa��A‰ŒˆØˆˆa�1˜ÐÑÔÐÐÐr   c                 ó2   — |                       d¬¦  «         d S ©NT)rI   )rY   ©rE   s    r   Útest_named_args_objmodez&TestNestedCall.test_named_args_objmode`   s   € Ø×Ò TÐÑ*Ô*Ð*Ð*Ð*r   c                 óx   — |                       t          |¦  «        \  }} |ddd¦  «          |ddd¬¦  «         dS )zL
        Test a nested function call using default argument values.
        rU   r   r   rV   N)rK   r"   rW   s       r   Útest_default_argsz TestNestedCall.test_default_argsc   rZ   r   c                 ó2   — |                       d¬¦  «         d S r\   )r`   r]   s    r   Útest_default_args_objmodez(TestNestedCall.test_default_args_objmodek   s   € Ø×Ò tÐÑ,Ô,Ð,Ð,Ð,r   c                 óZ   — |                       t          ¦  «        \  }} |ddd¦  «         dS )zX
        Test a nested function call to a function with *args in its signature.
        rU   r   r   N)rK   r)   ©rE   rX   rF   s      r   Útest_star_argszTestNestedCall.test_star_argsn   s0   € ð ×(Ò(­Ñ.Ô.‰ˆˆuØˆˆa��A‰Œˆˆˆr   c                 ó\   — |                       t          |¦  «        \  }} |ddd¦  «         dS )z4
        Test a function call with a *args.
        rU   )r   )r   N)rK   r+   rW   s       r   Útest_star_callzTestNestedCall.test_star_callu   s7   € ð ×(Ò(­°GÑ<Ô<‰ˆˆuØˆˆa��tÑÔÐÐÐr   c                 ó2   — |                       d¬¦  «         d S r\   )rg   r]   s    r   Útest_star_call_objmodez%TestNestedCall.test_star_call_objmode|   s   € Ø×Ò DÐÑ)Ô)Ð)Ð)Ð)r   c                 óp   — |                       t          ¦  «        \  }} |dd¦  «          |dd¦  «         dS )zm
        Issue #1488: implicitly casting an argument variable should not
        break nested calls.
        rU   r   N)rK   r/   rd   s      r   Útest_argcastzTestNestedCall.test_argcast   s=   € ð
 ×(Ò(­Ñ1Ô1‰ˆˆuØˆˆa�‰ŒˆØˆˆa�‰Œˆˆˆr   c                 óÂ   —  t          d¬¦  «        t          ¦  «        }|                       |dd¦  «        d¦  «         |                       |dd¦  «        d¦  «         dS )	zJ
        Test a nested function call to a generated jit function.
        Tr
   rU   r   )éüÿÿÿr   y              ð?)y      @      ð?r   N)r   r:   r?   )rE   rX   s     r   Útest_call_generatedz"TestNestedCall.test_call_generatedˆ   sd   € ð #•˜TÐ"Ñ"Ô"¥>Ñ2Ô2ˆØ×Ò   a¨¡¤¨WÑ5Ô5Ð5Ø×Ò   b¨!¡¤¨kÑ:Ô:Ð:Ð:Ð:r   N)F)Ú__name__Ú
__module__Ú__qualname__rK   rS   rY   r^   r`   rb   re   rg   ri   rk   rn   r   r   r   r<   r<   >   sÍ   € € € € € ðð ð ð ð&ð &ð &ðð ð ð ð+ð +ð +ðð ð ð ð-ð -ð -ðð ð ðð ð ð ð*ð *ð *ðð ð ð;ð ;ð ;ð ;ð ;r   r<   Ú__main__)r   r   )r#   )r#   r0   )Ú__doc__Únumbar   r   r   r   Ú
numba.corer   Únumba.tests.supportr   r	   Úunittestr   r   r    r"   r&   r)   r+   r-   r/   r8   r:   r<   ro   Úmainr   r   r   ú<module>ry      s  ððð ð Ð Ð Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø €€€ð €ˆdÐÑÔðð ñ Ôðð ð  ð  ð €ˆdÐÑÔðð ð ñ Ôðð.ð .ð .ð €ˆdÐÑÔðð ð ñ Ôðð0ð 0ð 0ð-ð -ð -ð €ˆdÐÑÔðð ñ Ôðð&ð &ð &ð €˜ÐÑÔðð ð ñ Ôðð#ð #ð #ðP;ð P;ð P;ð P;ð P;�Xñ P;ô P;ð P;ðf ˆzÒÐØ€H„M�O„O€O€O€Oð Ðr   