
    xKg                     ^   d Z ddlmZmZ ddlmZ ddl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ddZ ee      dd       Zd Z G d de
      Zedk(  r ej6                          yy)zd
Test problems in nested calls.
Usually due to invalid type conversion between function boundaries.
    )int32int64)jit)types)overload)TestCasetagNTnopythonc                     | ||fS N abcs      a/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_nested_calls.pyf_innerr          a7N    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                 6    t        | |      t        ||       fS )N)r   )r   r   )r   r   s      r   gr       s    1?Ga1---r   c                 
    | |fS r   r   r   r   s     r   
star_innerr#      s    a4Kr   c                 4    t        |       t        | ||      fS )N)r   r#   r   s      r   starr&   !   s    ?Jq!Q///r   c                 *    t        | g| 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Hr   c                 ,    t        t        |       |      S r   )r*   r   r"   s     r   argcastr,   .   s    q1%%r   c                     J d       )Nunreachabler   r   s      r   generated_innerr/   2   s    m1r   c                 N    t        | t        j                        rdd}|S dd}|S )Nc                     | |z   |fS r   r   r   s      r   implz ol_generated_inner.<locals>.impl9       q5!8Or   c                     | |z
  |fS r   r   r   s      r   r2   z ol_generated_inner.<locals>.impl<   r3   r         )
isinstancer   Complex)r   r   r   r2   s       r   ol_generated_innerr:   6   s&    !U]]#	
 K	Kr   c                     t        | |      S )N)r   )r/   r"   s     r   call_generatedr<   A   s    1""r   c                   V    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y)TestNestedCallc                 t      fd}|rt        d      nt        d      } t        di |      |fS )Nc                  J     | i |} | i |}j                  ||       y r   )assertPreciseEqual)argskwargsexpectedresultr   pyfuncselfs       r   checkz*TestNestedCall.compile_func.<locals>.checkH   s1    t.v.H''F##FH5r   T)forceobjr
   r   )dictr   )rG   rF   objmoderH   flagsr   s   ``   @r   compile_funczTestNestedCall.compile_funcG   s8    	6 (/d#D$4GCL%L %xr   c                     t        d      d        t        d      fd       }| j                   |d             | j                   |d             y )NTr
   c                     |  S r   r   )r   s    r   innerz1TestNestedCall.test_boolean_return.<locals>.innerQ   s	    5Lr   c                      |       ryy)NTFr   )r   rP   s    r   outerz1TestNestedCall.test_boolean_return.<locals>.outerU   s    Qxr   F)r   assertFalse
assertTrue)rG   rR   rP   s     @r   test_boolean_returnz"TestNestedCall.test_boolean_returnP   sW    	d		 
	 
d		 
	 	t%e%r   c                 `    | j                  t        |      \  }} |ddd        |ddd       y)zM
        Test a nested function call with named (keyword) arguments.
                 r   r   N)rM   r   rG   rK   cfuncrH   s       r   test_named_argszTestNestedCall.test_named_args_   1     ((G4uaAa1r   c                 (    | j                  d       y NT)rK   )r]   rG   s    r   test_named_args_objmodez&TestNestedCall.test_named_args_objmodeg   s    T*r   c                 `    | j                  t        |      \  }} |ddd        |ddd       y)zL
        Test a nested function call using default argument values.
        rW   rX   rY   rZ   N)rM   r    r[   s       r   test_default_argsz TestNestedCall.test_default_argsj   r^   r   c                 (    | j                  d       y r`   )rd   ra   s    r   test_default_args_objmodez(TestNestedCall.test_default_args_objmoder   s    t,r   c                 H    | j                  t              \  }} |ddd       y)zX
        Test a nested function call to a function with *args in its signature.
        rW   rX   rY   N)rM   r&   rG   r\   rH   s      r   test_star_argszTestNestedCall.test_star_argsu   s#     ((.uaAr   c                 J    | j                  t        |      \  }} |ddd       y)z4
        Test a function call with a *args.
        rW   )rX   )rY   N)rM   r(   r[   s       r   test_star_callzTestNestedCall.test_star_call|   s&     ((G<uatr   c                 (    | j                  d       y r`   )rk   ra   s    r   test_star_call_objmodez%TestNestedCall.test_star_call_objmode   s    D)r   c                 X    | j                  t              \  }} |dd        |dd       y)zm
        Issue #1488: implicitly casting an argument variable should not
        break nested calls.
        rW   r   N)rM   r,   rh   s      r   test_argcastzTestNestedCall.test_argcast   s*    
 ((1uaar   c                      t        d      t              }| j                   |dd      d       | j                   |dd      d       y)	zJ
        Test a nested function call to a generated jit function.
        Tr
   rW   rX   )rX   y              ?)y      @      ?rX   N)r   r<   rA   )rG   r\   s     r   test_call_generatedz"TestNestedCall.test_call_generated   sA     #T">2aW5b!k:r   N)F)__name__
__module____qualname__rM   rU   r]   rb   rd   rf   ri   rk   rm   ro   rr   r   r   r   r>   r>   E   s9    &+-*;r   r>   __main__)rX   rY   )r6   r5   )__doc__numbar   r   r   
numba.corer   numba.extendingr   numba.tests.supportr   r	   unittestr   r   r   r    r#   r&   r(   r*   r,   r/   r:   r<   r>   rs   mainr   r   r   <module>r~      s       $ -  d   d . d 0- d & 
/ #P;X P;f zHMMO r   