File: //usr/local/lib/python3.10/test/__pycache__/test_syntax.cpython-310.opt-2.pyc
o
�iU� � @ sN d dl Z d dlZd dlmZ G dd� dej�Zdd� Zedkr%e� dS dS )� N)�supportc @ s* e Zd Z dDdd�Zdd� Zdd � Zd
d� Zdd
� Zdd� Zdd� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zejd,d-� �Zd.d/� Zd0d1� Zd2d3� Zd4d5� Zd6d7� Zd8d9� Zd:d;� Z d<d=� Z!ejd>d?� �Z"ejd@dA� �Z#ejdBdC� �Z$dS )E�SyntaxTestCase�
<testcase>�execNc
C s zt |||� W np tyy }
zd|r t|
|�s | �d|j � t�|t|
��}|d u r4| �d|f � | �|
j |� |d urF| �|
j
|� |d urQ| �|
j|� |d ur\| �|
j|� | d urn| �|
j
| � W Y d }
~
d S W Y d }
~
d S d }
~
ww | �d� d S )NzSyntaxError is not a %szSyntaxError did not contain %rz#compile() did not raise SyntaxError)�compile�SyntaxError�
isinstance�fail�__name__�re�search�str�assertEqual�filename�lineno�offset�
end_lineno�
end_offset)�self�codeZerrtextr �mode�subclassr r r r �err�mo� r �-/usr/local/lib/python3.10/test/test_syntax.py�_check_error' s, ���zSyntaxTestCase._check_errorc C � | j dddd� d S )Nzprint(end1 + end2 = ' ')z=expression cannot contain assignment, perhaps you meant "=="?� )r �r �r r r r �test_expression_with_assignmentE �
�z.SyntaxTestCase.test_expression_with_assignmentc C r )Nzf{}�invalid syntax�single�r r r r r r �1test_curly_brace_after_primary_raises_immediatelyL s z@SyntaxTestCase.test_curly_brace_after_primary_raises_immediatelyc C � | � dd� d S )Nzf() = 1Zassignr r r r r �test_assign_callO s zSyntaxTestCase.test_assign_callc C sH | � dd� | � dd� | � dd� | � dd� | � dd � | � d
d� | � dd � | � d
d � | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � d d� | � d!d� | � d"d#� | � d$d� d S )%Nzdel (,)r# zdel 1zcannot delete literalz
del (1, 2)zdel Nonezcannot delete Nonezdel *xzcannot delete starredzdel (*x)zcannot use starred expressionz del (*x,)z del [*x,]zdel f()zcannot delete function callzdel 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)zcannot delete conditionalzdel +azcannot delete expressionz 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)]zdel (a := 5)zcannot delete named expressionz
del a += br r r r r �test_assign_delR s6 zSyntaxTestCase.test_assign_delc C � d}| j |ddd� d S )Nz�if 1:
def error(a):
global a # SyntaxError
def error2():
b = 1
global b # SyntaxError
zparameter and global� �r r �r �sourcer r r �test_global_param_err_firstq � z*SyntaxTestCase.test_global_param_err_firstc C r* )Nz�if 1:
def error(a):
nonlocal a # SyntaxError
def error2():
b = 1
global b # SyntaxError
zparameter and nonlocalr+ r, r r- r r r �test_nonlocal_param_err_first{ r0 z,SyntaxTestCase.test_nonlocal_param_err_firstc C �p | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � dd� | � d d� | � d
d� d S )Nzif 0: yield�outside 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 = 1r r r r r �test_yield_outside_function� s ��z*SyntaxTestCase.test_yield_outside_functionc C r2 )Nzif 0: returnr3 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: returnr r r r r �test_return_outside_function� s ���z+SyntaxTestCase.test_return_outside_functionc C sx d}| j d|dd� | j d|dd� | j d|dd� | j d|dd� | j d |dd� | j d
|dd� | j d|dd� d S )
Nzoutside loop�break� r, zif 0: breakzif 0: break
else: x=1zif 1: pass
else: break� zclass C:
if 0: breakz#class C:
if 1: pass
else: breakr+ zwith object() as obj:
breakr �r �msgr r r �test_break_outside_loop� s �
�z&SyntaxTestCase.test_break_outside_loopc C sh d}| j d|dd� | j d|dd� | j d|dd� | j d|dd� | j d |d
d� | j d|dd� d S )Nznot properly in loopzif 0: continuer7 r, zif 0: continue
else: x=1zif 1: pass
else: continuer8 zclass C:
if 0: continuez&class C:
if 1: pass
else: continuer+ z"with object() as obj:
continuer r9 r r r �test_continue_outside_loop� s �
�z)SyntaxTestCase.test_continue_outside_loopc C � | j ddtd� d S )Nz
foo()
bar()
zunexpected indent�r �r �IndentationErrorr r r r �test_unexpected_indent� �
�z%SyntaxTestCase.test_unexpected_indentc C r= )Nzif 1:
foo()zexpected an indented blockr>