
    J/Ph                     b   d Z ddlZddlZddlmZ ddlZddlmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZ ddlmZmZmZmZmZmZmZmZ ddl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'm(Z(m)Z)m*Z*m+Z+ dZ, ed          d             Z-d Z. ee.d          d             Z/ G d de&          Z0dZ1d Z2 G d de(e0          Z3 G d de(e0          Z4 G d de(e0          Z5 G d de0          Z6 G d de(e0          Z7 G d  d!e&          Z8 G d" d#e&          Z9e:d$k    r e'j;                     dS dS )%zn
This tests the inline kwarg to @jit and @overload etc, it has nothing to do with
LLVM or low level inlining.
    N)product)njittypeof	literallyprange)typesirir_utilscgutilserrorsutils)overloadoverload_methodoverload_attributeregister_modelmodelsmake_attribute_wrapper	intrinsicregister_jitable)InlineOptions)DefaultPassBuilderCompilerBase)InlineOverloads	signature)TestCaseunittestMemoryLeakMixinIRPreservingTestPipelineskip_parfors_unsupportedignore_internal_warningsialwaysinlinec                     | dz   S N    xs    \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/tests/test_ir_inlining.py_global_funcr,   &   s    q5L    c                     | dz   S r&   r(   r)   s    r+   _global_defnr/   ,   s    q5Lr-   c                     t           S Nr/   r)   s    r+   _global_overloadr3   0   s    r-   c                   (    e Zd ZdZdddZd Zd ZdS )InliningBaseFTr"   neverc                     |j                                         D ]Y}|j        D ]O}t          |t          j                  r3t          |j        t          j                  r|j        j        dk    r  dS PZdS )N   TF)blocksvaluesbody
isinstancer	   AssignvalueFreeVar)selffunc_irblkstmts       r+   sentinel_17_cost_modelz#InliningBase.sentinel_17_cost_model>   s     >((** 	( 	(C ( (dBI.. (!$*bj99 (:+r11#'444	(
 ur-   c                    |                     dd           }|sJ |                     dd          }|rJ |                                D ]3\  }}t          |t                    sJ t          |t                    sJ 4 t          t                    |          }|                      ||  ||            |j        |j	        d                  j
        d         }	t          j        |	j                  |	_        | j        r7t          d                    dd	                     |	                                 |d
k    r(|                     t%          |	j                  |           t'          t)          |	j                                                            }
d |
                                D             }|sJ |                                D ]\  }}d}|D ]g}t/          |dd          dk    r)|	                    |j                  }||j        |k    z  }@t          j        |          r||j        j        |k    z  }h|                     ||k               |	S )Ninline_expectblock_countr'   pipeline_classr   preserved_irFIRP   -SKIPc                     g | ]}|S r(   r(   .0r*   s     r+   
<listcomp>z&InliningBase.check.<locals>.<listcomp>e   s    ///q///r-   Fopcall)popitemsr=   strboolr   r   assertEqual	overloads
signaturesmetadatar
   simplify_CFGr:   _DEBUGprintcenterdumplennextiterr;   
find_exprsgetattrget_definitionfuncnameis_operator_or_getitemfn__name__assertFalse)rA   	test_implargskwargsrG   rH   kvj_funcfirblockexprsfoundexpr	func_defns                  r+   checkzInliningBase.checkK   sd   

?D99jj22!'')) 	' 	'DAqa%%%%%a&&&&&&>%=>>>yII 	D)664=999 v034=nM*3:66
; 	%,,r3''(((HHJJJ&  S__k:::T#*++--..// 0/E,,..///!'')) 	) 	)DAqE 3 34u--77 # 2 249 = =IY^q00EE4T:: 3TW-22EUaZ((((
r-   N)rm   
__module____qualname__r_   inline_opt_as_boolrE   r{   r(   r-   r+   r5   r5   5   sE        F$(599
	 	 	& & & & &r-   r5     c                      ddfd	} | S )Ni                   ?c                    | |z   }| z  } t          j        |t           j                  }||z   }d|z  }d}	d}
t          j        |          dk    r ||z  }t          j        d|dz             }t          j        ||z
            ||z  z   }t          j        |d                   dk     r<t          |           D ]!}|	dz  }	t          j        |	          dk     r n"|	|d         z  }	||z  }g }t          t          |                    D ]H}|                    ||                    |dk    rd}d}
|d	|z
  k    r|
|z  }
|
|d         t          z   z  }
I||z   |z   |
z   |z   | z   |	z   S )
Ndtyper   r   r'            {   z   )
npzeros	complex64absarangesqrtrangerc   append_GLOBAL)abcdefghintrr   lmopqrs_FREEVARs                      r+   fooz_gen_involved.<locals>.foo{   s   E	XHQbl+++EF6!99q==AA	!QU##AAQ&Avad||aq  AFAvayy1}} %QqT	AAA3q66]] $ $1u99AA37{{QQqTG^#1uqy1}q 1$q((r-   )r   r   Nr(   )r   r   s    @r+   _gen_involvedr   x   s.    H) ) ) ) ) )@ Jr-   c                       e Zd Zd Zd Zd Z ej        d          d             Zd Z	d Z
d Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestFunctionInliningc                 v    t          d          d             fd}|                     |ddi           d S )Nr7   r#   c                      d S r1   r(   r(   r-   r+   r   z9TestFunctionInlining.test_basic_inline_never.<locals>.foo       Fr-   c                                    S r1   r(   r   s   r+   implz:TestFunctionInlining.test_basic_inline_never.<locals>.impl       355Lr-   r   FrG   r   r{   rA   r   r   s     @r+   test_basic_inline_neverz,TestFunctionInlining.test_basic_inline_never   sa    	W				 	 
			 	 	 	 	

4u~
66666r-   c                 v    t          d          d             fd}|                     |ddi           d S )Nr"   r#   c                      d S r1   r(   r(   r-   r+   r   z:TestFunctionInlining.test_basic_inline_always.<locals>.foo   r   r-   c                                    S r1   r(   r   s   r+   r   z;TestFunctionInlining.test_basic_inline_always.<locals>.impl   r   r-   r   Tr   r   r   s     @r+   test_basic_inline_alwaysz-TestFunctionInlining.test_basic_inline_always   sa    	X				 	 
			 	 	 	 	

