
    sh                     P   S r SSKJrJr  SSK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 S\
5      r\S:X  a  \R6                  " 5         gg)zd
Test problems in nested calls.
Usually due to invalid type conversion between function boundaries.
    )int32int64)jit)types)overload)TestCasetagNTnopythonc                 
    XU4$ N abcs      q/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/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_innerr/   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   r2   r3   <   r4   r         )
isinstancer   Complex)r   r   r   r2   s       r   ol_generated_innerr;   6   s)    !U]]##	
 K	Kr   c                     [        XS9$ )N)r   )r/   r"   s     r   call_generatedr=   A   s    1""r   c                   f    \ 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g)TestNestedCallE   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>.checkH   s/    t.v.H''F##F5r   T)forceobjr
   r   )dictr   )rI   rH   objmoderJ   flagsr   s   ``   @r   compile_funcTestNestedCall.compile_funcG   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   inner1TestNestedCall.test_boolean_return.<locals>.innerQ   s	    5Lr   c                 "   > T" U 5      (       a  gg)NTFr   )r   rT   s    r   outer1TestNestedCall.test_boolean_return.<locals>.outerU   s    Qxxr   F)r   assertFalse
assertTrue)rI   rW   rT   s     @r   test_boolean_return"TestNestedCall.test_boolean_returnP   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.
         r   r   N)rP   r   rI   rN   cfuncrJ   s       r   test_named_argsTestNestedCall.test_named_args_   /     ((G4aAa1r   c                 "    U R                  SS9  g NT)rN   )rd   rI   s    r   test_named_args_objmode&TestNestedCall.test_named_args_objmodeg   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.
r^   r_   r`   ra   N)rP   r    rb   s       r   test_default_args TestNestedCall.test_default_argsj   rf   r   c                 "    U R                  SS9  g rh   )rm   ri   s    r   test_default_args_objmode(TestNestedCall.test_default_args_objmoder   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.
r^   r_   r`   N)rP   r&   rI   rc   rJ   s      r   test_star_argsTestNestedCall.test_star_argsu   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.
r^   )r_   )r`   N)rP   r(   rb   s       r   test_star_callTestNestedCall.test_star_call|   s$     ((G<atr   c                 "    U R                  SS9  g rh   )rw   ri   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.
r^   r   N)rP   r,   rs   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
   r^   r_   )r_   y              ?)y      @      ?r_   N)r   r=   rC   )rI   rc   s     r   test_call_generated"TestNestedCall.test_call_generated   s?     T">2aW5b!k:r   r   N)F)__name__
__module____qualname____firstlineno__rP   r[   rd   rj   rm   rp   rt   rw   rz   r}   r   __static_attributes__r   r   r   r?   r?   E   s9    &+-*;r   r?   __main__)r_   r`   )r7   r6   )__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?   r   mainr   r   r   <module>r      s       $ -  d   d . d 0- d & 
/ #P;X P;f zMMO r   