
    0hhB                        S SK r S SKrS SKrS SKrS SKJr   " S S\R                  5      rS r\	S:X  a  \R                  " 5         gg)    N)supportc                      \ rS rSr  S*S jrS rS rS rS rS r	S	 r
S
 rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R6                  S 5       r\R6                  S 5       r\R6                  S 5       r\R6                  S 5       rS r S r!S r"S  r#S! r$S" r%S# r&S$ r'S% r(\R6                  S& 5       r)\R6                  S' 5       r*\R6                  S( 5       r+S)r,g)+SyntaxTestCasei  Nc
                     [        XU5        U R                  S5        g ! [         Ga  n
U(       a.  [        X5      (       d  U R                  SUR                  -  5        [
        R                  " U[        U
5      5      nUc  U R                  SU< 35        U R                  U
R                  U5        Ub  U R                  U
R                  U5        Ub  U R                  U
R                  U5        Ub  U R                  U
R                  U5        U	b!  U R                  U
R                  U	5         S n
A
g  S n
A
g S n
A
ff = f)Nz#compile() did not raise SyntaxErrorzSyntaxError is not a %szSyntaxError did not contain )compilefailSyntaxError
isinstance__name__researchstrassertEqualfilenamelinenooffset
end_lineno
end_offset)selfcodeerrtextr   modesubclassr   r   r   r   errmos               9/opt/python-3.13.8/usr/lib/python3.13/test/test_syntax.py_check_errorSyntaxTestCase._check_error  s   	=DD)$ II;<#  	=
3 9 9		3h6G6GGH7CH-Bz		gGHS\\84!  V4!  V4%  <%  << &	=s     D?DD::D?c                 &    U R                  SSSS9  g )Nzprint(end1 + end2 = ' ')z=expression cannot contain assignment, perhaps you meant "=="?   )r   r   r   s    r   test_expression_with_assignment.SyntaxTestCase.test_expression_with_assignment  s    &K 	 	
    c                 &    U R                  SSSS9  g )Nzf{}invalid syntaxsingler   r!   r"   s    r   1test_curly_brace_after_primary_raises_immediately@SyntaxTestCase.test_curly_brace_after_primary_raises_immediately  s    %!1Ar%   c                 (    U R                  SS5        g )Nzf() = 1assignr!   r"   s    r   test_assign_callSyntaxTestCase.test_assign_call  s    )X.r%   c                    U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS	5        U R                  S
S5        U R                  SS	5        U R                  SS	5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S S5        U R                  S!S5        U R                  S"S#5        U R                  S$S5        g )%Nzdel (,)r'   zdel 1zcannot delete literalz
del (1, 2)zdel Nonezcannot delete Nonezdel *xzcannot delete starredzdel (*x)zcannot use starred expressionz	del (*x,)z	del [*x,]zdel f()zcannot delete function callzdel f(a, b)z	del o.f()z
del a[0]()z
del x, f()z
del f(), xzdel [a, b, ((c), (d,), e.f())]zdel (a if True else b)zcannot delete conditionalzdel +azcannot delete expressionz	del a, +bz	del a + bzdel (a + b, c)zdel (c[0], a + b)zdel a.b.c + 2zdel a.b.c[0] + 2zdel (a, b, (c, d.e.f + 2))zdel [a, b, (c, d.e.f[0] + 2)]zdel (a := 5)zcannot delete named expressionz
del a += br!   r"   s    r   test_assign_delSyntaxTestCase.test_assign_del  s   )%56'#:;,(?@*&:;($;<*&EF+'>?+'>?)%BC-)FG+'DE,(EF,(EF,(EF:<YZ24OP($>?+'AB+'AB*,FG-/IJ/+EF,.HI68RS9;UV.*JK 	,(89r%   c                 *    SnU R                  USSS9  g )Nzif 1:
            def error(a):
                global a  # SyntaxError
            def error2():
                b = 1
                global b  # SyntaxError
            zparameter and global   r   r!   r   sources     r   test_global_param_err_first*SyntaxTestCase.test_global_param_err_first	  s!     	&"8Cr%   c                 *    SnU R                  USSS9  g )Nzif 1:
            def error(a):
                nonlocal a  # SyntaxError
            def error2():
                b = 1
                global b  # SyntaxError
            zparameter and nonlocalr4   r5   r!   r6   s     r   test_nonlocal_param_err_first,SyntaxTestCase.test_nonlocal_param_err_first	  s!     	&":1Er%   c                 H   U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S	S5        U R                  S