4t}
55555r-   c                 `  	 	fd}d}t          |||          D ]\  }}}t          |          d             	t          |          d             t          |          d             | j        |         | j        |         | j        |         d}|                     ||           d S )	Nc                  J                 }              }             }| ||fS r1   r(   r*   yzbarbazr   s      r+   r   z;TestFunctionInlining.test_basic_inline_combos.<locals>.impl   /    AAAa7Nr-   r6   r#   c                      d S r1   r(   r(   r-   r+   r   z:TestFunctionInlining.test_basic_inline_combos.<locals>.foo       r-   c                      d S r1   r(   r(   r-   r+   r   z:TestFunctionInlining.test_basic_inline_combos.<locals>.bar   r   r-   c                      d S r1   r(   r(   r-   r+   r   z:TestFunctionInlining.test_basic_inline_combos.<locals>.baz   r   r-   r   r   r   r   )r   r   r~   r{   )
rA   r   opts
inline_foo
inline_bar
inline_bazrG   r   r   r   s
          @@@r+   test_basic_inline_combosz-TestFunctionInlining.test_basic_inline_combos   s   	 	 	 	 	 	 	 '29$d2K2K 	: 	:.J
J$$$  %$ $$$  %$ $$$  %$ %)$;J$G$($;J$G$($;J$GI IM JJt=J9999#	: 	:r-   z$Need to work out how to prevent thisc                     t          d          fd            dfd}|                     |ddi           d S )	Nr"   r#   c                 4    | dk    rdS  | dz
             d S )Nr   r   r'   r(   )r*   r   s    r+   r   z7TestFunctionInlining.test_recursive_inline.<locals>.foo   s&    AvvrAE




r-   r   c                  R    d} dk    r| dz  }  d           | k     r| dz  } d S d S )Nr   r'   r   r(   )r   r   r   s    r+   r   z8TestFunctionInlining.test_recursive_inline.<locals>.impl   sD    A1uuQCFFF1uuQ ur-   r   Tr   r   )rA   r   r   r   s     @@r+   test_recursive_inlinez*TestFunctionInlining.test_recursive_inline   s|     
X				 	 	 	 
		 	 	 	 	 	 	 	

4t}
55555r-   c                   	
 d }	
fd}d}t          |||          D ]k\  }}} ||dd          
 ||dd           ||dd	          	| j        |         | j        |         | j        |         d
}|                     ||           ld S )Nc                 P    dz   t          |           fd            }|S )Nr   r#   c                       dz   fS Nr   r(   r*   r   r   s   r+   ri   zITestFunctionInlining.test_freevar_bindings.<locals>.factory.<locals>.func   s    1q5!}$r-   )r   )r$   r*   r   ri   r   s    `` @r+   factoryz;TestFunctionInlining.test_freevar_bindings.<locals>.factory   sL    BA   % % % % % % ! %Kr-   c                  J                 }              }             }| ||fS r1   r(   r   s      r+   r   z8TestFunctionInlining.test_freevar_bindings.<locals>.impl   r   r-   r6   
         (   2   <   r   r   r   r~   r{   )rA   r   r   r   r   r   r   rG   r   r   r   s           @@@r+   test_freevar_bindingsz*TestFunctionInlining.test_freevar_bindings   s    	 	 		 	 	 	 	 	 	 '29$d2K2K 		: 		:.J
J'*b"--C'*b"--C'*b"--C$($;J$G$($;J$G$($;J$GI IM JJt=J9999		: 		:r-   c                 >    d }|                      |ddi           d S )Nc                  $    d} t          |           S N   )r,   r)   s    r+   r   z6TestFunctionInlining.test_global_binding.<locals>.impl      A??"r-   r,   Tr   r{   rA   r   s     r+   test_global_bindingz(TestFunctionInlining.test_global_binding  4    	# 	# 	# 	

4'=
>>>>>r-   c                 P    ddl m fd}|                     |ddi           d S )Nr'   r   c                  0    t           dz   }              | fS Nr   _GLOBAL1r   r   s    r+   r   zBTestFunctionInlining.test_inline_from_another_module.<locals>.impl      1A355!8Or-   r   Tr   )inlining_usecasesr   r{   rA   r   r   s     @r+   test_inline_from_another_modulez4TestFunctionInlining.test_inline_from_another_module
  P    ******	 	 	 	 	 	

4t}
55555r-   c                 V    dd l mc m fd}|                     |ddi           d S )Nr   c                  D    t           dz   }                                 | fS r   )r   r   r   iucs    r+   r   zLTestFunctionInlining.test_inline_from_another_module_w_getattr.<locals>.impl      1A7799a<r-   r   Tr   numba.tests.inlining_usecasestestsr   r{   rA   r   r   s     @r+   )test_inline_from_another_module_w_getattrz>TestFunctionInlining.test_inline_from_another_module_w_getattr  Y    333333333	  	  	  	  	  	

4t}
55555r-   c                 X    dd l }dd lm fd}|                     |ddi           d S )Nr   c                  N    t           dz   } j                                        | fS r   )r   r   r   r   nts    r+   r   zNTestFunctionInlining.test_inline_from_another_module_w_2_getattr.<locals>.impl#  &    1A'++--q00r-   r   Tr   r   numba.testsr   r{   rA   numbar   r  s      @r+   +test_inline_from_another_module_w_2_getattrz@TestFunctionInlining.test_inline_from_another_module_w_2_getattr  \    ,,,,      	1 	1 	1 	1 	1 	

4t}
55555r-   c                 ^    d } |            fd}|                      |ddi           d S )Nc                  J    ddl m t          d          fd            } | S )Nr'   r   r"   r#   c                                    S r1   r(   r   s   r+   tmpz]TestFunctionInlining.test_inline_from_another_module_as_freevar.<locals>.factory.<locals>.tmp.      suur-   )r   r   r   )r  r   s    @r+   r   zPTestFunctionInlining.test_inline_from_another_module_as_freevar.<locals>.factory+  I    ......"""    #"Jr-   c                  0    t           dz   }              | fS r   r   r   r   s    r+   r   zMTestFunctionInlining.test_inline_from_another_module_as_freevar.<locals>.impl5  r   r-   r   Tr   r   )rA   r   r   r   s      @r+   *test_inline_from_another_module_as_freevarz?TestFunctionInlining.test_inline_from_another_module_as_freevar)  Z    	 	 	 gii	 	 	 	 	 	

4t}
55555r-   c                 h    ddl m fd} |dd          }|                     |ddi           d S )	Nr'   )baz_factoryc                 2                  fd}|S )Nc                  8    t           z  z   }              | fS r1   r   r   r   r   r   s    r+   r   zYTestFunctionInlining.test_inline_w_freevar_from_another_module.<locals>.gen.<locals>.implB  #    q1u$suua{"r-   r(   )r   r   r   r   r  s   `` @r+   genzKTestFunctionInlining.test_inline_w_freevar_from_another_module.<locals>.gen?  =    +a..C# # # # # # # Kr-   r   r   r   Tr   )r   r  r{   )rA   r  r   r  s      @r+   )test_inline_w_freevar_from_another_modulez>TestFunctionInlining.test_inline_w_freevar_from_another_module;  _    222222	 	 	 	 	 s2r{{

4t}
55555r-   c                 @     fd} fd}dD ]D\  t          |          fd            fd}                     |ddd	k    i
           EdD ]D\  t          |          fd            fd}                     |ddd	k    i
           Ed S )Nc                                          | t          j                                       | j        d                               |          S NrU   assertIsInstancer	   ExprrZ   rT   rE   ry   caller_infocallee_inforA   s      r+   s17_caller_modelzCTestFunctionInlining.test_inlining_models.<locals>.s17_caller_modelL  G    !!$000TWf---..{;;;r-   c                                          | t          j                                       | j        d                               |          S r   r!  r$  s      r+   s17_callee_modelzCTestFunctionInlining.test_inlining_models.<locals>.s17_callee_modelQ  r(  r-   )   r9   r9   r,  r#   c                       S r1   r(   callees   r+   r   z6TestFunctionInlining.test_inlining_models.<locals>.fooY      r-   c                 0    | z   }             }|dz   |fS r   r(   r   r*   r   callerr   s      r+   r   z7TestFunctionInlining.test_inlining_models.<locals>.impl]  $    JCEE1uaxr-   r   r   r9   r   c                       S r1   r(   r/  s   r+   r   z6TestFunctionInlining.test_inlining_models.<locals>.barg  r1  r-   c                 0    | z   }             }|dz   |fS r   r(   r   r*   r   r   r4  s      r+   r   z7TestFunctionInlining.test_inlining_models.<locals>.implk  r5  r-   r   r   )rA   r'  r*  r   r   r0  r4  r   s   `   @@@@r+   test_inlining_modelsz)TestFunctionInlining.test_inlining_modelsJ  s[   	< 	< 	< 	< 	<
	< 	< 	< 	< 	< 3 	F 	FNFF)***    +*           
 JJtRv|/DJEEEE 3 	F 	FNFF)***    +*           
 JJtRv|/DJEEEE	F 	Fr-   c                 x    t          d          d             fd}|                     |ddid           d S )	Nr"   r#   c                      dS Nr   r(   r(   r-   r+   r   z9TestFunctionInlining.test_inline_inside_loop.<locals>.foos      2r-   c                  J    d} t          d          D ]}|              z  } | S )N        r   r   )accr   r   s     r+   r   z:TestFunctionInlining.test_inline_inside_loop.<locals>.implw  s3    C1XX  ssuuJr-   r   T   rG   rH   r   r   s     @r+   test_inline_inside_loopz,TestFunctionInlining.test_inline_inside_loopr  se    	X				 	 
			 	 	 	 	 	

4t}!
DDDDDr-   c                 x    t          d          d             fd}|                     |ddid           d S )	Nr"   r#   c                      dS r<  r(   r(   r-   r+   r   zHTestFunctionInlining.test_inline_inside_closure_inside_loop.<locals>.foo  r=  r-   c                  T    d} t          d          D ]}fd}|  |            z  } | S )Nr?  r   c                                    dz   S N   r(   r   s   r+   r   zVTestFunctionInlining.test_inline_inside_closure_inside_loop.<locals>.impl.<locals>.bar  s    35519$r-   r@  )rA  r   r   r   s      r+   r   zITestFunctionInlining.test_inline_inside_closure_inside_loop.<locals>.impl  sL    C1XX  % % % % %ssuuJr-   r   TrB  rC  r   r   s     @r+   &test_inline_inside_closure_inside_loopz;TestFunctionInlining.test_inline_inside_closure_inside_loop  se    	X				 	 
			 	 	 	 	 	

4t}!
DDDDDr-   c                 x    t          d          d             fd}|                     |ddid           d S )	Nr"   r#   c                 (      fd} |            dz   S )Nc                      d z   S r<  r(   )r   s   r+   r   zbTestFunctionInlining.test_inline_closure_inside_inlinable_inside_closure.<locals>.foo.<locals>.baz  s    Avr-      r(   )r   r   s   ` r+   r   zUTestFunctionInlining.test_inline_closure_inside_inlinable_inside_closure.<locals>.foo  s,        35519r-   c                  2    dfd}  | dz             S )N	   c                 &               dz   | z   S rI  r(   r*   r   r   s    r+   r   zcTestFunctionInlining.test_inline_closure_inside_inlinable_inside_closure.<locals>.impl.<locals>.bar      s1vvzA~%r-   r   r(   r   r   r   s    @r+   r   zVTestFunctionInlining.test_inline_closure_inside_inlinable_inside_closure.<locals>.impl  9    A& & & & & &3q1u::r-   r   Tr'   rC  r   r   s     @r+   3test_inline_closure_inside_inlinable_inside_closurezHTestFunctionInlining.test_inline_closure_inside_inlinable_inside_closure  se    	X				 	 
		
	 	 	 	 	 	

4t}!
DDDDDr-   c                 |    t          d          t                                t          d          fd            t          d          fd            fd}t          j        dv rd}n*t          j        dv rd	}nt	          t          j                  |                     |d
d
d
d|           d S )Nr"   r#   c                     dfd}t          |           D ],} |dz              ddd |                    z   z  -S )Nr   c                     | z   S r1   r(   )r   rA  s    r+   bizzCTestFunctionInlining.test_inline_involved.<locals>.boz.<locals>.biz  s    3wr-   rO         @r'   y              (@r@  )jr[  r*   rA  fortrans      @r+   bozz6TestFunctionInlining.test_inline_involved.<locals>.boz  su    C    1XX I Iss1s7||ggb#q#ss3xx&H&HHHJr-   c                      d}t          d          D ]7} ddddd           fd}| ||          dz    |          z   z   z  }8| |d          z   S )Nr   r   r'   c                     dz   | z   z   S r<  r(   )r*   r   r  s    r+   r   zCTestFunctionInlining.test_inline_involved.<locals>.foo.<locals>.baz  s    6A:++r-   rO  r   r@  )r   rA  r   r   r  r_  r^  s   `   @r+   r   z6TestFunctionInlining.test_inline_involved.<locals>.foo  s    C2YY 1 1gaAq!,,, , , , , ,ss1vvzCCFF*S00Q<r-   c                  2    dfd}  | dz             S )NrQ  c                 &               dz   | z   S rI  r(   rS  s    r+   r   zDTestFunctionInlining.test_inline_involved.<locals>.impl.<locals>.bar  rT  r-   r   r(   rU  s    @r+   r   z7TestFunctionInlining.test_inline_involved.<locals>.impl  rV  r-   ))r   r   )r      '   ))r   r   )r   r,  #   T)r   r_  r^  rC  )r   r   r   	PYVERSIONNotImplementedErrorr{   )rA   r   bcr_  r   r^  s      @@@r+   test_inline_involvedz)TestFunctionInlining.test_inline_involved  s   '$h'''88	X				 	 	 	 
		 
