
    wi                        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	 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def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njit)types)overload)TestCasetagNTnopythonc                     | ||fS N abcs      m/root/.openclaw/workspace/chatterbox_venv_py311/lib/python3.11/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                 F    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                 D    t          |           t          | ||          fS )N)r   r'   r   s      r   starr*   !   s!    ???Jq!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     !HHHr   c                 <    t          t          |           |          S r   )r.   r   r&   s     r   argcastr0   .   s    q1%%%r      c                     J d            )Nr   unreachabler   r   s      r   generated_innerr4   2   s    m1r   c                 L    t          | t          j                  rdd}ndd}|S )Nr$   r1   c                     | |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   r7   z ol_generated_inner.<locals>.impl<   r8   r   r$   r1   )
isinstancer   Complex)r   r   r   r7   s       r   ol_generated_innerr=   6   sH    !U]## 	 	 	 	 		 	 	 	Kr   c                 $    t          | |          S )N)r   )r4   r&   s     r   call_generatedr?   A   s    1""""r   returnc                  *    dt           dt           fd} dS )N	inner_argr@   c                     | S r   r   )rB   s    r   innerznested_annotated.<locals>.innerF   s    r      )int)rD   s    r   nested_annotatedrG   E   s)         1r   c                   ^    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 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>.checkN   sG    vt.v..HQ'''F##FH55555r   T)forceobjr   r   )dictr   )rR   rQ   objmoderS   flagsr   s   ``   @r   compile_funczTestNestedCall.compile_funcM   sq    	6 	6 	6 	6 	6 	6 	6 (/Gd####D$4G4G4GCLL%LL  %xr   c                     t          d          d             t          d          fd            }|                      |d                     |                      |d                     d S )NTr   c                     |  S r   r   )r   s    r   rD   z1TestNestedCall.test_boolean_return.<locals>.innerW   s	    5Lr   c                 "     |           rdS dS )NTFr   )r   rD   s    r   outerz1TestNestedCall.test_boolean_return.<locals>.outer[   s    uQxx tur   F)r   assertFalse
assertTrue)rR   r\   rD   s     @r   test_boolean_returnz"TestNestedCall.test_boolean_returnV   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.
        rE   r   r   r   r   N)rX   r   rR   rV   cfuncrS   s       r   test_named_argszTestNestedCall.test_named_argse   K     ((G44uaAa1r   c                 2    |                      d           d S NT)rV   )rd   rR   s    r   test_named_args_objmodez&TestNestedCall.test_named_args_objmodem   s    T*****r   c                 x    |                      t          |          \  }} |ddd            |ddd           dS )zL
        Test a nested function call using default argument values.
        rE   r   r   ra   N)rX   r#   rb   s       r   test_default_argsz TestNestedCall.test_default_argsp   re   r   c                 2    |                      d           d S rg   )rk   rh   s    r   test_default_args_objmodez(TestNestedCall.test_default_args_objmodex   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.
        rE   r   r   N)rX   r*   rR   rc   rS   s      r   test_star_argszTestNestedCall.test_star_args{   s0     ((..uaAr   c                 \    |                      t          |          \  }} |ddd           dS )z4
        Test a function call with a *args.
        rE   )r   )r   N)rX   r,   rb   s       r   test_star_callzTestNestedCall.test_star_call   s7     ((G<<uatr   c                 2    |                      d           d S rg   )rr   rh   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.
        rE   r   N)rX   r0   ro   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   rE   r   )r   y              ?)y      @      ?r   N)r   r?   rL   rR   rc   s     r   test_call_generatedz"TestNestedCall.test_call_generated   sd     #T""">22aW555b!k:::::r   c                 R     t                      t                    } |             dS )z<
        Tested a nested function with annotations.
        N)r   rG   ry   s     r   test_nested_annotatedz$TestNestedCall.test_nested_annotated   s'     '((r   N)F)__name__
__module____qualname__rX   r_   rd   ri   rk   rm   rp   rr   rt   rv   rz   r|   r   r   r   rI   rI   K   s           & & &   + + +   - - -     * * *  ; ; ;    r   rI   __main__)r   r   )r$   r:   )__doc__numbar   r   r   r   
numba.corer   numba.extendingr   numba.tests.supportr	   r
   unittestr   r   r!   r#   r'   r*   r,   r.   r0   r4   r=   r?   rF   rG   rI   r}   mainr   r   r   <module>r      sA                          $ $ $ $ $ $ - - - - - - - -  d        d   . . . d   0 0 0- - - d  & & &    
/   # # ##    X X X X XX X X Xv zHMOOOOO r   