S5        g )Nzif 0: yieldoutside functionzif 0: yield
else:  x=1zif 1: pass
else: yieldzwhile 0: yieldzwhile 0: yield
else:  x=1zclass C:
  if 0: yieldz#class C:
  if 1: pass
  else: yieldzclass C:
  while 0: yieldz(class C:
  while 0: yield
  else:  x = 1r!   r"   s    r   test_yield_outside_function*SyntaxTestCase.test_yield_outside_function(	  s    -8JK38JK38JK*8JK68JK38JKA,	.68JKF,	.r%   c                 H   U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S	S5        U R                  S
S5        g )Nzif 0: returnr>   zif 0: return
else:  x=1zif 1: pass
else: returnzwhile 0: returnzclass C:
  if 0: returnzclass C:
  while 0: returnz'class C:
  while 0: return
  else:  x=1z$class C:
  if 0: return
  else: x= 1z$class C:
  if 1: pass
  else: returnr!   r"   s    r   test_return_outside_function+SyntaxTestCase.test_return_outside_function5	  s    .9KL49KL49KL+9KL49KL79KLE,	.B,	.B,	.r%   c                     SnU R                  SUSS9  U R                  SUSS9  U R                  SUSS9  U R                  SUSS9  U R                  S	USS9  U R                  S
USS9  U R                  SUSS9  g )Nzoutside loopbreak   r5   zif 0: breakzif 0: break
else:  x=1zif 1: pass
else: break   zclass C:
  if 0: breakz#class C:
  if 1: pass
  else: breakr4   zwith object() as obj:
 breakr!   r   msgs     r   test_break_outside_loop&SyntaxTestCase.test_break_outside_loopC	  s    '3q1-Q73SC3SC3SCAa 	 	)9a 	 	)r%   c                     SnU R                  SUSS9  U R                  SUSS9  U R                  SUSS9  U R                  SUSS9  U R                  S	US
S9  U R                  SUSS9  g )Nznot properly in loopzif 0: continuerF   r5   zif 0: continue
else:  x=1zif 1: pass
else: continuerG   zclass C:
  if 0: continuez&class C:
  if 1: pass
  else: continuer4   z"with object() as obj:
    continuer!   rH   s     r   test_continue_outside_loop)SyntaxTestCase.test_continue_outside_loopO	  s    $*C:6AF6AF6AFDa 	 	)?a 	 	)r%   c                 .    U R                  SS[        S9  g )Nzfoo()
 bar()
zunexpected indentr   r   IndentationErrorr"   s    r   test_unexpected_indent%SyntaxTestCase.test_unexpected_indentZ	  s    +-@#3 	 	5r%   c                 .    U R                  SS[        S9  g )Nzif 1:
foo()zexpected an indented blockrP   rQ   r"   s    r   test_no_indentSyntaxTestCase.test_no_indent^	  s    .*F#3 	 	5r%   c                 .    U R                  SS[        S9  g )Nzif 1:
  foo()
 bar()z unindent does not match .* levelrP   rQ   r"   s    r   test_bad_outdentSyntaxTestCase.test_bad_outdentb	  s    2<#3 	 	5r%   c                 (    U R                  SS5        g )Nzint(base=10, '2')z,positional argument follows keyword argumentr!   r"   s    r   test_kwargs_lastSyntaxTestCase.test_kwargs_lastg	  s    -H	Jr%   c                 (    U R                  SS5        g )Nzint(**{'base': 10}, '2')z6positional argument follows keyword argument unpackingr!   r"   s    r   test_kwargs_last2 SyntaxTestCase.test_kwargs_last2k	  s    47	8r%   c                 (    U R                  SS5        g )Nzint(**{'base': 10}, *['2'])z>iterable argument unpacking follows keyword argument unpackingr!   r"   s    r   test_kwargs_last3 SyntaxTestCase.test_kwargs_last3p	  s    77	8r%   c           	      ,    U R                  SSSSSSS9  g )Nz<foo(x,    y for y in range(3) for z in range(2) if z    , p)z*Generator expression must be parenthesizedrF      5   r   r   r   r   r!   r"   s    r   test_generator_in_function_call.SyntaxTestCase.test_generator_in_function_callu	  s%    XF!"q 	 	Lr%   c           	      ,    U R                  SSSSSSS9  g )Nz9try: pass