X				  	  	  	  	  
		 	 	 	 	 	 ?000BB_ 222BB%eo666

4tD37(9 (9FH 	 	J 	J 	J 	J 	Jr-   c                   
 t          d          d             
t          t                    
fd            }|                      |dd          d           |j        |j        d	                  j        d
         }g }|j                                        D ]j}|j        D ]`}t          |t          j                  rDt          |j        t          j                  r%|j        j        dk    r|                    |           ak|                     t          |          d           |D ]U}|j        j        }|                                                     | j                  }| d}	|                     ||	           Vd S )Nr"   r#   c                     d}d}||z   | z   S )Nr   r   r(   )r   r*   r   s      r+   r   z=TestFunctionInlining.test_inline_renaming_scheme.<locals>.bar  s    AAq519r-   rI   c                 0     |            |          fS r1   r(   )r   r   r   s     r+   r   z=TestFunctionInlining.test_inline_renaming_scheme.<locals>.foo      3q6633q66>!r-   r   r   )   rf  r   rK   r   r   z__locals__bar_v[0-9]+.x)r   r   rZ   r[   r\   r]   r:   r;   r<   r=   r	   r>   r?   Constr   rc   targetrj   idlstripr|   assertRegex)rA   r   rB   storerC   rD   r   rj   basenameregexr   s             @r+   test_inline_renaming_schemez0TestFunctionInlining.test_inline_renaming_scheme  s    
X				 	 
		
 
5	6	6	6	" 	" 	" 	" 
7	6	" 	Rh/// -q 12;NK>((** 	/ 	/C / /dBI.. /!$*bh77 /:+q00!LL...	/ 	UQ''' 	* 	*A8=Dwwyy''88H 999ET5))))		* 	*r-   N)rm   r|   r}   r   r   r   r   skipr   r   r   r   r   r  r  r  r9  rD  rK  rW  rj  rx  r(   r-   r+   r   r      s>       7 7 76 6 6: : :: X]9::6 6 ;:6*: : ::? ? ?6 6 66 6 6	6 	6 	66 6 6$6 6 6&F &F &FPE E EE E EE E E )J )J )JV#* #* #* #* #*r-   r   c                       e Zd Zd ZdS )TestRegisterJitableInliningc                 v    t          d          d             fd}|                     |ddi           d S )Nr"   r#   c                      dS r&   r(   r(   r-   r+   r   zFTestRegisterJitableInlining.test_register_jitable_inlines.<locals>.foo  s    1r-   c                                     d S r1   r(   r   s   r+   r   zGTestRegisterJitableInlining.test_register_jitable_inlines.<locals>.impl  s    CEEEEEr-   r   Tr   )r   r{   r   s     @r+   test_register_jitable_inlinesz9TestRegisterJitableInlining.test_register_jitable_inlines  sc    		*	*	*	 	 
+	*		 	 	 	 	 	

4t}
55555r-   N)rm   r|   r}   r  r(   r-   r+   r{  r{    s#        	6 	6 	6 	6 	6r-   r{  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestOverloadInliningc                 ~    d t          d          d             }fd}|                     |ddi           d S )	Nc                      d S r1   r(   r(   r-   r+   r   z9TestOverloadInlining.test_basic_inline_never.<locals>.foo       Dr-   r7   r#   c                      d } | S )Nc                      d S r1   r(   r(   r-   r+   foo_implzTTestOverloadInlining.test_basic_inline_never.<locals>.foo_overload.<locals>.foo_impl      r-   r(   )r  s    r+   foo_overloadzBTestOverloadInlining.test_basic_inline_never.<locals>.foo_overload  s      Or-   c                                    S r1   r(   r   s   r+   r   z:TestOverloadInlining.test_basic_inline_never.<locals>.impl	  r   r-   r   Fr   r   r{   rA   r  r   r   s      @r+   r   z,TestOverloadInlining.test_basic_inline_never  sv    	 	 	 
#g	&	&	&	 	 
'	&	
	 	 	 	 	 	

4u~
66666r-   c                 ~    d t          d          d             }fd}|                     |ddi           d S )	Nc                      d S r1   r(   r(   r-   r+   r   z:TestOverloadInlining.test_basic_inline_always.<locals>.foo  r  r-   r"   r#   c                      d } | S )Nc                      d S r1   r(   r(   r-   r+   r   zQTestOverloadInlining.test_basic_inline_always.<locals>.foo_overload.<locals>.impl  r  r-   r(   r   s    r+   r  zCTestOverloadInlining.test_basic_inline_always.<locals>.foo_overload  s      Kr-   c                                    S r1   r(   r   s   r+   r   z;TestOverloadInlining.test_basic_inline_always.<locals>.impl  r   r-   r   Tr   r  r  s      @r+   r   z-TestOverloadInlining.test_basic_inline_always  sv    	 	 	 
#h	'	'	'	 	 
(	'	
	 	 	 	 	 	

4t}
55555r-   c                 ~    d t          d          d             }fd}|                     |ddi           d S )	Nc                     | |z   S r1   r(   r   r   s     r+   r   zBTestOverloadInlining.test_inline_always_kw_no_default.<locals>.foo   s    q5Lr-   r"   r#   c                     d S )Nc                     | |z   S r1   r(   r  s     r+   <lambda>z]TestOverloadInlining.test_inline_always_kw_no_default.<locals>.overload_foo.<locals>.<lambda>%  s
    A r-   r(   r  s     r+   overload_foozKTestOverloadInlining.test_inline_always_kw_no_default.<locals>.overload_foo#  s    %%%r-   c                        dd          S )Nr   rB  r   r(   r   s   r+   r   zCTestOverloadInlining.test_inline_always_kw_no_default.<locals>.impl'  s    3qA;;;r-   r   Tr   r  rA   r  r   r   s      @r+    test_inline_always_kw_no_defaultz5TestOverloadInlining.test_inline_always_kw_no_default  sv    	 	 	 
#h	'	'	'	& 	& 
(	'	&	 	 	 	 	 	

4t}
55555r-   c                    d }d }d |                                  \  }t          |d           t          |d           t          t          j        d          fd            }t          t          j        d	          fd
            }|                     | |            ddi           |                     | |            ddi           d S )Nc                     |  S r1   r(   r)   s    r+   impl_inlinezETestOverloadInlining.test_inline_operators_unary.<locals>.impl_inline.  	    2Ir-   c                     | 
 S r1   r(   r)   s    r+   impl_noinlinezGTestOverloadInlining.test_inline_operators_unary.<locals>.impl_noinline1  r  r-   c                     dS NTr(   r)   s    r+   r  zBTestOverloadInlining.test_inline_operators_unary.<locals>.<lambda>4  s    T r-   __neg____pos__r"   r#   c                 ,    t          |           rS d S r1   r=   r*   	DummyTypedummy_unary_impls    r+   overload_dummy_negzLTestOverloadInlining.test_inline_operators_unary.<locals>.overload_dummy_neg9  %    !Y'' (''( (r-   r7   c                 ,    t          |           rS d S r1   r  r  s    r+   overload_dummy_poszLTestOverloadInlining.test_inline_operators_unary.<locals>.overload_dummy_pos>  r  r-   negTr   posF)make_dummy_typesetattrr   operatorr  r  r{   )rA   r  r  Dummyr  r  r  r  s         @@r+   test_inline_operators_unaryz0TestOverloadInlining.test_inline_operators_unary,  s&   	 	 		 	 	 *>//11yy"2333y"2333	(,x	0	0	0	( 	( 	( 	( 	( 
1	0	( 
(,w	/	/	/	( 	( 	( 	( 	( 
0	/	( 	

;t}
EEE

=%%''%
HHHHHr-   c                    d }d }|                                  \  }d t          |d           t          |d           t          t          j        d          fd            }t          t          j        d	          fd
            }|                     | |            ddi           |                     | |            ddi           d S )Nc                     | dk    S r&   r(   r)   s    r+   r  zETestOverloadInlining.test_inline_operators_binop.<locals>.impl_inlineH      6Mr-   c                     | dk    S r&   r(   r)   s    r+   r  zGTestOverloadInlining.test_inline_operators_binop.<locals>.impl_noinlineK  r  r-   c                     dS r  r(   r  s     r+   r  zBTestOverloadInlining.test_inline_operators_binop.<locals>.<lambda>P  s     r-   __eq____ne__r"   r#   c                 ,    t          |           rS d S r1   r  r   r   r  dummy_binop_impls     r+   overload_dummy_eqzKTestOverloadInlining.test_inline_operators_binop.<locals>.overload_dummy_eqT  r  r-   r7   c                 ,    t          |           rS d S r1   r  r  s     r+   overload_dummy_nezKTestOverloadInlining.test_inline_operators_binop.<locals>.overload_dummy_neY  r  r-   eqTr   neF)r  r  r   r  r  r  r{   )rA   r  r  r  r  r  r  r  s         @@r+   test_inline_operators_binopz0TestOverloadInlining.test_inline_operators_binopF  s'   	 	 		 	 	  //11y,,x!1222x!1222	(+h	/	/	/	( 	( 	( 	( 	( 
0	/	( 
(+g	.	.	.	( 	( 	( 	( 	( 
/	.	( 	

;d|
DDD

=%%''$
GGGGGr-   c                 N  	 d }d }|                                  \  }d 	t          |d	           t          |d	           t          t          j        d          	fd            }t          t          j        d	          	fd
            }t          t          j        d          	fd            }t          t          j        d	          	fd            }|                     | |            ddi           |                     | |            ddi           d S )Nc                     | dz  } d S r&   r(   r)   s    r+   r  zMTestOverloadInlining.test_inline_operators_inplace_binop.<locals>.impl_inlinec      FAAAr-   c                     | dz  } d S r&   r(   r)   s    r+   r  zOTestOverloadInlining.test_inline_operators_inplace_binop.<locals>.impl_noinlinef  r  r-   c                     dS r  r(   r  s     r+   r  zJTestOverloadInlining.test_inline_operators_inplace_binop.<locals>.<lambda>k  s     r-   __iadd____isub__r"   r#   c                 ,    t          |           rS d S r1   r  r   r   r  dummy_inplace_binop_impls     r+   overload_dummy_iaddzUTestOverloadInlining.test_inline_operators_inplace_binop.<locals>.overload_dummy_iaddo  %    !Y'' 0//0 0r-   r7   c                 ,    t          |           rS d S r1   r  r  s     r+   overload_dummy_isubzUTestOverloadInlining.test_inline_operators_inplace_binop.<locals>.overload_dummy_isubt  r  r-   c                 ,    t          |           rS d S r1   r  r  s     r+   overload_dummy_addzTTestOverloadInlining.test_inline_operators_inplace_binop.<locals>.overload_dummy_add{  r  r-   c                 ,    t          |           rS d S r1   r  r  s     r+   overload_dummy_subzTTestOverloadInlining.test_inline_operators_inplace_binop.<locals>.overload_dummy_sub  r  r-   iaddTr   isubF)	r  r  r   r  r  r  addsubr{   )
rA   r  r  r  r  r  r  r  r  r  s
           @@r+   #test_inline_operators_inplace_binopz8TestOverloadInlining.test_inline_operators_inplace_binopa  s   	 	 		 	 	  //11y#4#4 z#;<<<z#;<<<	(-	1	1	1	0 	0 	0 	0 	0 
2	1	0 
(-	0	0	0	0 	0 	0 	0 	0 
1	0	0 
(,x	0	0	0	0 	0 	0 	0 	0 
1	0	0 
(,w	/	/	/	0 	0 	0 	0 	0 
0	/	0 	

;~
FFF

=%%''&%
IIIIIr-   c                 D   d }d }|                                  \  }d t          |d           t          t          j        d          fd            }|                     | |            dd	d
i           |                     | |            d	d
i           d S )Nc                     | |         S r1   r(   r*   idxs     r+   r   zGTestOverloadInlining.test_inline_always_operators_getitem.<locals>.impl      S6Mr-   c                     | d         S r&   r(   r)   s    r+   impl_static_getitemzVTestOverloadInlining.test_inline_always_operators_getitem.<locals>.impl_static_getitem      Q4Kr-   c                     d S r1   r(   objr  s     r+   r  zKTestOverloadInlining.test_inline_always_operators_getitem.<locals>.<lambda>      d r-   __getitem__r"   r#   c                 ,    t          |           rS d S r1   r  r  r  r  dummy_getitem_impls     r+   overload_dummy_getitemzYTestOverloadInlining.test_inline_always_operators_getitem.<locals>.overload_dummy_getitem  %    #y)) *))* *r-   r'   getitemTr   r  r  r   r  r  r{   rA   r   r  r  r  r  r  s        @@r+   $test_inline_always_operators_getitemz9TestOverloadInlining.test_inline_always_operators_getitem  s    	 	 		 	 	  //11y22}&8999	("8	4	4	4	* 	* 	* 	* 	* 
5	4	* 	

4!It3D
EEE

&"+T!2 	 	4 	4 	4 	4 	4r-   c                 D   d }d }|                                  \  }d t          |d           t          t          j        d          fd            }|                     | |            dd	d
i           |                     | |            d	d
i           d S )Nc                     | |         S r1   r(   r  s     r+   r   zFTestOverloadInlining.test_inline_never_operators_getitem.<locals>.impl  r  r-   c                     | d         S r&   r(   r)   s    r+   r  zUTestOverloadInlining.test_inline_never_operators_getitem.<locals>.impl_static_getitem  r  r-   c                     d S r1   r(   r  s     r+   r  zJTestOverloadInlining.test_inline_never_operators_getitem.<locals>.<lambda>  r  r-   r  r7   r#   c                 ,    t          |           rS d S r1   r  r  s     r+   r  zXTestOverloadInlining.test_inline_never_operators_getitem.<locals>.overload_dummy_getitem  r  r-   r'   r  Fr   r  r  s        @@r+   #test_inline_never_operators_getitemz8TestOverloadInlining.test_inline_never_operators_getitem  s    	 	 		 	 	  //11y22}&8999	("7	3	3	3	* 	* 	* 	* 	* 
4	3	* 	

4!Iu3E
FFF

&"+U!3 	 	5 	5 	5 	5 	5r-   c                 2   d t          d          d             }fd}|                     t                    5 }|                     |ddi           d d d            n# 1 swxY w Y   |                     d	t          |j                             d S )
Nc                     | |d         z   S Nr   r(   r  s     r+   r   z;TestOverloadInlining.test_inline_stararg_error.<locals>.foo  s    qt8Or-   r"   r#   c                     d S )Nc                     | |d         z   S r  r(   r  s     r+   r  zVTestOverloadInlining.test_inline_stararg_error.<locals>.overload_foo.<locals>.<lambda>  s    QqT r-   r(   r  s     r+   r  zDTestOverloadInlining.test_inline_stararg_error.<locals>.overload_foo  s    )))r-   c                        ddd          S )Nr   r   r(   r   s   r+   r   z<TestOverloadInlining.test_inline_stararg_error.<locals>.impl  s    3q!Q<<r-   r   Tr   z-Stararg not supported in inliner for arg 1 *b)r   assertRaisesrh  r{   assertInrX   	exception)rA   r  r   r   r   s       @r+   test_inline_stararg_errorz.TestOverloadInlining.test_inline_stararg_error  s	   	 	 	 
#h	'	'	'	* 	* 
(	'	*	  	  	  	  	  233 	:qJJtE4=J999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	E!+&&	( 	( 	( 	( 	(s   A$$A(+A(c                 x  
 
fd}d}t          |||          D ]\  }}}d d 
d t          |          d             }t          
|          d             }t          |          d	             }| j        |         | j        |         | j        |         d
}	|                     ||	           d S )Nc                  J                 }              }             }| ||fS r1   r(   r   s      r+   r   z;TestOverloadInlining.test_basic_inline_combos.<locals>.impl  r   r-   r6   c                      d S r1   r(   r(   r-   r+   r   z:TestOverloadInlining.test_basic_inline_combos.<locals>.foo  r  r-   c                      d S r1   r(   r(   r-   r+   r   z:TestOverloadInlining.test_basic_inline_combos.<locals>.bar  r  r-   c                      d S r1   r(   r(   r-   r+   r   z:TestOverloadInlining.test_basic_inline_combos.<locals>.baz  r  r-   r#   c                      d } | S )Nc                      d S r1   r(   r(   r-   r+   r   zQTestOverloadInlining.test_basic_inline_combos.<locals>.foo_overload.<locals>.impl      Fr-   r(   r  s    r+   r  zCTestOverloadInlining.test_basic_inline_combos.<locals>.foo_overload        r-   c                      d } | S )Nc                      d S r1   r(   r(   r-   r+   r   zQTestOverloadInlining.test_basic_inline_combos.<locals>.bar_overload.<locals>.impl  r  r-   r(   r  s    r+   bar_overloadzCTestOverloadInlining.test_basic_inline_combos.<locals>.bar_overload  r  r-   c                      d } | S )Nc                      d S r1   r(   r(   r-   r+   r   zQTestOverloadInlining.test_basic_inline_combos.<locals>.baz_overload.<locals>.impl  r  r-   r(   r  s    r+   baz_overloadzCTestOverloadInlining.test_basic_inline_combos.<locals>.baz_overload  r  r-   r   r   )r   r   r~   r{   )rA   r   r   r   r   r   r  r  r  rG   r   r   r   s             @@@r+   r   z-TestOverloadInlining.test_basic_inline_combos  sP   	 	 	 	 	 	 	 '29$d2K2K  	:  	:.J
J       c*---  .-
 c*---  .-
 c*---  .-
 %)$;J$G$($;J$G$($;J$GI IM JJt=J9999A 	:  	:r-   c                 >  	
 	
fd}d}t          |||          D ]~\  }}}d 
d d 	dd} |
dd|	            |d
d|	            |	dd|	           | j        |         | j        |         | j        |         d}|                     ||           d S )Nc                  J                 }              }             }| ||fS r1   r(   r   s      r+   r   z8TestOverloadInlining.test_freevar_bindings.<locals>.impl  r   r-   r6   c                  $    d} d}| dz   }| |dz   |fS )Nr   r   r   r   r(   r   s      r+   r   z7TestOverloadInlining.test_freevar_bindings.<locals>.foo  %    F1q5!}$r-   c                  $    d} d}| dz   }| |dz   |fS )Nr   r   r   r   r(   r   s      r+   r   z7TestOverloadInlining.test_freevar_bindings.<locals>.bar	  r  r-   c                  $    d} d}| dz   }| |dz   |fS )Nr   rM   r   r   r(   r   s      r+   r   z7TestOverloadInlining.test_freevar_bindings.<locals>.baz  r  r-   c                 R    dz   t          | |          fd            }d S )Nr   r#   c                      fd} | S )Nc                       dz   fS r   r(   r   s   r+   r   zWTestOverloadInlining.test_freevar_bindings.<locals>.factory.<locals>.func.<locals>.impl  s     !1q5!},r-   r(   )r   r*   r   r   s    r+   ri   zITestOverloadInlining.test_freevar_bindings.<locals>.factory.<locals>.func  s+    - - - - - - -Kr-   )r   )rq  r*   r   r$   ri   r   s    ``  @r+   r   z;TestOverloadInlining.test_freevar_bindings.<locals>.factory  sS    F&000            10     r-   r   r   r#   r   r   r   rM   r   r   r1   r   )rA   r   r   r   r   r   r   rG   r   r   r   s           @@@r+   r   z*TestOverloadInlining.test_freevar_bindings  s4   	 	 	 	 	 	 	 '29$d2K2K '	: '	:.J
J% % %% % %% % %        GCR
3333GCR
3333GCR
3333$($;J$G$($;J$G$($;J$GI IM JJt=J9999O'	: '	:r-   c                 >    d }|                      |ddi           d S )Nc                  $    d} t          |           S r   r2   )r   s    r+   r   z?TestOverloadInlining.test_global_overload_binding.<locals>.impl*  r   r-   r/   Tr   r   r   s     r+   test_global_overload_bindingz1TestOverloadInlining.test_global_overload_binding(  r   r-   c                 P    ddl m fd}|                     |ddi           d S )Nr'   r   c                  0    t           dz   }              | fS r   r   r  s    r+   r   zBTestOverloadInlining.test_inline_from_another_module.<locals>.impl4  r   r-   r   Tr   )r   r   r{   )rA   r   r   s     @r+   r   z4TestOverloadInlining.test_inline_from_another_module0  r   r-   c                 V    dd l mc m fd}|                     |ddi           d S )Nr   c                  D    t           dz   }                                 | fS r   )r   r   r   s    r+   r   zLTestOverloadInlining.test_inline_from_another_module_w_getattr.<locals>.impl>  r   r-   r   Tr   r   r   s     @r+   r   z>TestOverloadInlining.test_inline_from_another_module_w_getattr:  r   r-   c                 X    dd l }dd lm fd}|                     |ddi           d S )Nr   c                  N    t           dz   } j                                        | fS r   )r   r   r   r  s    r+   r   zNTestOverloadInlining.test_inline_from_another_module_w_2_getattr.<locals>.implI  r  r-   r   Tr   r  r  s      @r+   r  z@TestOverloadInlining.test_inline_from_another_module_w_2_getattrD  r	  r-   c                 ^    d } |            fd}|                      |ddi           d S )Nc                  J    ddl m t          d          fd            } | S )Nr'   r!  r"   r#   c                                    S r1   r(   r!  s   r+   r  z]TestOverloadInlining.test_inline_from_another_module_as_freevar.<locals>.factory.<locals>.tmpT  r  r-   )r   r   r   )r  r   s    @r+   r   zPTestOverloadInlining.test_inline_from_another_module_as_freevar.<locals>.factoryQ  r  r-   c                  0    t           dz   }              | fS r   r   )r   bops    r+   r   zMTestOverloadInlining.test_inline_from_another_module_as_freevar.<locals>.impl[  r   r-   r   Tr   r   )rA   r   r   r+  s      @r+   r  z?TestOverloadInlining.test_inline_from_another_module_as_freevarO  r  r-   c                 h    ddl m fd} |dd          }|                     |ddi           d S )	Nr'   )bop_factoryc                 2                  fd}|S )Nc                  8    t           z  z   }              | fS r1   r   r  s    r+   r   zYTestOverloadInlining.test_inline_w_freevar_from_another_module.<locals>.gen.<locals>.implh  r  r-   r(   )r   r   r   r   r-  s   `` @r+   r  zKTestOverloadInlining.test_inline_w_freevar_from_another_module.<locals>.gene  r  r-   r   r   r   Tr   )r   r-  r{   )rA   r  r   r-  s      @r+   r  z>TestOverloadInlining.test_inline_w_freevar_from_another_modulea  r  r-   c                 X   	  fd} fd}dD ]J\  fd	t          	|          fd            }	fd}                     |dd	d
k    i           KdD ]J\  fdt          |          fd            }fd}                     |ddd
k    i           Kd S )Nc                                          | t          j                                       | j        d                               |j                  S r   r"  r	   r#  rZ   rT   rE   rB   r$  s      r+   r'  zCTestOverloadInlining.test_inlining_models.<locals>.s17_caller_modelr  J    !!$000TWf---..{/BCCCr-   c                                          | t          j                                       | j        d                               |j                  S r   r2  r$  s      r+   r*  zCTestOverloadInlining.test_inlining_models.<locals>.s17_callee_modelw  r3  r-   ))r   r,  r-  c                       S r1   r(   r/  s   r+   r   z6TestOverloadInlining.test_inlining_models.<locals>.foo      r-   r#   c                      fd} | S )Nc                       S r1   r(   r/  s   r+   r   zGTestOverloadInlining.test_inlining_models.<locals>.foo_ol.<locals>.impl      !Mr-   r(   r   r0  s    r+   foo_olz9TestOverloadInlining.test_inlining_models.<locals>.foo_ol  !    " " " " "r-   c                 0    | z   }             }|dz   |fS r   r(   r3  s      r+   r   z7TestOverloadInlining.test_inlining_models.<locals>.impl  r5  r-   r   r   r9   r   )r+  )r,  r   c                       S r1   r(   r/  s   r+   r   z6TestOverloadInlining.test_inlining_models.<locals>.bar  r6  r-   c                      fd} | S )Nc                       S r1   r(   r/  s   r+   r   zGTestOverloadInlining.test_inlining_models.<locals>.bar_ol.<locals>.impl  r9  r-   r(   r:  s    r+   bar_olz9TestOverloadInlining.test_inlining_models.<locals>.bar_ol  r<  r-   c                 0    | z   }             }|dz   |fS r   r(   r8  s      r+   r   z7TestOverloadInlining.test_inlining_models.<locals>.impl  r5  r-   r   r  )
rA   r'  r*  r;  r   rA  r   r0  r4  r   s
   `     @@@@r+   r9  z)TestOverloadInlining.test_inlining_modelsp  s   	D 	D 	D 	D 	D
	D 	D 	D 	D 	D 3 	F 	FNFF     c"2333    43
           
 JJtRv|/DJEEEE 3 	F 	FNFF     c"2333    43
           
 JJtRv|/DJEEEE!	F 	Fr-   c                 ~   d t          d          d             }t          d          d             }d }t          |          d             }fd	}|                     |d
