Prevent incorrect syntax error with nonlocal of a parameter

Also includes a test for the error "name 'x' is assigned before nonlocal
declaration"

Fixes #175
This commit is contained in:
Terseus
2021-02-21 00:38:46 +01:00
parent 93206f6eba
commit e5d6663721
3 changed files with 37 additions and 0 deletions

View File

@@ -337,6 +337,13 @@ FAILING_EXAMPLES = [
def z():
nonlocal a
'''),
# Name is assigned before nonlocal declaration
dedent('''
def x(a):
def y():
a = 10
nonlocal a
'''),
]
if sys.version_info[:2] >= (3, 7):

View File

@@ -113,6 +113,29 @@ def x():
nonlocal a
def x(a):
def y():
nonlocal a
def x(a, b):
def y():
nonlocal b
nonlocal a
def x(a):
def y():
def z():
nonlocal a
def x():
def y(a):
def z():
nonlocal a
a = *args, *args
error[(*args, *args)] = 3
*args, *args