o
    i[                     @   s   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d	d
 Zdd Zeddd&ddZdd Zeddd'ddZdd Zdd Zedddd Zdd Zeddd(dd Zd!d" ZG d#d$ d$e	Zed%kr~e  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Znopythonc                 C   
   | ||fS N abcr   r   l/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/numba/tests/test_nested_calls.pyf_inner      
r   c                 C   s   t | ||dS )N)r   r   )r   xyzr   r   r   f      r         c                 C   r
   r   r   r   r   r   r   g_inner   r   r   c                 C   s   t | |dt || dfS )N)r   )r   r   )r   r   r   r   r   g      r      c                 G   s   | |fS r   r   r   r   r   r   r   
star_inner   s   r!   c                 C   s   t | dt | ||fS )N)r   r!   r   r   r   r   star    s   r#   c                 C   s   t | g|R  t | fS r   r"   r   r   r   r   	star_call#   r   r$   c                 C   s   |rt d} | S )Nr   )r   r    r   r   r   argcast_inner&   s   r%   c                 C   s   t t| |S r   )r%   r   r    r   r   r   argcast-   r   r&      c                 C   s$   t | tjrdd }|S dd }|S )Nc                 S   s   | | |fS r   r   r   r   r   r   impl3      zgenerated_inner.<locals>.implc                 S   s   | | |fS r   r   r   r   r   r   r(   6   r)   )
isinstancer   Complex)r   r   r   r(   r   r   r   generated_inner0   s
   r,   c                 C   s   t | |dS )N)r   )r,   r    r   r   r   call_generated:   r)   r-   c                   @   sl   e Zd ZdddZdd ZdddZdd	 Zdd
dZdd Zdd Z	dddZ
dd Zdd Zdd ZdS )TestNestedCallFc                    sB    fdd}|rt ddnt dd}tdi |  |fS )Nc                     s,   | i |} | i |} || d S r   )assertPreciseEqual)argskwargsexpectedresultr   pyfuncselfr   r   checkA   s   z*TestNestedCall.compile_func.<locals>.checkT)Zforceobjr	   r   )dictr   )r6   r5   objmoder7   flagsr   r4   r   compile_func@   s   zTestNestedCall.compile_funcc                    sH   t dddd  t dd fdd}| |d | |d d S )NTr	   c                 S   s   |  S r   r   r   r   r   r   innerJ   s   z1TestNestedCall.test_boolean_return.<locals>.innerc                    s    | rdS dS )NTFr   r<   r=   r   r   outerN   s   z1TestNestedCall.test_boolean_return.<locals>.outerF)r   ZassertFalse
assertTrue)r6   r?   r   r>   r   test_boolean_returnI   s   
z"TestNestedCall.test_boolean_returnc                 C   .   |  t|\}}|ddd |dddd dS )zM
        Test a nested function call with named (keyword) arguments.
           r   r   r   r   N)r;   r   r6   r9   cfuncr7   r   r   r   test_named_argsX      zTestNestedCall.test_named_argsc                 C      | j dd d S NT)r9   )rG   r6   r   r   r   test_named_args_objmode`      z&TestNestedCall.test_named_args_objmodec                 C   rB   )zL
        Test a nested function call using default argument values.
        rC   r   r   rD   N)r;   r   rE   r   r   r   test_default_argsc   rH   z TestNestedCall.test_default_argsc                 C   rI   rJ   )rN   rK   r   r   r   test_default_args_objmodek   rM   z(TestNestedCall.test_default_args_objmodec                 C   s   |  t\}}|ddd dS )zX
        Test a nested function call to a function with *args in its signature.
        rC   r   r   N)r;   r#   r6   rF   r7   r   r   r   test_star_argsn   s   zTestNestedCall.test_star_argsc                 C   s    |  t|\}}|ddd dS )z4
        Test a function call with a *args.
        rC   )r   )r   N)r;   r$   rE   r   r   r   test_star_callu   s   zTestNestedCall.test_star_callc                 C   rI   rJ   )rR   rK   r   r   r   test_star_call_objmode|   rM   z%TestNestedCall.test_star_call_objmodec                 C   s&   |  t\}}|dd |dd dS )zm
        Issue #1488: implicitly casting an argument variable should not
        break nested calls.
        rC   r   N)r;   r&   rP   r   r   r   test_argcast   s   
zTestNestedCall.test_argcastc                 C   s6   t ddt}| |ddd | |ddd dS )	zJ
        Test a nested function call to a generated jit function.
        Tr	   rC   r   )r   y              ?)y      @      ?r   N)r   r-   r/   )r6   rF   r   r   r   test_call_generated   s   z"TestNestedCall.test_call_generatedN)F)__name__
__module____qualname__r;   rA   rG   rL   rN   rO   rQ   rR   rS   rT   rV   r   r   r   r   r.   >   s    
	


	r.   __main__)r   r   )r   )r   r'   )__doc__Znumbar   r   r   r   Z
numba.corer   Znumba.tests.supportr   r   Zunittestr   r   r   r   r!   r#   r$   r%   r&   r,   r-   r.   rW   mainr   r   r   r   <module>   s4    

	S