did          }t          t          |j                                                            d         }d |                    d          D             }|                     t          |          dk               d |	                    t          j                  D             }	|	D ]}
|                     |
j        d           d S )Nc                 d    t          t          |           t          j                  r| dz   S | dz   S )Nr   r'   )r=   r   r   Floatr)   s    r+   r   z_TestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.bar  s.    &))U[11 4x1ur-   r"   r#   c                 D    t          | t          j                  rd }|S d S )Nc                     | dz   S r&   r(   r)   s    r+   r   ztTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.bar_int_ol.<locals>.impl      q5Lr-   r=   r   Integerr*   r   s     r+   
bar_int_olzfTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.bar_int_ol  4    !U]++ ! ! ! r-   r7   c                 D    t          | t          j                  rd }|S d S )Nc                     | dz   S )Nr   r(   r)   s    r+   r   zvTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.bar_float_ol.<locals>.impl  s    t8Or-   )r=   r   rE  rK  s     r+   bar_float_olzhTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.bar_float_ol  s4    !U[)) $ $ $ r-   c                      dS r  r(   rp   s    r+   always_inline_cost_modelztTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.always_inline_cost_model      4r-   c                 D    t          | t          j                  rd }|S d S )Nc                     | dz   S r&   r(   r)   s    r+   r   zxTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.bar_complex_ol.<locals>.impl  rH  r-   )r=   r   ComplexrK  s     r+   bar_complex_olzjTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.bar_complex_ol  rM  r-   c                  V     d          }  d          } d          }| |z   |z   S )Nr'   gffffff@y              @r(   r   r   r   r   s      r+   r   z`TestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.impl  s8    AACABAq519r-   r   Fr'   rC  c                     g | ]}|S r(   r(   rQ   s     r+   rS   zfTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.<listcomp>  s    888q888r-   rU   )rT   c           	      n    g | ]2}t          t          |d d          t          j                  +|j        3S )r?   N)r=   rg   r	   rp  r?   rQ   s     r+   rS   zfTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics.<locals>.<listcomp>  sM     F F Fa7D 9 928DDF!' F F Fr-   r   )r   r{   rd   re   r:   rW   rf   
assertTruerc   
find_instsr	   r>   assertNotEqualr?   )rA   rL  rP  rS  rX  r   ru   rv   callsconstsvalr   s              @r+   =test_multiple_overloads_with_different_inline_characteristicszRTestOverloadInlining.test_multiple_overloads_with_different_inline_characteristics  s   
	 	 	 
