ó
    „ñ:i¤t  ã                   óü   • S SK Jr  S SKrS SKrS SKrS SKrS SKJr  S SK	r	S SK
r
S SKJrJrJr  S SKJrJr  S SKJr  S SKJr  S SKJr  S SKJr   " S	 S
\5      r " S S\5      r\S:X  a  \	R<                  " 5         gg)é    )Ú
namedtupleN)Údedent)ÚTestCaseÚoverride_configÚignore_internal_warnings)ÚjitÚnjit)Útypes)Údefault_manager)ÚNumbaDebugInfoWarningc                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)ÚTestDebugInfoé   z>
These tests only checks the compiled assembly for debuginfo.
c                 óF   • UR                  U5        UR                  U5      $ ©N)ÚcompileÚinspect_asm©ÚselfÚfnÚsigs      Ú]/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/numba/tests/test_debuginfo.pyÚ_getasmÚTestDebugInfo._getasm   s   € Ø
�
‰
�3ŒØ�~‰~˜cÓ"Ð"ó    c                 óœ   • U R                  XS9n[        R                  " SU[        R                  5      nUS LnU R	                  X6SU-  S9  g )N©r   z\.section.+debugzdebug info not found in:
%s)Úmsg)r   ÚreÚsearchÚIÚassertEqual)r   r   r   ÚexpectÚasmÚmÚgots          r   Ú_checkÚTestDebugInfo._check    sK   € Ø�l‰l˜2ˆlÐ'ˆÜ�IŠIÐ)¨3´·±Ó5ˆØ�tˆmˆØ×Ñ˜Ð*HÈ3Ñ*NÐÒOr   c                 ód   • [        SSS9S 5       nU R                  U[        R                  4SS9  g )NTF©ÚnopythonÚdebugc                 ó   • U $ r   © ©Úxs    r   ÚfooÚ3TestDebugInfo.test_no_debuginfo_in_asm.<locals>.foo'   ó   € àˆHr   ©r   r#   ©r   r'   r
   Úint32©r   r1   s     r   Útest_no_debuginfo_in_asmÚ&TestDebugInfo.test_no_debuginfo_in_asm&   s5   € Ü	�d %Ñ	(ñ	ó 
)ð	ð 	�‰�CœeŸk™k˜^°EˆÒ:r   c                 ód   • [        SSS9S 5       nU R                  U[        R                  4SS9  g )NTr*   c                 ó   • U $ r   r.   r/   s    r   r1   Ú0TestDebugInfo.test_debuginfo_in_asm.<locals>.foo.   r3   r   r4   r5   r7   s     r   Útest_debuginfo_in_asmÚ#TestDebugInfo.test_debuginfo_in_asm-   s5   € Ü	�d $Ñ	'ñ	ó 
(ð	ð 	�‰�CœeŸk™k˜^°DˆÒ9r   c                 ó  • [        SS5         [        SS9S 5       nU R                  U[        R                  4SS9  [        SSS9S	 5       nU R                  U[        R                  4SS9  S S S 5        g ! , (       d  f       g = f)
NÚDEBUGINFO_DEFAULTé   T)r+   c                 ó   • U $ r   r.   r/   s    r   r1   Ú4TestDebugInfo.test_environment_override.<locals>.foo7   ó   € à�r   r4   Fr*   c                 ó   • U $ r   r.   r/   s    r   ÚbarÚ4TestDebugInfo.test_environment_override.<locals>.bar=   rD   r   )r   r   r'   r
   r6   )r   r1   rF   s      r   Útest_environment_overrideÚ'TestDebugInfo.test_environment_override4   s{   € ÜÐ0°!Õ4ä˜$Ññó  ðà�K‰K˜¤%§+¡+ ¸ˆKÑ=ô ˜$ eÑ,ñó -ðà�K‰K˜¤%§+¡+ ¸ˆKÑ>÷ 5×4Ö4ús   �A A6Á6
Bc                 óÎ  ^^• [        SS9S 5       m[        SS9S 5       m[         UU4S j5       n[        SS5         U" [        R                  5      nS S S 5        U R	                  WUR                  [        R                  5      5        UR                  UR                  S	   5      n[        R                  " U5      nUR                  UR                  S	      R                  R                  nUR                   Vs/ s H  ofR                  U:X  d  M  UPM     nnU R                  [!        U5      S5        US	   n/ n	UR"                   HP  n
U
R$                   H=  nUR&                  S
:X  d  M  U	R)                  [+        U5      R-                  5       5        M?     MR     SnSnTR                  TR                  S	      R                  R                  nU	 HU  nU(       d  [.        R0                  " SU5      (       a  SnU(       a  M1  [.        R0                  " SU S3U5      (       d  MS  SnMW     U R3                  U5        U R3                  U5        g ! , (       d  f       GN= fs  snf )NT)Úforceinlinec                 ó.   • [         R                  " U 5      $ r   )ÚmathÚsinr/   s    r   rF   Ú:TestDebugInfo.test_llvm_inliner_flag_conflict.<locals>.barG   ó   € ä—8’8˜A“;Ðr   Fc                 ó.   • [         R                  " U 5      $ r   )rM   Úcosr/   s    r   ÚbazÚ:TestDebugInfo.test_llvm_inliner_flag_conflict.<locals>.bazK   rP   r   c                 ó*   >• T" U 5      nT" U 5      nX4$ r   r.   )r0   ÚaÚbrF   rS   s      €€r   r1   Ú:TestDebugInfo.test_llvm_inliner_flag_conflict.<locals>.fooO   s   ø€ á�A“ˆAÙ�A“ˆAØ�4ˆKr   r@   rA   r   Úcallz.*llvm.sin.f64.*z.*)r	   r   ÚnpÚpiÚassertPreciseEqualÚpy_funcÚinspect_llvmÚ
signaturesÚllvmÚparse_assemblyÚ	overloadsÚfndescÚmangled_nameÚ	functionsÚnamer"   ÚlenÚblocksÚinstructionsÚopcodeÚappendÚstrÚstripr   ÚmatchÚ
assertTrue)r   r1   ÚresultÚfull_irÚmodulerf   r0   ÚfuncsÚfuncÚf_namesÚblkÚstmtÚ	found_sinÚ	found_bazÚbaz_namerF   rS   s                  @@r   Útest_llvm_inliner_flag_conflictÚ-TestDebugInfo.test_llvm_inliner_flag_conflictB   sü  ù€ ô
 
˜$Ñ	ñ	ó 
 ð	ô 
˜%Ñ	 ñ	ó 
!ð	ô 
õ	ó 
ð	ô Ð0°!Õ4ÙœŸ™“ZˆF÷ 5ð 	×Ñ ¨¯©´B·E±EÓ(:Ô;ð ×"Ñ" 3§>¡>°!Ñ#4Ó5ˆÜ×$Ò$ WÓ-ˆØ�}‰}˜SŸ^™^¨AÑ.Ñ/×6Ñ6×CÑCˆØ"×,Ò,Ó?Ò,�q·±¸$±—Ñ,ˆÐ?Ø×Ñœ˜U› QÔ'Ø�Q‰xˆð ˆØ—;”;ˆCØ×(Ô(�Ø—;‘; &Õ(à—N‘N¤3 t£9§?¡?Ó#4Ö5ó )ñ ð ˆ	Øˆ	Ø—=‘= §¡°Ñ!2Ñ3×:Ñ:×GÑGˆÛˆAÞ¤§¢Ð*<¸a×!@Ñ!@Ø �	ß�9¤§¢¨B¨x¨j¸Ð*;¸Q×!?Ó!?Ø ’	ñ	 ð 	�‰˜	Ô"Ø�‰˜	Õ"÷E 5Ö4üò @s   ½IÃ=I"ÄI"É
Ir.   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r'   r8   r=   rH   r{   Ú__static_attributes__r.   r   r   r   r      s&   † ñò#òPò;ò:ò?õ6#r   r   c                   óÒ   • \ rS rSrSrSS0rS rS rS rS r	S	 r
S
 r\R                  " \S9S 5       r\R                  " \S9S 5       rS rS rS rS rS rS rS rS rS rSrg)ÚTestDebugInfoEmissioné{   z0Tests that debug info is emitted correctly.
    Ú	NUMBA_OPTÚ0c                 ó”   • [        SS5         UR                  U5        UR                  U5      sS S S 5        $ ! , (       d  f       g = f)NÚOPTr   )r   r   r^   r   s      r   Ú_get_llvmirÚ!TestDebugInfoEmission._get_llvmir�   s/   € Ü˜U AÕ&Ø�J‰J�sŒOØ—?‘? 3Ó'÷ '×&×&ús	   �"9¹
Ac                 óØ   • U R                  X5      R                  5       n[        R                  " S5      n/ nU H,  nUR	                  U5      (       d  M  UR                  U5        M.     U$ )Nz![0-9]+ =.*)rŠ   Ú
splitlinesr   r   rn   rk   )r   r   r   ÚllÚmeta_reÚmetadataÚlines          r   Ú_get_metadataÚ#TestDebugInfoEmission._get_metadata†   sZ   € Ø×Ñ˜bÓ&×1Ñ1Ó3ˆÜ—*’*˜^Ó,ˆØˆÛˆDØ�}‰}˜T×"Ó"Ø—‘ Ö%ñ ð ˆr   c                 ó¸   • [        5       n[        R                  " S5      nU H3  nUR                  U5      nU(       d  M  UR	                  5       u  pgXrU'   M5     U$ )zTGets the map of DI label to md, e.g.
'!33' -> '!{!"branch_weights", i32 1, i32 99}'
z(![0-9]+) = (.*))Údictr   r   rn   Úgroups)r   r�   Úmetadata_definition_mapÚmeta_definition_splitr‘   ÚmatchedÚdbg_valÚinfos           r   Ú_get_metadata_mapÚ'TestDebugInfoEmission._get_metadata_map�   sY   € ô #'£&ÐÜ "§
¢
Ð+>Ó ?ÐÛˆDØ+×1Ñ1°$Ó7ˆGßˆwØ '§¡Ó 0‘�Ø37¨Ó0ñ	 ð
 'Ð&r   c                 ó   • U R                  U5      n[        5       nUR                  5        HN  n[        R                  " SU5      nU(       d  M#  [        UR                  S5      5      nUR                  U5        MP     U$ )Nz!DILocation\(line: (\d+),rA   )rœ   ÚsetÚvaluesr   rn   ÚintÚgroupÚadd)r   r�   Ú
md_def_mapÚlinesÚmdr%   Úlns          r   Ú_get_lines_from_debuginfoÚ/TestDebugInfoEmission._get_lines_from_debuginfoœ   se   € à×+Ñ+¨HÓ5ˆ
ä“ˆØ×#Ñ#Ö%ˆBÜ—’Ð5°rÓ:ˆAßˆqÜ˜Ÿ™ ›“_�Ø—	‘	˜"–ñ	 &ð
 ˆr   c                 ó¾   • [        SS9S 5       nU R                  USS9nUS   nU R                  SUS S 5        U R                  S	U5        U R                  S
U5        g )NT©r,   c                  ó   • g r   r.   r.   r   r   r1   Ú/TestDebugInfoEmission.test_DW_LANG.<locals>.fooª   ó   € àr   r.   r   r   z!0é   z,!DICompileUnit(language: DW_LANG_C_plus_pluszproducer: "clang (Numba)")r	   r’   r"   ÚassertIn)r   r1   r�   ÚDICompileUnits       r   Útest_DW_LANGÚ"TestDebugInfoEmission.test_DW_LANG¨   sq   € ä	�DÑ	ñ	ó 
ð	ð ×%Ñ% c¨rÐ%Ð2ˆØ  ™ˆØ×Ñ˜˜}¨R¨aÐ0Ô1Ø�‰ÐDØ#ô	%à�‰Ð1°=ÕAr   c           
      óÈ  • [        SSS9S 5       n[        R                  4nU R                  XS9nU R	                  XS9n[
        R                  " U5      nUR                  UR                  S      R                  R                  nUR                   Vs/ s H  owR                  U:X  d  M  UPM     nnU R                  [        U5      S5        US   n	U	R                   Vs/ s H  owPM     n
nU R!                  [        U
5      S5        U
S   nUR"                   Vs/ s H  owR$                  S;  d  M  UPM     nn1 S	knS
nU H^  nUR$                  U;   a(  UR'                  UR$                  5        U(       d  SnM9  M;  U(       d  MD  U(       d  MM  U R)                  S5        M`     U R+                  US5        [-        5       n[.        R0                  " S5      nSnU HÂ  n[3        U5      nUR5                  U5      nU(       d1  SnU R7                  [9        U Vs/ s H  owU;   PM	     sn5      5        MW  UR;                  5       nU R                  [        U5      S5        US   n[=        USS 5      nUS:¼  a  U R7                  UU:¬  5        UnUR?                  U5        MÄ     [@        RB                  " U5      u  nnU RE                  U5      n/ SQnU Vs/ s H  nUS-   U-   PM     nn[G        [I        US S9U5       H   u  nnUU   n U RK                  SU 3U 5        M"     Sn![.        R0                  " U!5      n"URM                  5        Hm  n#U"R5                  U#5      nU(       d  M  UR;                  5       nU R                  [        U5      S5        [=        US   5      n$US-   n%U R                  U$U%5          g   U R)                  S5        gs  snf s  snf s  snf s  snf s  snf )z9Tests that DILocation information is reasonable.
        TÚnumpy)r,   Úerror_modelc                 ó8   • U S-   nUS-  nX-  n[        U5        U$ )Ng®Gáz®ó?g¸…ëQ¸@)Úprint)rV   rW   ÚcÚds       r   r1   Ú2TestDebugInfoEmission.test_DILocation.<locals>.foo¸   s'   € à�D‘ˆAØ�D‘ˆAØ‘ˆAÜ�!ŒHØˆHr   r   r   rA   )rY   ÚloadÚstore>   ÚfaddÚfdivÚfmulFzMath opcodes are not contiguouszMath opcodes were not foundz.*!dbg (![0-9]+).*$éÿÿÿÿ)zalloca zstore N)r   rA   r¯   é   r¯   c                 ó   • [        U SS  5      $ ©NrA   )r¡   r/   s    r   Ú<lambda>Ú7TestDebugInfoEmission.test_DILocation.<locals>.<lambda>  s   € ¼sÀ1ÀQÀRÀ5¼zr   )Úkeyzline: z1.*!DILocalVariable\(name: "a",.*line: ([0-9]+),.*z%Assertion on DILocalVariable not made)'r	   r
   Úfloat64r’   rŠ   r`   ra   rb   r_   rc   rd   re   rf   r"   rg   rh   ÚassertGreaterri   rj   ÚremoveÚfailÚassertFalserŸ   r   r   rl   rn   ro   Úanyr–   r¡   r£   ÚinspectÚgetsourcelinesrœ   ÚzipÚsortedr°   r    )&r   r1   r   r�   rq   rr   rf   r0   rs   rt   rh   ÚblockÚinstrsÚ	op_expectÚstartedÚline2dbgÚ
re_dbg_refÚfoundÚinstrÚinst_as_strr™   Úacceptedr–   rš   Úint_dbg_valÚpysrcÚpysrc_line_startr—   ÚoffsetsÚ
pyln_rangeÚkÚline_noÚdilocation_infoÚexprÚmatch_local_var_aÚentryÚdbg_lineÚdeflines&                                         r   Útest_DILocationÚ%TestDebugInfoEmission.test_DILocationµ   s°  € ô 
�D gÑ	.ñ	ó 
/ð	ô2 �}‰}ÐˆØ×%Ñ% cÐ%Ð3ˆØ×"Ñ" 3Ð"Ð0ˆä×$Ò$ WÓ-ˆà�}‰}˜SŸ^™^¨AÑ.Ñ/×6Ñ6×CÑCˆØ"×,Ò,Ó?Ò,�q·±¸$±—Ñ,ˆÐ?Ø×Ñœ˜U› QÔ'Ø�Q‰xˆØ!Ÿ[š[Ó)š[˜’!™[ˆÐ)Ø×Ñœ3˜v›;¨Ô*Ø�q‘	ˆð #×/Ò/ó -Ò/˜·8±8Ø+ñ4,—!Ñ/ˆð -â,ˆ	ØˆÛˆAØ�x‰x˜9Ó$Ø× Ñ  §¡Ô*ÞØ"’Gñ ç�Ÿw˜wØ—	‘	Ð;Ö<ñ ð 	×Ñ˜Ð$AÔBô
 “5ˆÜ—Z’ZÐ 6Ó7ˆ
ØˆÛˆEÜ˜e›*ˆKØ ×&Ñ& {Ó3ˆGÞð 1�Ø—‘¤¹xÓ$Hºx¸!¨+Ô%5¹xÑ$HÓ IÔJÙØ—^‘^Ó%ˆFØ×ÑœS ›[¨!Ô,Ø˜Q‘iˆGÜ˜g a b˜kÓ*ˆKØ˜‹zØ—‘ ¨uÑ 4Ô5ØˆEð �L‰L˜Ö!ñ' ô* #*×"8Ò"8¸Ó"=ÑˆÐð #'×"8Ñ"8¸Ó"BÐò
ˆñ
 9@Ó@º°1Ð&¨Ñ*¨QÔ.¹ˆ
Ð@ô  ¤ xÑ5IÑ JØ *ö,‰LˆQ�à5°aÑ8ˆOØ�M‰M˜F 7 )Ð,¨oÖ>ñ,ð DˆÜŸJšJ tÓ,ÐØ,×3Ñ3Ö5ˆEØ'×-Ñ-¨eÓ4ˆGßˆwØ Ÿ™Ó)�Ø× Ñ ¤ V£¨aÔ0Ü˜v a™y›>�ð +¨QÑ.�Ø× Ñ  ¨7Ô3Ùñ 6ð �I‰IÐ=Õ>ùòm @ùò *ùò
-ùò6 %Iùò4 As*   ÂOÂ+OÃ!OÄOÄ3OÈOËO)Úenvvarsc                 óü  • [        SS9S 5       nU" S5        UR                  UR                  S   5      n[        R                  " U5      nUR
                  UR                  S      R                  R                  nUR                   Vs/ s H  oUR                  U:X  d  M  UPM     nnU R                  [        U5      S5        US   nUR                   Vs/ s H  oUPM     nnU R                  [        U5      S5        Uu  pšU	R                   Vs/ s H  oUPM     nnUS   nU R                  UR                  S	5        UR                   Vs/ s H  oUPM     nnU R                  [        U5      S5        US   n[!        U5      R#                  S
5      S   R%                  5       nU R                  XúR                  5        U R'                  [!        U5      R)                  U5      5        g s  snf s  snf s  snf s  snf )NTr«   c                 ó   • U S-   $ rÄ   r.   ©rV   s    r   r1   Ú<TestDebugInfoEmission.test_DILocation_entry_blk.<locals>.fooA  s   € à�q‘5ˆLr   r…   r   rA   r¯   rÁ   ÚbrÚ:)r	   r^   r_   r`   ra   rb   rc   rd   re   rf   r"   rg   rh   ri   rj   Úoperandsrl   Úsplitrm   ro   Úendswith)r   r1   rq   rr   rf   r0   rs   rt   rh   Úentry_blockÚ
body_blockÚentry_instrÚujmpÚujmp_operandsÚtarget_dataÚtargets                   r   Útest_DILocation_entry_blkÚ/TestDebugInfoEmission.test_DILocation_entry_blk1  s¼  € ô  
�DÑ	ñ	ó 
ð	áˆCŒà×"Ñ" 3§>¡>°!Ñ#4Ó5ˆô ×$Ò$ WÓ-ˆØ�}‰}˜SŸ^™^¨AÑ.Ñ/×6Ñ6×CÑCˆØ"×,Ò,Ó?Ò,�q·±¸$±—Ñ,ˆÐ?Ø×Ñœ˜U› QÔ'Ø�Q‰xˆØ!Ÿ[š[Ó)š[˜’!™[ˆÐ)Ø×Ñœ˜V› aÔ(Ø"(Ñˆð #.×":Ò":Ó;Ò":˜Q’qÑ":ˆÐ;Ø˜2‰ˆØ×Ñ˜Ÿ™ dÔ+Ø$(§M¢MÓ2¢M˜qš¡MˆÐ2Ø×Ñœ˜]Ó+¨QÔ/Ø# AÑ&ˆÜ�[Ó!×'Ñ'¨Ó,¨QÑ/×5Ñ5Ó7ˆà×Ñ˜§¡Ô1à�‰œ˜D›	×*Ñ*¨6Ó2Õ3ùò' @ùò *ùò <ùò 3s   Â
G*Â!G*ÃG/ÄG4ÅG9c                 óh  ^• [        SS9S 5       m[        SS9U4S j5       n[        R                  SSS2   4nU R                  XS9nSnUR	                  5        HB  nUR                  5       nUR                  S	5      (       d  M+  U R                  US
5        US-  nMD     U R                  US5        g)z²This tests that decref's generated from `ir.Del`s as variables go
out of scope do not have debuginfo associated with them (the location of
`ir.Del` is an implementation detail).
Tr«   c                  ó   • g r   r.   r/   s    r   ÚsinkÚ:TestDebugInfoEmission.test_DILocation_decref.<locals>.sinkq  r®   r   c                 óB   >• X 4nU S   S:X  a	  T" U5        gUS   S   nU$ )Nr   é   r.   )rV   r0   Úzr   s      €r   r1   Ú9TestDebugInfoEmission.test_DILocation_decref.<locals>.foov  s1   ø€ à�ˆAØ�‰t�q‹yÙ�Q”ØØ�!‘�Q‘ˆAØˆHr   NrA   r   r   zcall void @NRT_decrefz.*meminfo\.[0-9]+\)$)	r	   r
   rÈ   rŠ   r�   rm   Ú
startswithÚassertRegexrÉ   )r   r1   r   rq   Úcountr‘   Úline_strippedr   s          @r   Útest_DILocation_decrefÚ,TestDebugInfoEmission.test_DILocation_decrefj  sÂ   ø€ ô 
�DÑ	ñ	ó 
ð	ô 
�DÑ	ô	ó 
ð	ô �}‰}™S˜q˜SÑ!Ð#ˆØ×"Ñ" 3Ð"Ð0ˆð ˆØ×&Ñ&Ö(ˆDØ ŸJ™J›LˆMØ×'Ñ'Ð(?×@Ó@Ø× Ñ  Ð'>Ô?Ø˜‘
’ñ	 )ð
 	×Ñ˜5 !Õ$r   c                 ó  • [        SS9S 5       n[        R                  4nU R                  XS9n[        R
                  " U5      u  pESn[        R                  " U5      n[        5       nU He  n	UR                  U	5      n
U
(       d  M  U
R                  5       nU R                  [        U5      S5        UR                  [        US   5      5        Mg     U R                  [        U5      S5        U R                  XX5        g	)
zŒTests that DILocation information for undefined vars is associated
with the line of the function definition (so it ends up in the prologue)
Tr«   c                 ó2   • U (       a
  U S:”  a  SnW$ WS-  nU$ )Nr   rA   r.   )Únr¹   s     r   r1   Ú<TestDebugInfoEmission.test_DILocation_undefined.<locals>.foo�  s&   € æØ�q“5Ø�AØ�ð �Q‘�Ø�r   r   z:.*!DILocalVariable\(name: "c\$?[0-9]?",.*line: ([0-9]+),.*rA   r   rÂ   N)r	   r
   Úintpr’   rÎ   rÏ   r   r   rŸ   rn   r–   r"   rg   r£   r¡   r°   )r   r1   r   r�   rÝ   rÞ   rä   ÚmatcherÚassociated_linesr¦   rn   r–   s               r   Útest_DILocation_undefinedÚ/TestDebugInfoEmission.test_DILocation_undefined‹  sà   € ô 
�DÑ	ñ	ó 
ð	ô �z‰zˆmˆØ×%Ñ% cÐ%Ð3ˆÜ")×"8Ò"8¸Ó"=ÑˆàLˆÜ—*’*˜TÓ"ˆÜ›5ÐÛˆBØ—M‘M "Ó%ˆEßˆuØŸ™›�Ø× Ñ ¤ V£¨aÔ0Ø ×$Ñ$¤S¨°©£^Ö4ñ ð 	×ÑœÐ-Ó.°Ô2Ø�‰Ð&Õ9r   c                 ó¬  • [        SS9S 5       n[        R                  4nU R                  XS9n[        R
                  " U5      u  pESn[        R                  " U5      n[        5       nU He  n	UR                  U	5      n
U
(       d  M  U
R                  5       nU R                  [        U5      S5        UR                  [        US   5      5        Mg     U R                  [        U5      S5        [        5       n[        U5       H   u  pÞS	U;   d  M  UR                  XÕ-   5        M"     U R                  [        U5      S5        U R                  XŒ5        g
)z`Tests that DILocation information for versions of variables matches
up to their definition site.Tr«   c                 ó.   • U (       a  SnOSnSnSnSnSnU$ )Né   rA   r¯   rÂ   é   r.   )r  r¹   Úpy310_defeat1Úpy310_defeat2Úpy310_defeat3Úpy310_defeat4s         r   r1   ÚFTestDebugInfoEmission.test_DILocation_versioned_variables.<locals>.foo±  s(   € æØ‘à�àˆMØˆMØˆMØˆMØˆHr   r   z9.*!DILocalVariable\(name: "c\$[0-9]?",.*line: ([0-9]+),.*rA   r   r¯   zc = N)r	   r
   r  r’   rÎ   rÏ   r   r   rŸ   rn   r–   r"   rg   r£   r¡   Ú	enumerate)r   r1   r   r�   rÝ   rÞ   rä   r  r  r¦   rn   r–   Úpy_linesÚixÚpylns                  r   Ú#test_DILocation_versioned_variablesÚ9TestDebugInfoEmission.test_DILocation_versioned_variables«  s-  € ô 
�DÑ	ñ
	ó 
ð
	ô �z‰zˆmˆØ×%Ñ% cÐ%Ð3ˆÜ")×"8Ò"8¸Ó"=Ñˆð LˆÜ—*’*˜TÓ"ˆÜ›5ÐÛˆBØ—M‘M "Ó%ˆEßˆuØŸ™›�Ø× Ñ ¤ V£¨aÔ0Ø ×$Ñ$¤S¨°©£^Ö4ñ ð 	×ÑœÐ-Ó.°Ô2ô “5ˆÜ! %Ö(‰HˆBØ˜�~Ø—‘˜RÑ2Ö3ñ )ð 	×Ñœ˜X›¨Ô*ð 	×ÑÐ)Õ4r   c                 óò  ^• [        SS5      n[        R                  U" SSS5      [        R                  U" SSS5      [        R                  U" SS	S
5      [        R
                  U" SSS
5      [        R                  U" SSS
5      [        R                  U" SSS
5      [        R                  U" SS	S5      [        R                  U" SSS5      [        R                  U" SSS5      [        R                  U" SSS5      [        R                  U" SSS5      [        R                  U" SSS5      0nUR                  5        GH3  u  mn[        SS9U4S j5       nU R!                  USS9nU R#                  U5      nUR                  5        H  u  pxSU;   d  M  Xg   n	  O	    S5       e[$        R&                  " S U	5      R)                  5       S   n
Xj   nS!UR*                  ;   a=  S"UR,                   S#UR.                   S$UR*                   S%3nU R1                  X¼5        Mß  UR.                  S:X  a  S&OS'nS(UR*                   S)UR,                   S*U S+U S,UR.                   3
nU R3                  XË5        GM6     g-).z?Tests that dwarf info is correctly emitted for numeric scalars.ÚDIzname bits encodingÚfloat32é    ÚDW_ATE_floatrÈ   é@   Úint8é   ÚDW_ATE_signedÚint16é   r6   Úint64Úuint8ÚDW_ATE_unsignedÚuint16Úuint32Úuint64Ú	complex64ÚDW_TAG_structure_typeÚ
complex128é€   Tr«   c                  ó   >• T" S5      n U $ )Né
   r.   )rV   Útys    €r   r1   Ú7TestDebugInfoEmission.test_numeric_scalars.<locals>.fooï  s   ø€ á�r“F�Ø�r   r.   r   úDILocalVariable(name: "a"r   úmissing DILocalVariable 'a'ú.*type: (![0-9]+).*ÚDW_ATEz!DIBasicType(name: "ú	", size: z, encoding: Ú)ÚfloatÚdoublezdistinct !DICompositeType(tag: z	, name: "z ({z, z})", size: N)r   rZ   r&  rÈ   r*  r-  r6   r/  r0  r2  r3  r4  r5  r7  Úitemsr	   r’   rœ   r   rn   r–   Úencodingrf   Úbitsr"   r°   )r   r%  Ú
type_infosÚ
dwarf_infor1   r�   r—   rá   ÚvÚlvarÚtype_markerÚ	type_declÚexpectedÚraw_fltr;  s                 @r   Útest_numeric_scalarsÚ*TestDebugInfoEmission.test_numeric_scalarsÙ  sp  ø€ ô ˜Ð2Ó3ˆä—j‘j¡" Y°°NÓ"CÜ—j‘j¡" Y°°NÓ"CÜ—g‘g™r &¨!¨_Ó=Ü—h‘h¡ 7¨B°Ó @Ü—h‘h¡ 7¨B°Ó @Ü—h‘h¡ 7¨B°Ó @Ü—h‘h¡ 7¨AÐ/@Ó AÜ—i‘i¡ H¨bÐ2CÓ!DÜ—i‘i¡ H¨bÐ2CÓ!DÜ—i‘i¡ H¨bÐ2CÓ!DÜ—l‘l¡B {°BØ'>ó%@ä—m‘m¡R¨°cØ(?ó&AðCˆ
ð )×.Ñ.×0‰NˆB�
ä˜Ñôó ðð ×)Ñ)¨#°2Ð)Ð6ˆHØ&*×&<Ñ&<¸XÓ&FÐ#à/×5Ñ5Ö7‘�Ø.°!Õ3Ø2Ñ5�DÙñ 8ð
 8Ð7Ó7�qäŸ(š(Ð#8¸$Ó?×FÑFÓHÈÑKˆKØ/Ñ<ˆIà˜:×.Ñ.Ó.Ø2°:·?±?Ð2Cð D%Ø%/§_¡_Ð$5ð 6)Ø)3×)<Ñ)<Ð(=¸Qð@�ð × Ñ  Ö5ð &0§_¡_¸Ó%:™'À�ð$Ø$.×$7Ñ$7Ð#8ð 9&Ø&0§o¡oÐ%6ð 7"Ø") ¨"¨W¨Ið 6%Ø%/§_¡_Ð$5ð	7�ð
 —‘˜h×2òC 1r   c           
      ó®  • [        SS9S 5       nU R                  USS9nU R                  U5      nUR                  5        H  u  pESU;   d  M  X4   n  O	    S5       e[        R
                  " S	U5      R                  5       S   nX7   nU R                  S
U5        U R                  S[        [        R                  S S 2S S S24   5       3U5        [        R                  " S5      n	U	R                  U5      R                  5       n
U R                  [        U
5      S5        U
S   nX;   nSn[        R                  " U5      nUR                  U5      R                  5       nU R                  US L5        [        R                   " [        R                  S S 2S S S24   5      nU R                  [        U5      [        UR"                  5      5        [        R$                  R&                  nSU S3nSU SU S3nSU SU SSU-   SU S3	nUUUUUUUS.nSn[        R                  " U5      n[)        UR"                  5       H�  u  nnX?U      nU R                  SU5        U R                  SU S3U5        UR                  U5      nUR                  5       nU R                  [        U5      S5        US   nUU   nU R+                  UUU   5        M’     g )NTr«   c                  óL   • [         R                  " S[         R                  S9n U $ )N)r¯   rÂ   )Údtype)rZ   ÚonesrÈ   rî   s    r   r1   Ú.TestDebugInfoEmission.test_arrays.<locals>.foo  s   € ä—’˜¤b§j¡jÑ1ˆAØˆHr   r.   r   r=  r   r>  r?  z+!DICompositeType(tag: DW_TAG_structure_typezname: "rA   z.*elements: (![0-9]+),.*zN!{(![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+), (![0-9]+)}zC!DIDerivedType\(tag: DW_TAG_pointer_type, baseType: ![0-9]+, size: z\)z!DIBasicType\(name: "intrA  z, encoding: DW_ATE_signed\)z>!DICompositeType\(tag: DW_TAG_array_type, name: "UniTuple\(intz x 2\) \(\[2 x iz \]\)", baseType: ![0-9]+, size: r¯   z), elements: ![0-9]+, identifier: "\[2 x iz\]"\))ÚmeminfoÚparentÚnitemsÚitemsizeÚdataÚshapeÚstridesz*!DIDerivedType\(.*, baseType: (![0-9]+),.*ÚDIDerivedTypeÚ")r	   r’   rœ   rE  r   rn   r–   r°   rl   r
   rÈ   r   r"   rg   ÚassertIsNotNoner   ÚlookupÚ_fieldsr  Úbitwidthr  r  )r   r1   r�   r—   rá   rJ  rK  rL  rM  Úmatch_elementsÚelem_matchesÚ
elem_matchÚstruct_markersÚstruct_patternÚmatch_structÚstruct_member_matchesÚ
data_modelÚptr_sizeÚptr_reÚint_reÚ	utuple_rerN  Úbase_type_patternÚbase_type_matcherr   ÚfieldÚderived_typeÚbase_type_matchÚbase_type_matchesÚbase_type_markerÚ	data_types                                  r   Útest_arraysÚ!TestDebugInfoEmission.test_arrays  s  € ä	�DÑ	ñ	ó 
ð	ð ×%Ñ% c¨rÐ%Ð2ˆØ"&×"8Ñ"8¸Ó"BÐà+×1Ñ1Ö3‰DˆAØ*¨aÕ/Ø.Ñ1�Ùñ 4ð
 4Ð3Ó3�1ä—h’hÐ4°dÓ;×BÑBÓDÀQÑGˆØ+Ñ8ˆ	ð 	�‰ÐCÀYÔOà�‰˜¤¤E§M¡M²!±S°q°S°&Ñ$9Ó :Ð;Ð<¸iÔHô ŸšÐ$?Ó@ˆØ%×+Ñ+¨IÓ6×=Ñ=Ó?ˆØ×Ñœ˜\Ó*¨AÔ.Ø! !‘_ˆ
ð 1Ñ<ˆØ@ˆÜ—z’z .Ó1ˆØ ,× 2Ñ 2°>Ó B× IÑ IÓ KÐØ×ÑÐ2¸$Ð>Ô?Ü$×+Ò+¬E¯M©Mº!¹S¸q¸S¸&Ñ,AÓBˆ
Ø×ÑœÐ2Ó3´S¸×9KÑ9KÓ5LÔMä—:‘:×&Ñ&ˆð/Ø/7¨j¸ð<ˆà-¨h¨Z°yÀÀ
ð K/ð /ˆð-Ø-5¨Jð 7"Ø"* ð ,Ø  8™|˜nð --Ø-5¨J°eð	=ˆ	ð
  &Ø$Ø$Ø &Ø"Ø&Ø(ñ*ˆð JÐÜŸJšJÐ'8Ó9Ðä" :×#5Ñ#5Ö6‰IˆB�Ø2ÈÑ3LÑMˆLØ�M‰M˜/¨<Ô8Ø�M‰M˜G E 7¨!Ð,¨lÔ;Ø/×5Ñ5°lÓCˆOØ /× 6Ñ 6Ó 8ÐØ×ÑœSÐ!2Ó3°QÔ7Ø0°Ñ3ÐØ/Ð0@ÑAˆIØ×Ñ˜Y¨°©Ö8ò 7r   c           	      ó6  ^ • U 4S jnS nS n[        SS9" U5      n[        SSS9" U5      n[        SSSS9" U5      nUR                  R                  n0 n[        SUS	-   1[	        5       [	        S
/5      S9X„'   [        [	        [        US-   US-   5      5      [	        S
/5      [	        5       S9X…'   [        SUS	-   1[	        S/5      [	        S
/5      S9X†'   U" 5       n	UR                  5        H•  u  p«T R                  U
R                  5         U
" 5       nT R                  XÉ5        T R                  U" U
5      US   5        U" U
5      nUS   nT R                  XÞ-  U5        US   nT R                  Xß-  5        S S S 5        M—     g ! , (       d  f       M©  = f)Nc                 óf   >• TR                  X R                  S   5      nTR                  U5      nU$ )Nr   )r’   r_   r¨   )r   r�   r¥   r   s      €r   Úget_debug_linesÚATestDebugInfoEmission.test_debug_optnone.<locals>.get_debug_lines[  s1   ø€ Ø×)Ñ)¨"¯m©m¸AÑ.>Ó?ˆHØ×2Ñ2°8Ó<ˆEØˆLr   c                 ó  • U R                   U R                  S      nUR                  nUR                  R	                  UR
                  R                  5      n [        SR                  U R                  5      R                  5       5      nU$ )Nr   ó    )rb   r_   ÚlibraryÚ_final_moduleÚget_functionrc   rd   rŸ   ÚjoinÚ
attributesró   )r   ÚcresÚlibÚattrss       r   Úget_func_attrsÚ@TestDebugInfoEmission.test_debug_optnone.<locals>.get_func_attrs`  sg   € Ø—<‘< §¡¨aÑ 0Ñ1ˆDØ—,‘,ˆCØ×"Ñ"×/Ñ/°·±×0HÑ0HÓIˆBÜ˜Ÿ	™	 "§-¡-Ó0×6Ñ6Ó8Ó9ˆEØˆLr   c                  ó:   • Sn Sn[        U 5       H  nX-  nM	     U$ )Nr:  r   )Úrange)r  r¹   Úis      r   r1   Ú5TestDebugInfoEmission.test_debug_optnone.<locals>.foog  s&   € ØˆAØˆAÜ˜1–X�Ø‘’ñ àˆHr   Tr«   ©r,   Ú_dbg_optnone)r,   r�  rK   r   r  s   optnone)r¥   Úmust_have_attrsÚmust_not_have_attrsrA   é   s   alwaysinliner¥   r�  r‘  )r	   Ú__code__Úco_firstlinenor•   rŸ   r‹  rE  ÚsubTestÚtargetoptionsr"   rÌ   )r   r|  rˆ  r1   Ú	foo_debugÚfoo_debug_optnoneÚfoo_debug_optnone_inlineÚ	firstlineÚexpected_infoÚexpected_retÚudtrN  r&   r‡  Ú	must_haveÚmust_not_haves   `               r   Útest_debug_optnoneÚ(TestDebugInfoEmission.test_debug_optnoneZ  sª  ø€ õ	ò
	ò	ô ˜tÒ$ SÓ)ˆ	Ü  t¸$Ò?ÀÓDÐÜ#'¨dÀØ48ò$:Ø:=ó$?Ð ð —L‘L×/Ñ/ˆ	àˆÜ#'à�i !‘mÐ$Ü›EÜ # Z LÓ 1ñ	$
ˆÑ ô ,0ä”e˜I¨™M¨9°q©=Ó9Ó:Ü  Ó-Ü #£ñ	,
ˆÑ(ô 37ð �i !‘mÐ$Ü Ð 1Ó2Ü # Z LÓ 1ñ3
ˆÑ/ñ “uˆà*×0Ñ0Ö2‰MˆCØ—‘˜c×/Ñ/Õ0Ù“e�Ø× Ñ  Ô3ð × Ñ ¡°Ó!5°xÀÑ7HÔIñ ' sÓ+�Ø$Ð%6Ñ7�	Ø× Ñ  Ñ!2°IÔ>Ø (Ð)>Ñ ?�Ø× Ñ  Ñ!6Ô7÷ 1Ñ0ò 3ß0Ö0ús   ÄA-F	Æ	
F	c                 ó  • [        SS9SS j5       n[        SS5         U" 5         S S S 5        U R                  U[        R                  " S 5      4S9nU R                  U5      n/ nU H  nSU;   d  M  UR                  U5        M     U R                  [        U5      S5        UR                  5       n[        R                  " SU5      nU R                  U5        UR                  5       nU R                  [        U5      S5        US	   n	X9   n
[        R                  " S
U
5      nU R                  U5        UR                  5       nU R                  [        U5      S5        US	   R                  S5       Vs/ s H  oÝR                  5       PM     snS   nX>   nSnU R!                  UU5        [        R                  " UU5      R                  5       S	   nUU   nU R                  US5        g ! , (       d  f       GNÐ= fs  snf )NTr«   c                 ó   • g r   r.   )Úmissings    r   r1   Ú3TestDebugInfoEmission.test_omitted_arg.<locals>.foo�  r®   r   r@   rA   r   ÚDISubroutineTypez(.*!DISubroutineType\(types: ([!0-9]+)\)$r   z!{(.*)}Ú,rÁ   zy^.*!DICompositeType\(tag: DW_TAG_structure_type, name: "Anonymous struct \({}\)", elements: (![0-9]+), identifier: "{}"\)z!{}r   )r	   r   r’   r
   ÚOmittedrœ   rk   r"   rg   Úpopr   rn   r`  r–   ró   rm   r  )r   r1   r�   r—   Ú
tmp_disubrr¦   ÚdisubrÚdisubr_matchedÚdisubr_groupsÚdisubr_metaÚdisubr_typesÚdisubr_types_matchedÚdisubr_types_groupsr0   Ú	md_fn_argÚarg_tyÚexpected_arg_tyÚ
md_base_tyÚbase_tys                      r   Útest_omitted_argÚ&TestDebugInfoEmission.test_omitted_arg›  sã  € ä	�DÑ	ó	ó 
ð	ô Ð0°!Õ4ÙŒE÷ 5ð ×%Ñ% c´·²¸dÓ0CÐ/EÐ%ÐFˆØ"&×"8Ñ"8¸Ó"BÐð ˆ
ÛˆBØ! RÕ'Ø×!Ñ! "Ö%ñ ð 	×Ñœ˜Z›¨!Ô,Ø—‘Ó!ˆäŸšÐ"MØ"(ó*ˆà×Ñ˜^Ô,Ø&×-Ñ-Ó/ˆØ×Ñœ˜]Ó+¨QÔ/Ø# AÑ&ˆð /Ñ;ˆÜ!Ÿxšx¨
°LÓAÐØ×Ñ˜^Ô,Ø2×9Ñ9Ó;ÐØ×ÑœÐ0Ó1°1Ô5ð )<¸AÑ(>×(DÑ(DÀSÔ(IÓJÒ(I 1—W‘W–YÑ(IÑJÈ2ÑNˆ	Ø(Ñ3ˆð<ˆð 	×Ñ˜ Ô1Ü—X’X˜o¨vÓ6×=Ñ=Ó?ÀÑBˆ
Ø)¨*Ñ5ˆà×Ñ˜ 5Õ*÷M 5Ö4üò: Ks   žG/Å8HÇ/
G>c                 ó8  • Sn[        5       n[        [        U5      0 U5        [        SS9" US   5      n[        R
                  " SS9 n[        R                  " S[        5        [        5         U" 5         S S S 5        U R                  [        W5      S5        US   nU R                  UR                  [        5        [        UR                  5      nU R                  S	U5        U R                  [        UR                  5      U5        g ! , (       d  f       N›= f)
Nz1
        def foo():
            return 1
        Tr«   r1   ©ÚrecordÚalwaysrA   r   z"Could not find source for function)r•   Úexecr   r	   ÚwarningsÚcatch_warningsÚsimplefilterr   r   r"   rg   Úcategoryrl   Úmessager°   r]   )r   ÚstrsrcÚlr1   ÚwrØ   r   s          r   Útest_missing_sourceÚ)TestDebugInfoEmission.test_missing_sourceÊ  s×   € ðˆô ‹FˆÜŒV�F‹^˜R Ô#Ü˜Ò˜q ™xÓ(ˆä×$Ò$¨DÒ1°QÜ×!Ò! (Ô,AÔBÜ$Ô&ÙŒE÷ 2ð
 	×Ñœ˜Q› Ô#Ø�!‘ˆØ×Ñ˜Ÿ™Ô)>Ô?Ü�%—-‘-Ó ˆà�‰Ð:¸CÔ@à�‰”c˜#Ÿ+™+Ó&¨Õ,÷ 2Õ1ús   Á	-DÄ
Dc                 ó   • [        SS9S 5       n[        R                  " SS9 n[        R                  " S[        5        [        5         U" 5         S S S 5        U R                  [        W5      S5        U R                  XR                  S   5      nU R                  U5      nU R                  [        U5      S5        g ! , (       d  f       Nt= f)NTr«   c                  ó   • grÄ   r.   r.   r   r   r1   ÚCTestDebugInfoEmission.test_irregularly_indented_source.<locals>.fooã  s   € ð r   rº  r¼  r   rA   )r	   r¾  r¿  rÀ  r   r   r"   rg   r’   r_   r¨   )r   r1   rÅ  r�   r¥   s        r   Ú test_irregularly_indented_sourceÚ6TestDebugInfoEmission.test_irregularly_indented_sourceá  s¨   € ä	�DÑ	ñ	ó 
ð	ô ×$Ò$¨DÒ1°QÜ×!Ò! (Ô,AÔBÜ$Ô&ÙŒE÷ 2ð 	×Ñœ˜Q› Ô#à×%Ñ% c¯>©>¸!Ñ+<Ó=ˆØ×.Ñ.¨xÓ8ˆà×Ñœ˜U› QÕ'÷ 2Õ1ús   ¤-B?Â?
Cc                 óî   • [        SSSS9S 5       n[        [        UR                  5       R	                  5       5      5      S   nUR                  5        H  nSU;   d  M  U R                  SU5        M     g )Nzint64(boolean, boolean)TrŽ  c                 ó"   • U (       a  U(       a  gg)NrA   r¯   r.   )Úcond1Úcond2s     r   ÚchoiceÚBTestDebugInfoEmission.test_no_if_op_bools_declared.<locals>.choiceö  s   € æžØàr   rA   zllvm.dbg.declareÚbool)r	   ÚnextÚiterr^   rE  r�   ÚassertNotIn)r   rÑ  Úllvm_irr‘   s       r   Útest_no_if_op_bools_declaredÚ2TestDebugInfoEmission.test_no_if_op_bools_declaredõ  sr   € Ü	Ð'¨tÀ$Ñ	Gñ	ó 
Hð	ô ”t˜F×/Ñ/Ó1×7Ñ7Ó9Ó:Ó;¸AÑ>ˆà×&Ñ&Ö(ˆDØ! TÕ)Ø× Ñ  ¨Ö.ò )r   r.   N)r}   r~   r   r€   r�   Ú_NUMBA_OPT_0_ENVrŠ   r’   rœ   r¨   r²   ré   r   Úrun_test_in_subprocessrü   r
  r  r"  rP  rx  r   r·  rÆ  rË  rØ  r‚   r.   r   r   r„   r„   {   s«   † ñð $ SÐ)Ðò(ò
ò'ò
òBòz?ðx ×$Ò$Ð-=Ñ>ñ64ó ?ð64ðp ×$Ò$Ð-=Ñ>ñ%ó ?ð%ò@:ò@,5ò\53ònH9òT?8òB-+ò^-ò.(õ(/r   r„   Ú__main__)Úcollectionsr   rÎ   r   rµ   rZ   rM   Útextwrapr   Úunittestr¾  Únumba.tests.supportr   r   r   Únumbar   r	   Ú
numba.corer
   Únumba.core.datamodelr   Únumba.core.errorsr   Úllvmlite.bindingÚbindingr`   r   r„   r}   Úmainr.   r   r   Ú<module>rè     sl   ðÝ "Û Û 	Û Û Ý Û Û ÷;ñ ;ç Ý Ý 0Ý 3Ý ôa#�Hô a#ôHH
/˜Hô H
/ðV ˆzÓØ‡M‚M…Oð r   