a ze@sHddlZddlZddlmZGdddejZddZedkrDedS)N)supportc@seZdZd2ddZddZdd Zee d d d Z d dZ ddZ ddZ ddZddZddZ ddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zejd(d)Zd*d+Zd,d-Zd.d/Zejd0d1ZdS)3SyntaxTestCase execNc Cszt|||Wnty}z|r>t||s>|d|jt|t|} | durf|d|f||j ||dur||j ||dur||j |WYd}~nd}~00|ddS)NzSyntaxError is not a %szSyntaxError did not contain %rz#compile() did not raise SyntaxError) compile SyntaxError isinstancefail__name__researchstrZ assertEqualfilenamelinenooffset) selfcodeZerrtextrmodesubclassrrerrmorD/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_syntax.py _check_errors$zSyntaxTestCase._check_errorcCs|jdddddS)Nzf{invalid syntaxZsingle)rrrrrr1test_curly_brace_after_primary_raises_immediatelysz@SyntaxTestCase.test_curly_brace_after_primary_raises_immediatelycCs|dddS)Nzf() = 1Zassignrrrrrtest_assign_callszSyntaxTestCase.test_assign_callz3The old parser cannot generate these error messagescCsH|dd|dd|dd|dd|dd |d d |d d |d d |dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|dd|d d|d!d|d"d#|d$ddS)%Nzdel (,)rzdel 1zdelete literalz del (1, 2)zdel Nonez delete Nonezdel *xzdelete starredzdel (*x)zuse starred expressionz del (*x,)z del [*x,]zdel f()zdelete function callz del f(a, b)z del o.f()z del a[0]()z del x, f()z del f(), xzdel [a, b, ((c), (d,), e.f())]zdel (a if True else b)zdelete conditionalzdel +azdelete operatorz del a, +bz del a + bzdel (a + b, c)zdel (c[0], a + b)z del a.b.c + 2zdel a.b.c[0] + 2zdel (a, b, (c, d.e.f + 2))zdel [a, b, (c, d.e.f[0] + 2)]z del (a := 5)zdelete named expressionz del a += brrrrrtest_assign_dels6                          zSyntaxTestCase.test_assign_delcCsd}|j|ddddS)Nzif 1: def error(a): global a # SyntaxError def error2(): b = 1 global b # SyntaxError zparameter and globalrrrsourcerrrtest_global_param_err_first4sz*SyntaxTestCase.test_global_param_err_firstcCsd}|j|ddddS)Nzif 1: def error(a): nonlocal a # SyntaxError def error2(): b = 1 global b # SyntaxError zparameter and nonlocalr r!rr"rrrtest_nonlocal_param_err_first>sz,SyntaxTestCase.test_nonlocal_param_err_firstcCs|dddS)Nbreak outside looprrrrrtest_break_outside_loopHsz&SyntaxTestCase.test_break_outside_loopcCsp|dd|dd|dd|dd|dd|dd|dd|d d|d ddS) Nz if 0: yieldoutside functionzif 0: yield else: x=1zif 1: pass else: yieldzwhile 0: yieldzwhile 0: yield else: x=1zclass C: if 0: yieldz#class C: if 1: pass else: yieldzclass C: while 0: yieldz(class C: while 0: yield else: x = 1rrrrrtest_yield_outside_functionKs       z*SyntaxTestCase.test_yield_outside_functioncCsp|dd|dd|dd|dd|dd|dd|dd|d d|d ddS) Nz if 0: returnr)zif 0: return else: x=1zif 1: pass else: returnzwhile 0: returnzclass C: if 0: returnzclass 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: returnrrrrrtest_return_outside_functionXs      z+SyntaxTestCase.test_return_outside_functioncCs@|dd|dd|dd|dd|dddS)Nz if 0: breakr'zif 0: break else: x=1zif 1: pass else: breakzclass C: if 0: breakz#class C: if 1: pass else: breakrrrrrr(fs    cCs@|dd|dd|dd|dd|dddS)Nzif 0: continueznot properly in loopzif 0: continue else: x=1zif 1: pass else: continuezclass C: if 0: continuez&class C: if 1: pass else: continuerrrrrtest_continue_outside_loopns    z)SyntaxTestCase.test_continue_outside_loopcCs|jddtddS)Nz foo() bar() zunexpected indentrrIndentationErrorrrrrtest_unexpected_indentvsz%SyntaxTestCase.test_unexpected_indentcCs|jddtddS)Nz if 1: foo()zexpected an indented blockr-r.rrrrtest_no_indentzszSyntaxTestCase.test_no_indentcCs|jddtddS)Nzif 1: foo() bar()z unindent does not match .* levelr-r.rrrrtest_bad_outdent~szSyntaxTestCase.test_bad_outdentcCs|dddS)Nzint(base=10, '2')z,positional argument follows keyword argumentrrrrrtest_kwargs_lastszSyntaxTestCase.test_kwargs_lastcCs|dddS)Nzint(**{'base': 10}, '2')z6positional argument follows keyword argument unpackingrrrrrtest_kwargs_last2sz SyntaxTestCase.test_kwargs_last2cCs|dddS)Nzint(**{'base': 10}, *['2'])z>iterable argument unpacking follows keyword argument unpackingrrrrrtest_kwargs_last3sz SyntaxTestCase.test_kwargs_last3cCs6d}zt|ddWnty0|dYn0dS)Nz\ pass \ pass zrz8Empty line after a line continuation character is valid.)rrr )rsrrrtest_empty_line_after_lineconts  z-SyntaxTestCase.test_empty_line_after_linecontcCsjd}tdD]>}|d|d7}|d|dd7}|d|d7}q |dd 7}||d dS) N z ztry: zraise Exception zexcept Exception as e: z0 pass!too many statically nested blocks)ranger)rrirrrtest_nested_named_except_blockss z.SyntaxTestCase.test_nested_named_except_blockscCsd}||ddS)Nzw def func1(): if a != b: raise ValueError def func2(): try return 1 finally: pass rr)rrrrr&test_barry_as_flufl_with_syntax_errorss z5SyntaxTestCase.test_barry_as_flufl_with_syntax_errorscCs:|jddddd|jddddd|jddd dddS) Nz a = 3 \ 46unexpected character after line continuation characterr:)rrz1,\# 2z fgdfgf 1,\# 2 r rrrrr-test_invalid_line_continuation_error_positionszs }