#h	'	'	'	 	 
(	'	 
#g	&	&	&	 	 
'	&		 	 	 
#6	7	7	7	 	 
8	7		 	 	 	 	 jjeU^jKK T#***,,--..q188E,,,77888E

a(((F F5#3#3BI#>#> F F F 	1 	1C	40000	1 	1r-   c                     d }d  t          d          |           fd}d}|                     ||ddi	           d
  t          d          |           d}|                     ||ddi	           d S )Nc                     t          | t          j                  sd }|S | j        dk    rd }|S | j        dv rd }|S d S )Nc                      t          |           S r1   )r   r   s    r+   foo_noopznTestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee.<locals>.foo_ovld.<locals>.foo_noop  s    $U+++r-   rX   c                     dS Nr   r(   r   s    r+   foo_as_str_implzuTestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee.<locals>.foo_ovld.<locals>.foo_as_str_impl      2r-   )int64float64c                     dS Nr   r(   r   s    r+   foo_as_num_implzuTestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee.<locals>.foo_ovld.<locals>.foo_as_num_impl  rk  r-   )r=   r   StringLiteralliteral_value)r   rg  rj  rp  s       r+   foo_ovldz\TestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee.<locals>.foo_ovld  sz    eU%899  , , ,"e++  &&"&:::  && ;:r-   c                     dS ri  r(   r   s    r+   r   zWTestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee.<locals>.foo      2r-   r"   r#   c                      |           S r1   r(   )r   r   s    r+   ro   z]TestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee.<locals>.test_impl  s    3u::r-   rX   r   Tr   c                     dS ro  r(   r   s    r+   r   zWTestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee.<locals>.foo  ru  r-   rl  r  )rA   rs  ro   r   r   s       @r+   5test_overload_inline_always_with_literally_in_inlineezJTestOverloadInlining.test_overload_inline_always_with_literally_in_inlinee  s    	' 	' 	'$	 	 	 	'X&&&x000	 	 	 	 	 

9eE4=
AAA	 	 	&X&&&x000 

9eE4=
AAAAAr-   c                     dd t          d          fd            }fd}|                     |dddi	           d S )
NTc                     dS r  r(   As    r+   r   z8TestOverloadInlining.test_inline_always_ssa.<locals>.foo	  rT  r-   r"   r#   c                     fd}|S )Nc                 x    }t          t          |                     D ]}}| |         r| |         }||z  }|S r1   )r   rc   )r|  r   r   dummy
dummy_trues       r+   r   zOTestOverloadInlining.test_inline_always_ssa.<locals>.foo_overload.<locals>.impl  sM    s1vv  A&Et % !!JAAr-   r(   )r|  r   r  s     r+   r  zATestOverloadInlining.test_inline_always_ssa.<locals>.foo_overload  s#         Kr-   c                  B      t          j        g d                    S )N)TFT)r   arrayr   s   r+   r   z9TestOverloadInlining.test_inline_always_ssa.<locals>.impl  s$    3rx 3 3 344555r-   rO   r   rH   rG   r  )rA   r  r   r  r   s      @@r+   test_inline_always_ssaz+TestOverloadInlining.test_inline_always_ssa  s     
	 	 	 
#h	'	'	'
	 
	 
	 
	 
(	'
		6 	6 	6 	6 	6 	

4VE4=
IIIIIr-   c                    d t          d          fd            }t          fd            }t          j        d          5 }t          j        dt
          j                   t                       |                      |            |	                                           d d d            n# 1 swxY w Y   |                     t          |          d           d S )	Nc                  ,    d} | dk    r| dz  } | dk    dS )Nr   r'   r   r   r(   r  s    r+   r   zGTestOverloadInlining.test_inline_always_ssa_scope_validity.<locals>.bar!  s+    Aa%%a a%% 2r-   r"   r#   c                       S r1   r(   r   s   r+   bar_implzLTestOverloadInlining.test_inline_always_ssa_scope_validity.<locals>.bar_impl(  s    Jr-   c                                     d S r1   r(   r   s   r+   r   zGTestOverloadInlining.test_inline_always_ssa_scope_validity.<locals>.foo,  s    CEEEEEr-   T)recordr   )r   r   warningscatch_warningssimplefilterr   NumbaIRAssumptionWarningr!   rZ   py_funcrc   )rA   r  r   wr   s       @r+   %test_inline_always_ssa_scope_validityz:TestOverloadInlining.test_inline_always_ssa_scope_validity  s<   	 	 	 