except ValueError: pass
except* TypeError: pass:cannot have both 'except' and 'except\*' on the same 'try'r4   rF      rg   r!   r"   s    r   test_except_then_except_star+SyntaxTestCase.test_except_then_except_starz	  %    WW!"qq 	 	Jr%   c           	      ,    U R                  SSSSSSS9  g )Nz9try: pass
except* ValueError: pass
except TypeError: passrk   r4   rF   r    rg   r!   r"   s    r   test_except_star_then_except+SyntaxTestCase.test_except_star_then_except	  ro   r%   c                     Sn [        USS5        SnSn [        USS5        [        USS5        g ! [         a    U R                  S5         N=f = f! [         a    U R                  S5         g f = f)Nz\
pass
        \

pass
<string>execz8Empty line after a line continuation character is valid.zN\
def fib(n):
    \
'''Print a Fibonacci series up to n.'''
    \
a, b = 0, 1
zJ\
def fib(n):
    '''Print a Fibonacci series up to n.'''
    a, b = 0, 1
z/Indented statement over multiple lines is valid)r   r	   r   )r   ss1s2s       r   test_empty_line_after_linecont-SyntaxTestCase.test_empty_line_after_linecont	  s    	RAz6*

	IB
F+B
F+%  	RIIPQ	R&  	IIIGH	Is    1 A AAA0/A0c                 >    SnU R                  [        [        U5        g )Nz(\
if x:
    y = 1
  \
  foo = 1
        )assertRaisesrR   ru   r   r   s     r   !test_continuation_bad_indentation0SyntaxTestCase.test_continuation_bad_indentation	  s     	*D$7r%   c                     U R                  SS5        U R                  SS5        U R                  SS5        S H  n[        SU S3SS	S
9  M     g )Nzclass A[__classdict__]: passz?reserved name '__classdict__' cannot be used for type parameterzdef f[__classdict__](): passz,type T[__classdict__] = tuple[__classdict__])	__class____classcell____classdictcell__z
class A:
    class B[z]: pass
                
<testcase>ru   r)   )r   r   )r   names     r    test_disallowed_type_param_names/SyntaxTestCase.test_disallowed_type_param_names	  st     	8Y	\8Y	\HY	\
 HD F  "0 Hr%   c                     Sn[        S5       H'  nUSU-   S3-  nUSUS-   -   S3-  nUSU-   S3-  nM)     US S	3-  nU R                  US
