
    "
3j                     b   S r SSKJrJr  SSKJrJr  SSKJr  SSKJ	r	  SSK
JrJr  SSKr\" SS	9S
 5       rS r\" SS	9SS j5       rS r\" SS	9SS j5       rS rS r\" SS	9S 5       rS rSS jr\	" \5      SS j5       rS rS\4S jr " S S\5      r\S:X  a  \R<                  " 5         gg)zd
Test problems in nested calls.
Usually due to invalid type conversion between function boundaries.
    )int32int64)jitnjit)types)overload)TestCasetagNTnopythonc                 
    XU4$ N abcs      W/home/wildlama/miniconda3/lib/python3.13/site-packages/numba/tests/test_nested_calls.pyf_innerr          7N    c                     [        XUS9$ )N)r   r   )r   xyzs      r   fr      s    1Qr   c                 
    XU4$ r   r   r   s      r   g_innerr      r   r   c                 &    [        XS9[        X S94$ )N)r   )r   r   )r   r   s      r   gr!      s    1?Ga---r   c                     X4$ r   r   r   r   s     r   
star_innerr$      s	    4Kr   c                 ,    [        U S9[        XU5      4$ )N)r   r$   r   s      r   starr'   !   s    ?JqQ///r   c                 *    [        U /UQ76 [        U6 4$ r   r&   r   s      r   	star_callr)   $   s    a!j!n,,r   c                 *    U(       a  [        S5      n U $ )Nr   )r   r#   s     r   argcast_innerr+   '   s    !HHr   c                 ,    [        [        U 5      U5      $ r   )r+   r   r#   s     r   argcastr-   .   s    q1%%r   c                      S5       e)Nunreachabler   r   s      r   generated_innerr0   2   s    m1r   c                 \    [        U [        R                  5      (       a  SS jnU$ SS jnU$ )Nc                     X-   U4$ r   r   r   s      r   impl ol_generated_inner.<locals>.impl9       5!8Or   c                     X-
  U4$ r   r   r   s      r   r3   r4   <   r5   r         )
isinstancer   Complex)r   r   r   r3   s       r   ol_generated_innerr<   6   s)    !U]]##	
 K	Kr   c                     [        XS9$ )N)r   )r0   r#   s     r   call_generatedr>   A   s    1""r   returnc                  &    S[         S[         4S jn g)N	inner_argr?   c                     U $ r   r   )rA   s    r   innernested_annotated.<locals>.innerF   s    r      )int)rC   s    r   nested_annotatedrG   E   s      r   c                   l    \ rS rSrSS jrS rSS jrS rSS jrS r	S r
SS	 jrS
 rS rS rS rSrg)TestNestedCallK   c                 t   ^ ^^ UUU 4S jnU(       a	  [        SS9O[        SS9n[        S0 UD6" T5      mTU4$ )Nc                  H   > T" U 0 UD6nT" U 0 UD6nTR                  X25        g r   )assertPreciseEqual)argskwargsexpectedresultr   pyfuncselfs       r   check*TestNestedCall.compile_func.<locals>.checkN   s/    t.v.H''F##F5r   T)forceobjr   r   )dictr   )rS   rR   objmoderT   flagsr   s   ``   @r   compile_funcTestNestedCall.compile_funcM   s6    	6 (/d#D$4GL%L %xr   c                    ^ [        SS9S 5       m[        SS9U4S j5       nU R                  U" S5      5        U R                  U" S5      5        g )NTr   c                     U (       + $ r   r   )r   s    r   rC   1TestNestedCall.test_boolean_return.<locals>.innerW   s	    5Lr   c                 "   > T" U 5      (       a  gg)NTFr   )r   rC   s    r   outer1TestNestedCall.test_boolean_return.<locals>.outer[   s    Qxxr   F)r   assertFalse
assertTrue)rS   r`   rC   s     @r   test_boolean_return"TestNestedCall.test_boolean_returnV   sW    	d		 
	 
d		 
	 	t%e%r   c                 X    U R                  [        U5      u  p#U" SSS5        U" SSSS9  g)z=
Test a nested function call with named (keyword) arguments.
rE         r   r   N)rZ   r   rS   rX   cfuncrT   s       r   test_named_argsTestNestedCall.test_named_argse   /     ((G4aAa1r   c                 "    U R                  SS9  g NT)rX   )rl   rS   s    r   test_named_args_objmode&TestNestedCall.test_named_args_objmodem   s    T*r   c                 X    U R                  [        U5      u  p#U" SSS5        U" SSSS9  g)z<
Test a nested function call using default argument values.
rE   rg   rh   ri   N)rZ   r!   rj   s       r   test_default_args TestNestedCall.test_default_argsp   rn   r   c                 "    U R                  SS9  g rp   )ru   rq   s    r   test_default_args_objmode(TestNestedCall.test_default_args_objmodex   s    t,r   c                 F    U R                  [        5      u  pU" SSS5        g)zH
Test a nested function call to a function with *args in its signature.
rE   rg   rh   N)rZ   r'   rS   rk   rT   s      r   test_star_argsTestNestedCall.test_star_args{   s!     ((.aAr   c                 H    U R                  [        U5      u  p#U" SSS5        g)z$
Test a function call with a *args.
rE   )rg   )rh   N)rZ   r)   rj   s       r   test_star_callTestNestedCall.test_star_call   s$     ((G<atr   c                 "    U R                  SS9  g rp   )r   rq   s    r   test_star_call_objmode%TestNestedCall.test_star_call_objmode   s    D)r   c                 V    U R                  [        5      u  pU" SS5        U" SS5        g)zU
Issue #1488: implicitly casting an argument variable should not
break nested calls.
rE   r   N)rZ   r-   r{   s      r   test_argcastTestNestedCall.test_argcast   s(    
 ((1aar   c                     [        SS9" [        5      nU R                  U" SS5      S5        U R                  U" SS5      S5        g)	z:
Test a nested function call to a generated jit function.
Tr   rE   rg   )rg   y              ?)y      @      ?rg   N)r   r>   rM   rS   rk   s     r   test_call_generated"TestNestedCall.test_call_generated   s?     T">2aW5b!k:r   c                 :    [        5       " [        5      nU" 5         g)z,
Tested a nested function with annotations.
N)r   rG   r   s     r   test_nested_annotated$TestNestedCall.test_nested_annotated   s     '(r   r   N)F)__name__
__module____qualname____firstlineno__rZ   rd   rl   rr   ru   rx   r|   r   r   r   r   r   __static_attributes__r   r   r   rI   rI   K   s>    &+-*;r   rI   __main__)rg   rh   )r8   r7   )__doc__numbar   r   r   r   
numba.corer   numba.extendingr   numba.tests.supportr	   r
   unittestr   r   r   r!   r$   r'   r)   r+   r-   r0   r<   r>   rF   rG   rI   r   mainr   r   r   <module>r      s       $ -  d   d . d 0- d & 
/ ## XX Xv zMMO r   