#h	'	'	'	 	 	 	 
(	'	 
	 	 	 	 
	 $D111 	3Q!(F,KLLL$&&&SSUUCKKMM222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	Q#####s   AB22B69B6N)rm   r|   r}   r   r   r  r  r  r  r  r  r  r   r   r  r   r   r  r  r  r9  rc  rx  r  r  r(   r-   r+   r  r    sv       7 7 76 6 6 6 6 6I I I4H H H6%J %J %JN4 4 405 5 50( ( ("*: *: *:X1: 1: 1:f? ? ?6 6 66 6 6	6 	6 	66 6 6$6 6 60F 0F 0Fd61 61 61p(B (B (BTJ J J4$ $ $ $ $r-   r  c                   t     e Zd Z fdZ	 ddZ	 ddZd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Z xZS )TestOverloadMethsAttrsInliningc                 ~    |                                   t          t          |                                            d S r1   )r  superr  setUp)rA   	__class__s    r+   r  z$TestOverloadMethsAttrsInlining.setUp;  s8    ,d3399;;;;;r-   Tc                     t          t                    |          }|                      || |           |j        |j        d                  j        d         }|j        |_        |                     t          |j                  |           |rU|j                                        D ]9}t          |
                    d                    }	|                     |	           :d S g }
|j                                        D ]'}|
t          |
                    d                    z  }
(|                     |
           d S )NrI   r   rK   rU   r   r   rZ   r[   r\   r]   r:   rc   r;   listrf   rn   r]  )rA   ro   rp   expectedrH   expects_inlinedrt   ru   rv   r`  allcallss              r+   check_methodz+TestOverloadMethsAttrsInlining.check_method?  s>   >%=>>>yII111 v034=nMZ
SZ+666 
	&**,, ( (U--f5566  ''''( (
 H**,, ; ;D!1!1&!9!9:::OOH%%%%%r-   c                     t          t                    |          }|                      || |           |j        |j        d                  j        d         }|j        |_        |                     t          |j                  |           |rU|j                                        D ]9}t          |
                    d                    }	|                     |	           :d S g }
|j                                        D ]'}|
t          |
                    d                    z  }
(|                     |
           d S )NrI   r   rK   rg   r  )rA   ro   rp   r  rH   r  rt   ru   rv   getattrsallgetattrss              r+   check_getattrz,TestOverloadMethsAttrsInlining.check_getattrU  s@   >%=>>>yII111 v034=nMZ
SZ+666 
	)**,, + + 0 0 ; ;<<  ****+ +
 K**,, A AtE$4$4Y$?$?@@@OOK(((((r-   c                     |                                  \  }}t          |dd          d	d            }d }|                     | |            gdd           d S )
Ninline_methodr"   r#   c                     dd}|S )Nc                     d||fS )NTHIS IS INLINEDr(   )r  rb  val2s      r+   getzqTestOverloadMethsAttrsInlining.test_overload_method_default_args_always.<locals>._get_inlined_method.<locals>.getp  s    )355r-   NNr(   )r  rb  r  r  s       r+   _get_inlined_methodzdTestOverloadMethsAttrsInlining.test_overload_method_default_args_always.<locals>._get_inlined_methodn  s    6 6 6 6Jr-   c                 X    |                      d          |                      d          fS )Nr   A  )r  r  r  s    r+   r   zTTestOverloadMethsAttrsInlining.test_overload_method_default_args_always.<locals>.foot  s,    $$S))3+<+<#+<+F+FFFr-   ))r  r   N)r  Nr  r'   )ro   rp   r  rH   r  r  r   r  )rA   r  r  r  r   s        r+   (test_overload_method_default_args_alwayszGTestOverloadMethsAttrsInlining.test_overload_method_default_args_alwaysk  s    //11y	OH	E	E	E	 	 	 
F	E	
	G 	G 	G 	%''6 	 	
 	
 	
 	
 	
r-   c                     fd}|                                  \  }}t          |d|          d             }d }|                     | |            gdd           d S )	Nc                      S r1   r(   )rp   should_inlines    r+   	costmodelzKTestOverloadMethsAttrsInlining.make_overload_method_test.<locals>.costmodel  s	      r-   r  r#   c                     d }|S )Nc                 
    d|fS )NTHIS IS INLINED!!!r(   )r  rb  s     r+   r  zbTestOverloadMethsAttrsInlining.make_overload_method_test.<locals>._get_inlined_method.<locals>.get  s    ,c22r-   r(   )r  rb  r  s      r+   r  zUTestOverloadMethsAttrsInlining.make_overload_method_test.<locals>._get_inlined_method  s    3 3 3Jr-   c                 ,    |                      d          S Nr   r  r  s    r+   r   zETestOverloadMethsAttrsInlining.make_overload_method_test.<locals>.foo  s    $$S)))r-   )r  r   r'   ro   rp   r  rH   r  r  )rA   r  r  r  r  r  r   s     `    r+   make_overload_method_testz8TestOverloadMethsAttrsInlining.make_overload_method_test  s    	! 	! 	! 	! 	!  //11y	OI	F	F	F	 	 
G	F	
	* 	* 	* 	%''0) 	 	
 	
 	
 	
 	
r-   c                 4    |                      dd           d S Nr"   Tr  r  r  rA   s    r+   'test_overload_method_cost_driven_alwayszFTestOverloadMethsAttrsInlining.test_overload_method_cost_driven_always  s/    && 	' 	
 	
 	
 	
 	
r-   c                 4    |                      dd           d S Nr7   Fr  r  r  s    r+   &test_overload_method_cost_driven_neverzETestOverloadMethsAttrsInlining.test_overload_method_cost_driven_never  s/    && 	' 	
 	
 	
 	
 	
r-   c                 6    |                      d d           d S )Nc                      dS r  r(   rR  s    r+   r  z]TestOverloadMethsAttrsInlining.test_overload_method_cost_driven_must_inline.<locals>.<lambda>      D r-   Tr  r  r  s    r+   ,test_overload_method_cost_driven_must_inlinezKTestOverloadMethsAttrsInlining.test_overload_method_cost_driven_must_inline  s2    &&(( 	' 	
 	
 	
 	
 	
r-   c                 6    |                      d d           d S )Nc                      dS NFr(   rR  s    r+   r  z[TestOverloadMethsAttrsInlining.test_overload_method_cost_driven_no_inline.<locals>.<lambda>      E r-   Fr  r  r  s    r+   *test_overload_method_cost_driven_no_inlinezITestOverloadMethsAttrsInlining.test_overload_method_cost_driven_no_inline  s2    &&)) 	' 	
 	
 	
 	
 	
r-   c                     |                                  \  }}t          |d|          d             }d }|                     | |            gdd|           d S )Ninlinemer#   c                     d }|S )Nc                     dS )NMY INLINED ATTRSr(   r  s    r+   r  z_TestOverloadMethsAttrsInlining.make_overload_attribute_test.<locals>._get_inlineme.<locals>.get  s    ))r-   r(   )r  r  s     r+   _get_inlinemezRTestOverloadMethsAttrsInlining.make_overload_attribute_test.<locals>._get_inlineme  s    * * *Jr-   c                     | j         S r1   )r  r  s    r+   r   zHTestOverloadMethsAttrsInlining.make_overload_attribute_test.<locals>.foo  s
    <r-   r  r'   r  )r  r   r  )rA   r  r  r  r  r  r   s          r+   make_overload_attribute_testz;TestOverloadMethsAttrsInlining.make_overload_attribute_test  s    //11y	Iz)	D	D	D	 	 