5        g )N    z    ztry:
rF   zraise Exception
zexcept Exception as e:
z0                                                pass!too many statically nested blocks)ranger   )r   r   is      r   test_nested_named_except_blocks.SyntaxTestCase.test_nested_named_except_blocks	  s~    rAvaxj''Dvqs|n$566Dvaxj 899D  	8*D!!$ CDr%   c                 |   S nSnUS-
  n[        U5       H4  nU R                  SU< 35         [        U" U5      SS5        S S S 5        M6     [        X3S-   5       H9  nU R                  SU< 35         U R                  U" U5      S	5        S S S 5        M;     g ! , (       d  f       M  = f! , (       d  f       M_  = f)
Nc                 r    [         R                  " S5      n[        U 5       H  nUSU S3-  nM     US-  nU$ )Nz]
                def bug():
                    with (
                    a
                    as a, a

): yield a)textwrapdedentr   nr   r   s      r   get_codeJSyntaxTestCase.test_with_statement_many_context_managers.<locals>.get_code	  sG    ?? $ D
 1X(1#U++ L DKr%      rF   within range: n=rt   ru      out of range: n=r   r   subTestr   r   r   r   CO_MAXBLOCKSMAX_MANAGERSr   s        r   )test_with_statement_many_context_managers8SyntaxTestCase.test_with_statement_many_context_managers	  s    		 #a'|$A 1qd34Z8 54 % |A%56A 1qd34!!(1+/RS 54 7 54 54   B4B,
B)	,
B;	c                 |   S nSnUS-
  n[        U5       H4  nU R                  SU< 35         [        U" U5      SS5        S S S 5        M6     [        X3S-   5       H9  nU R                  SU< 35         U R                  U" U5      S	5        S S S 5        M;     g ! , (       d  f       M  = f! , (       d  f       M_  = f)
Nc                     [         R                  " S5      /n[        U 5       H  nUR                  SU S35        M     UR                  S5        SR	                  U5      $ )Nzi
                async def bug():
                    async with (
                    a
                r   r   r   r   )r   r   r   appendjoinr   s      r   r   PSyntaxTestCase.test_async_with_statement_many_context_managers.<locals>.get_code	  sY    __ &  D
 1Xhqc/0 KK%774= r%   r   rF   r   rt   ru   r   r   r   r   r   s        r   /test_async_with_statement_many_context_managers>SyntaxTestCase.test_async_with_statement_many_context_managers	  s    		! #a'|$A 1qd34Z8 54 % |A%56A 1qd34!!(1+/RS 54 7 54 54r   c                 ,    SnU R                  US5        g )Nzw
def func1():
    if a != b:
        raise ValueError

def func2():
    try
        return 1
    finally:
        pass
zexpected ':'r!   r}   s     r   &test_barry_as_flufl_with_syntax_errors5SyntaxTestCase.test_barry_as_flufl_with_syntax_errors
  s    
 	$/r%   c                 p    U R                  SSSSS9  U R                  SSSSS9  U R                  SSS	SS9  g )
Nz	a = 3 \ 46unexpected character after line continuation characterrF   rl   )r   r   z1,\#
2   z
fgdfgf
1,\#
2
r4   r!   r"   s    r   -test_invalid_line_continuation_error_position<SyntaxTestCase.test_invalid_line_continuation_error_position
  s^    ,R!"1 	 	. 	*R!"1 	 	. 	0R!"1 	 	.r%   c                 L    U R                  SS5        U R                  SS5        g )Nu   A.Ɗ\ r   u   A.μ\
zunexpected EOF while parsingr!   r"   s    r   -test_invalid_line_continuation_left_recursive<SyntaxTestCase.test_invalid_line_continuation_left_recursive
  s+     	-R	T.8	:r%   c                 F   S H  nU R                  US-   SU S35        M     S H  nU R                  SU S3SU S35        M     S H  nU R                  US-   SU S	35        M     S
nU R                  US5        U R                  SS5        SnU R                  US5        g )Nz([{z1 + 2\z' was never closedza = z 1, 2, 3
b=3z)]}zunmatched '\'zFfunc(
    a=["unclosed], # Need a quote in this comment: "
    b=2,
)
z8parenthesis '\)' does not match opening parenthesis '\['zmatch y:
 case e(e=v,v,z was never closeds.   # coding=latin
(aaaaaaaaaaaaaaaaa
aaaaaaaaaaaz'\(' was never closedr!   )r   parenr   rv   s       r   test_error_parenthesis%SyntaxTestCase.test_error_parenthesis%
  s    EegoE7:L/MN  EUG=9RwFX;YZ  EegougQ/GH  	$ \]46IJ C!56r%   c                     U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS5        U R                  S	S5        g )
Nz'blechz#unterminated string literal \(.*\)$z"blechz"blech\"zEunterminated string literal \(.*\); perhaps you escaped the end quotez	r"blech\"z'''blechz)unterminated triple-quoted string literalz"""blechr!   r"   s    r   test_error_string_literal(SyntaxTestCase.test_error_string_literal>
  sr    ($JK($JKa	
 	b	
 	*&QR*&QRr%   c                 L    U R                  SS5        U R                  SS5        g )Nzprint("Hello")zinvalid non-printable characters   with(0,,):
r!   r"   s    r   test_invisible_characters(SyntaxTestCase.test_invisible_charactersK
  s&    .0QR-/PQr%   c                 "    Sn[        USS5        g )Nz)
def match(x):
    return 1+1

match(34)
rt   ru   r   r}   s     r   +test_match_call_does_not_raise_syntax_error:SyntaxTestCase.test_match_call_does_not_raise_syntax_errorO
       	j&)r%   c                 "    Sn[        USS5        g )Nz'
def case(x):
    return 1+1

case(34)
rt   ru   r   r}   s     r   *test_case_call_does_not_raise_syntax_error9SyntaxTestCase.test_case_call_does_not_raise_syntax_errorX
  r   r%   c                 &    U R                  SSSS9  g )Nzcall(
a=1,
a=1
)zkeyword argument repeatedr4   r5   r!   r"   s    r   /test_multiline_compiler_error_points_to_the_end>SyntaxTestCase.test_multiline_compiler_error_points_to_the_enda
  s    !' 	 	
r%   c                 ,    SnU R                  US5        g )Na  
while 1:
 while 2:
  while 3:
   while 4:
    while 5:
     while 6:
      while 8:
       while 9:
        while 10:
         while 11:
          while 12:
           while 13:
            while 14:
             while 15:
              while 16:
               while 17:
                while 18:
                 while 19:
                  while 20:
                   while 21:
                    while 22:
                     while 23:
                      break
r   r!   r6   s     r   )test_syntax_error_on_deeply_nested_blocks8SyntaxTestCase.test_syntax_error_on_deeply_nested_blocksh
  s    2 	&"EFr%   c                     SS-  S-   nS HG  nU R                  US9   U R                  [        S5         [        USU5        S S S 5        S S S 5        MI     g ! , (       d  f       N= f! , (       d  f       Ml  = f)N-i 4)ru   evalr(   r)   ztoo complexrt   )r   assertRaisesRegexMemoryErrorr   )r   r7   r   s      r   #test_error_on_parser_stack_overflow2SyntaxTestCase.test_error_on_parser_stack_overflow
  sb    v#.D4(++KHFJ5 I )( /HH )(s"   A(AA(
A%!A((
A7	c                     SnU R                  [        5         [        USS5        S S S 5        g ! , (       d  f       g = f)Nz,d{{{{{{{{{{{{{{{{{{{{{{{{{```{{{{{{{ef f():yrt   ru   )r|   r	   r   r6   s     r   test_deep_invalid_rule%SyntaxTestCase.test_deep_invalid_rule
  s0     @{+FJ/ ,++s   /
= )r   ru   NNNNN)-r   
__module____qualname____firstlineno__r   r#   r*   r.   r1   r8   r;   r?   rB   rJ   rM   rS   rV   rY   r\   r_   rb   rh   rm   rq   ry   r~   r   cpython_onlyr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __static_attributes__r   r%   r   r   r     sq    CGKO=<
B/:>DF..
)	)555
J8
8
L
J
J
I@
8 0 0$ E E T T2 T T20"	.:72SR**
 !G !GF 6 6 0 0r%   r   c                 N    UR                  [        R                  " 5       5        U$ )N)addTestdoctestDocTestSuite)loadertestspatterns      r   
load_testsr   
  s    	MM'&&()Lr%   __main__)r   r   r   unittesttestr   TestCaser   r   r   mainr   r%   r   <module>r      sJ   BF 
    R0X&& R0j
 zMMO r%   