blob: 5cbdd510c23d3498a55849247e395c03c770e3c6 [file] [log] [blame]
"""Check for nonlocal and used-before-assignment"""
# pylint: disable=missing-docstring, unused-variable, no-init, too-few-public-methods
__revision__ = 0
def test_ok():
""" uses nonlocal """
cnt = 1
def wrap():
nonlocal cnt
cnt = cnt + 1
wrap()
def test_fail():
""" doesn't use nonlocal """
cnt = 1
def wrap():
cnt = cnt + 1 # [used-before-assignment]
wrap()
def test_fail2():
""" use nonlocal, but for other variable """
cnt = 1
count = 1
def wrap():
nonlocal count
cnt = cnt + 1 # [used-before-assignment]
wrap()
def test_fail3(arg: test_fail4): # [used-before-assignment]
""" Depends on `test_fail4`, in argument annotation. """
return arg
# +1: [used-before-assignment, used-before-assignment]
def test_fail4(*args: test_fail5, **kwargs: undefined):
""" Depends on `test_fail5` and `undefined` in
variable and named arguments annotations.
"""
return args, kwargs
def test_fail5()->undefined1: # [used-before-assignment]
""" Depends on `undefined1` in function return annotation. """
def undefined():
""" no op """
def undefined1():
""" no op """
def nonlocal_in_ifexp():
"""bar"""
bug2 = True
def on_click(event):
"""on_click"""
if event:
nonlocal bug2
bug2 = not bug2
on_click(True)
nonlocal_in_ifexp()