E	D	
	  	  	  	%''') 	 	
 	
 	
 	
 	
r-   c                 4    |                      dd           d S r  r  r  s    r+   test_overload_attribute_alwaysz=TestOverloadMethsAttrsInlining.test_overload_attribute_always  s/    )) 	* 	
 	
 	
 	
 	
r-   c                 4    |                      dd           d S r  r  r  s    r+   test_overload_attribute_neverz<TestOverloadMethsAttrsInlining.test_overload_attribute_never  s/    )) 	* 	
 	
 	
 	
 	
r-   c                 6    |                      d d           d S )Nc                      dS r  r(   rR  s    r+   r  z^TestOverloadMethsAttrsInlining.test_overload_attribute_costmodel_must_inline.<locals>.<lambda>  r  r-   Tr  r  r  s    r+   -test_overload_attribute_costmodel_must_inlinezLTestOverloadMethsAttrsInlining.test_overload_attribute_costmodel_must_inline  s2    ))(( 	* 	
 	
 	
 	
 	
r-   c                 6    |                      d d           d S )Nc                      dS r  r(   rR  s    r+   r  z\TestOverloadMethsAttrsInlining.test_overload_attribute_costmodel_no_inline.<locals>.<lambda>  r  r-   Fr  r  r  s    r+   +test_overload_attribute_costmodel_no_inlinezJTestOverloadMethsAttrsInlining.test_overload_attribute_costmodel_no_inline  s2    )))) 	* 	
 	
 	
 	
 	
r-   )T)rm   r|   r}   r  r  r  r  r  r  r  r  r  r  r  r  r  r  __classcell__r  s   @r+   r  r  :  s       < < < < <
 &*& & & &. '+) ) ) ),
 
 
(
 
 
.
 
 

 
 

 
 

 
 

 
 
(
 
 

 
 

 
 

 
 
 
 
 
 
r-   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestGeneralInliningc                 |    t          t          d          d             }d }|                     |ddi           d S )Nr"   r#   c                     d S r1   r(   r{  s    r+   overload_lenzSTestGeneralInlining.test_with_inlined_and_noninlined_variants.<locals>.overload_len  s    $ $r-   c                  $    t          g d          S )N)r   r   rB  )rc   r(   r-   r+   r   zKTestGeneralInlining.test_with_inlined_and_noninlined_variants.<locals>.impl  s    yyy>>!r-   rc   Fr   )r   rc   r{   )rA   r  r   s      r+   )test_with_inlined_and_noninlined_variantsz=TestGeneralInlining.test_with_inlined_and_noninlined_variants  s\    
 
#h	'	'	'	$ 	$ 
(	'	$	" 	" 	" 	

4u~
66666r-   c                     ddt          d          dd            }fd}|                     |dd	i
           d S )Nr   r   c                     | |z   |z   S r1   r(   r   r   r   s      r+   r   z1TestGeneralInlining.test_with_kwargs.<locals>.foo  s    q519r-   r"   r#   c                     dd}|S )Nr   r   c                     | |z   |z   S r1   r(   r  s      r+   r   zHTestGeneralInlining.test_with_kwargs.<locals>.overload_foo.<locals>.impl  s    1uqy r-   r   r   r(   )r   r   r   r   s       r+   r  z:TestGeneralInlining.test_with_kwargs.<locals>.overload_foo  s    ! ! ! !Kr-   c                        dd          S )Nr   r   r   r(   r   s   r+   r   z2TestGeneralInlining.test_with_kwargs.<locals>.impl  s    3qB<<<r-   r   Tr   r  r  r  s      @r+   test_with_kwargsz$TestGeneralInlining.test_with_kwargs  s    	 	 	 	 
#h	'	'	'	 	 	 
(	'	
	  	  	  	  	  	

4t}
55555r-   c                 ~    t          d          dd            dfd	}|                     |d	d
ddi           d S )Nr"   r#   r   rQ  c                     | |z   S r1   r(   r  s      r+   r   z2TestGeneralInlining.test_with_kwargs2.<locals>.bar  s    q5Lr-   rJ  r   c                 $     | |z   d          S )Nr   r  r(   rZ  s      r+   r   z3TestGeneralInlining.test_with_kwargs2.<locals>.impl  s    3q1u####r-   r   rB  r   Tr   )r   rQ  )rJ  r   r   r   s     @r+   test_with_kwargs2z%TestGeneralInlining.test_with_kwargs2  sq    	X				 	 	 
			$ 	$ 	$ 	$ 	$ 	$ 	

4AeT]
;;;;;r-   c                 z    t          d          d	d            fd}|                     |dddi           d S )
Nr"   r#   c                     |d}| |fS r  r(   r  s     r+   r   z@TestGeneralInlining.test_inlining_optional_constant.<locals>.bar  s    yq6Mr-   c                  D                    d            d          fS )Nr   r  r  r(   r   s   r+   r   zATestGeneralInlining.test_inlining_optional_constant.<locals>.impl  s(    355##c((CC#JJJ..r-   rO   r   Tr  r  r   r   s     @r+   test_inlining_optional_constantz3TestGeneralInlining.test_inlining_optional_constant  sl     
X				 	 	 
		
	/ 	/ 	/ 	/ 	/ 	

4VE4=
IIIIIr-   N)rm   r|   r}   r  r  r  r  r(   r-   r+   r  r    sU        7 7 7 6 6 6 	< 	< 	<J J J J Jr-   r  c                       e Zd Zd ZdS )TestInlineOptionsc                    t          d          }|                     |j                   |                     |j                   |                     |j                   |                     |j        d           t          d          }|                     |j                   |                     |j                   |                     |j                   |                     |j        d           d }t          |          }|                     |j                   |                     |j                   |                     |j                   |                     |j        |           d S )Nr"   r7   c                     | S r1   r(   r)   s    r+   
cost_modelz0TestInlineOptions.test_basic.<locals>.cost_model&  s    Hr-   )	r   r]  is_always_inlinern   is_never_inlinehas_cost_modelrZ   r?   assertIs)rA   r"   r7   r   models        r+   
test_basiczTestInlineOptions.test_basic  sM   x((/000/000.///x000g&&/000-...-...g...	 	 	j))/000.///,---ek:.....r-   N)rm   r|   r}   r  r(   r-   r+   r  r    s#        / / / / /r-   r  c                   B    e Zd Zd Zd Zd Zd Zd Zed             Z	dS )TestInlineMiscIssuesc                    d t          d          d             }t          d          fd            }t          d          d             } |t          j        d	                      |t          j        d	                     d S )
Nc                     d S r1   r(   )r  r   s     r+   output_factoryz;TestInlineMiscIssues.test_issue4691.<locals>.output_factory2  r  r-   r"   r#   c                 N    t          | t          j        j                  rd }|S d S )Nc                 L    | j         dd          }t          j        ||          S Nr   r   )shaper   r   )r  r   r  s      r+   r   zLTestInlineMiscIssues.test_issue4691.<locals>.ol_output_factory.<locals>.impl8  s&    !KOE8E7777r-   )r=   r   npytypesArray)r  r   r   s      r+   ol_output_factoryz>TestInlineMiscIssues.test_issue4691.<locals>.ol_output_factory5  s9    %!566 8 8 8  r-   T)nogilc                 *     | | j                   }|S r1   r   )r  outr  s     r+   rl   z/TestInlineMiscIssues.test_issue4691.<locals>.fn>  s     .44CJr-   c                 R    t          j        | j        dd          | j                  S r  )r   r   r  r   r  s    r+   fn2z0TestInlineMiscIssues.test_issue4691.<locals>.fn2C  s#    8EKO5;????r-   )r   r   r   r   r   )r   r   r   ones)rA   r  rl   r  r  s       @r+   test_issue4691z#TestInlineMiscIssues.test_issue46911  s    	 	 	 
.	2	2	2	 	 
3	2	 
D				 	 	 	 
		 
D				@ 	@ 
		@ 	27'(()))BG())*****r-   c                     t          d          d             t           fd            } |t          j        d                     d S )Nr"   r#   c                 :    | j         dk    rt          d          | S )Nr'   zInvalid number of dimensions)ndim
ValueErrorr  s    r+   inliningz5TestInlineMiscIssues.test_issue4693.<locals>.inliningL  s!    zQ !?@@@Lr-   c                      |           S r1   r(   )r  r  s    r+   rl   z/TestInlineMiscIssues.test_issue4693.<locals>.fnS  s    8E??"r-   r   )r   r   r   )rA   rl   r  s     @r+   test_issue4693z#TestInlineMiscIssues.test_issue4693J  sm    	X				 	 
		 
	# 	# 	# 	# 
	# 	28B<<r-   c                 &   t          d          d             t           fd            }|                     t                    5 } |             d d d            n# 1 swxY w Y   |                     dt	          |j                             d S )Nr"   r#   c                  $    d} t          |           )NSomething happened)r  )msgs    r+   r  z5TestInlineMiscIssues.test_issue5476.<locals>.inlining\  s    &CS//!r-   c                                    S r1   r(   )r  s   r+   rl   z/TestInlineMiscIssues.test_issue5476.<locals>.fna  s    8::r-   r$  )r   r  r  r  rX   r  )rA   rl   raisesr  s      @r+   test_issue5476z#TestInlineMiscIssues.test_issue5476Y  s     
X				" 	" 
		" 
	 	 	 	 
	 z** 	fBDDD	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*C0@,A,ABBBBBs   AA"%A"c                   	
  G 	fdd           G d dt           j                  t                     G d dt          j                              }t          dd           t          fd	            
t          d
          
fd            }t          dd
          d             }t          fd            }d	d} |	|          }| 
                    |	|z             d S )Nc                        e Zd Zd Z fdZdS )2TestInlineMiscIssues.test_issue5792.<locals>.Dummyc                     || _         d S r1   data)rA   r.  s     r+   __init__z;TestInlineMiscIssues.test_issue5792.<locals>.Dummy.__init__o  s     			r-   c                     |j         z  S r1   r-  )rA   otherr.  s     r+   divz6TestInlineMiscIssues.test_issue5792.<locals>.Dummy.divr  s    ej((r-   N)rm   r|   r}   r/  r2  r-  s   r+   r  r+  n  s=        ! ! !) ) ) ) ) ) )r-   r  c                        e Zd Z fdZ xZS )6TestInlineMiscIssues.test_issue5792.<locals>.DummyTypec                 l    || _         t                                          d| j          d           d S )NzDummy())rj   r.  r  r/  )rA   r.  r  s     r+   r/  z?TestInlineMiscIssues.test_issue5792.<locals>.DummyType.__init__v  s9     	  &;ty&;&;&; <<<<<r-   rm   r|   r}   r/  r  r  s   @r+   r  r4  u  s8        = = = = = = = = =r-   r  c                        e Zd Z fdZ xZS );TestInlineMiscIssues.test_issue5792.<locals>.DummyTypeModelc                 b    d|j         fg}t                                          |||           d S )Nr.  r7  )rA   dmmfe_typemembersr  s       r+   r/  zDTestInlineMiscIssues.test_issue5792.<locals>.DummyTypeModel.__init__|  s8    W\*   gw77777r-   r8  r  s   @r+   DummyTypeModelr:  z  s8        8 8 8 8 8 8 8 8 8r-   r?  r.  _datac                 H    d } |          }t          ||          }||fS )Nc                     |j         }|\  } t          j        |          | |          }||_        | j        r'| j                            ||j        d         |           |                                S r  )	return_typer   create_struct_proxyr.  
enable_nrtnrtincrefrp   	_getvalue)contextbuildersigrp   typr.  r  s          r+   codegenzHTestInlineMiscIssues.test_issue5792.<locals>.init_dummy.<locals>.codegen  so    o83C88'JJ!
% CK&&wTBBB(((r-   r   )	typingctxr.  rM  ret_typrK  r  s        r+   
init_dummyz7TestInlineMiscIssues.test_issue5792.<locals>.init_dummy  s:    	) 	) 	)  iooGGT**C<r-   r"   r#   c                     fd}|S )Nc                      |           S r1   r(   )r.  rP  s    r+   ctorzITestInlineMiscIssues.test_issue5792.<locals>.dummy_overload.<locals>.ctor  s    !z$'''r-   r(   )r.  rS  rP  s     r+   dummy_overloadz;TestInlineMiscIssues.test_issue5792.<locals>.dummy_overload  s#    ( ( ( ( ( Kr-   r2  c                     d }|S )Nc                      | j         |j         z  S r1   )r@  )rA   r1  s     r+   r   zGTestInlineMiscIssues.test_issue5792.<locals>.div_overload.<locals>.impl  s    zEK//r-   r(   )rA   r1  r   s      r+   div_overloadz9TestInlineMiscIssues.test_issue5792.<locals>.div_overload  s    0 0 0 Kr-   c                 Z     |           } |          }|                     |          S r1   )r2  )r.  
other_datar  r1  r  s       r+   ro   z6TestInlineMiscIssues.test_issue5792.<locals>.test_impl  s1    E$KKEE*%%E99U###r-   g      ?r\  )r   Typer   r   StructModelr   r   r   r   r   rZ   )rA   r?  rT  rW  ro   rY  resr  r  r.  rP  s          @@@@r+   test_issue5792z#TestInlineMiscIssues.test_issue5792j  s   	) 	) 	) 	) 	) 	) 	) 	) 	) 	)	= 	= 	= 	= 	=
 	= 	= 	=
 
		"	"	8 	8 	8 	8 	8V/ 	8 	8 
#	"	8 	y&':::		  	  	  	  
	 " 
%	)	)	)	 	 	 	 
*	)	 
E(	;	;	;	 	 
<	;	 
	$ 	$ 	$ 	$ 
	$ 
ij))dZ/00000r-   c                      G d dt                     }d t          d          d             }t          |          fd            }|                      |d	          d
           dS )z] Similar to the above test_issue5792, checks mutation of the inlinee
        IR is local onlyc                       e Zd Zd ZdS );TestInlineMiscIssues.test_issue5824.<locals>.CustomCompilerc                     t          j        | j                  }|                    t          t                     |                                 |gS r1   )r   define_nopython_pipelinestateadd_pass_afterr   finalize)rA   pms     r+   define_pipelineszLTestInlineMiscIssues.test_issue5824.<locals>.CustomCompiler.define_pipelines  s>    '@LL!!/?CCCtr-   N)rm   r|   r}   rg  r(   r-   r+   CustomCompilerr`    s#            r-   rh  c                     d S r1   r(   r)   s    r+   r   z0TestInlineMiscIssues.test_issue5824.<locals>.bar  s    Cr-   r"   r#   c                 D    t          | t          j                  rd }|S d S )Nc                     | dz   S )Ng?r(   r)   s    r+   r   zATestInlineMiscIssues.test_issue5824.<locals>.ol_bar.<locals>.impl  s    s7Nr-   rI  rK  s     r+   ol_barz3TestInlineMiscIssues.test_issue5824.<locals>.ol_bar  s4    !U]++ # # # r-   rI   c                 0     |            |           fS r1   r(   r   s    r+   r   z0TestInlineMiscIssues.test_issue5824.<locals>.foo  rn  r-   r   )皙&@rn  N)r   r   r   rZ   )rA   rh  rl  r   r   s       @r+   test_issue5824z#TestInlineMiscIssues.test_issue5824  s    	 	 	 	 	\ 	 	 		 	 	 
#h	'	'	'	 	 
(	'	 
^	,	,	,	" 	" 	" 	" 
-	,	" 	R,/////r-   c                 
   t          d          d             t          d          fd            }t          j        d          } ||           |                     |dt          j        |          z             t          d          d	             }|                     t          j                  5 } ||           d d d            n# 1 swxY w Y   |                     d
t          |j
                             d S )Nr"   r#   c                 T    t          | j                  D ]}| |xx         dz  cc<   d S r&   )r   size)r*   r   s     r+   r   z0TestInlineMiscIssues.test_issue7380.<locals>.bar  s:    16]]  !	 r-   T)parallelc                 d    t          | j        d                   D ]} | |                    d S r  )r   r  )r   r   r   s     r+   r   z0TestInlineMiscIssues.test_issue7380.<locals>.foo  s=    AGAJ''  AaD				 r-   )r   r   r   c                     t          | j        d                   D ]1}| |         }t          |j                  D ]}||xx         dz  cc<   2d S )Nr   r'   )r   r  r   rr  )r   r   r*   s      r+   foo_badz4TestInlineMiscIssues.test_issue7380.<locals>.foo_bad  se    AGAJ''  aDqv  AaDDDAIDDDD r-   z Overwrite of parallel loop index)r   r   r  assertPreciseEqual	ones_liker  r   UnsupportedRewriteErrorr  rX   r  )rA   r   r   rv  r   r   s        @r+   test_issue7380z#TestInlineMiscIssues.test_issue7380  sb    
X				 	 
		 
t				 	 	 	 
		 GHA1r|A#6777 
t				 	 
		 v=>> 	!GAJJJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8#ak:J:JKKKKKs   8CCCN)
rm   r|   r}   r  r!  r(  r]  ro  r    rz  r(   r-   r+   r  r  /  s        + + +2  C C C"D1 D1 D1L0 0 0: "L "L "L "L "Lr-   r  __main__)<__doc__r  r  	itertoolsr   numpyr   r  r   r   r   r   
numba.corer   r	   r
   r   r   r   numba.core.extendingr   r   r   r   r   r   r   r   numba.core.cpur   numba.core.compilerr   r   numba.core.typed_passesr   numba.core.typingr   numba.tests.supportr   r   r   r   r    r!   r   r,   r/   r3   r5   r   r   r   r{  r  r  r  r  r  rm   mainr(   r-   r+   <module>r     s   
             1 1 1 1 1 1 1 1 1 1 1 1 B B B B B B B B B B B B B B B B	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ) ( ( ( ( ( @ @ @ @ @ @ @ @ 3 3 3 3 3 3 ' ' ' ' ' '; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;  X  
   
,x(((  )(< < < < <8 < < <@ # # #LN* N* N* N* N*?L N* N* N*b
6 6 6 6 6/< 6 6 6z$ z$ z$ z$ z$?L z$ z$ z$z^
 ^
 ^
 ^
 ^
\ ^
 ^
 ^
B9J 9J 9J 9J 9J/< 9J 9J 9Jx/ / / / / / / /0AL AL AL AL AL8 AL AL ALH zHMOOOOO r-   