|
| 1 | +"""Tests for used-before-assignment false positive from ternary expression with walrus operator""" |
| 2 | +# pylint: disable=unnecessary-lambda-assignment, unused-variable, disallowed-name, invalid-name |
| 3 | + |
| 4 | +def invalid(): |
| 5 | + """invalid cases that will trigger used-before-assignment""" |
| 6 | + var = foo(a, '', '') # [used-before-assignment] |
| 7 | + print(str(1 if (a:=-1) else 0)) |
| 8 | + var = bar(b) # [used-before-assignment] |
| 9 | + var = c*c # [used-before-assignment] |
| 10 | + var = 1 if (b:=-1) else 0 |
| 11 | + var = 1 if (c:=-1) else 0 |
| 12 | + |
| 13 | +def attribute_call_valid(): |
| 14 | + """assignment with attribute calls""" |
| 15 | + var = (a if (a:='a') else '').lower() |
| 16 | + var = ('' if (b:='b') else b).lower() |
| 17 | + var = (c if (c:='c') else c).upper().lower().replace('', '').strip() |
| 18 | + var = ''.strip().replace('', '' + (e if (e:='e') else '').lower()) |
| 19 | + |
| 20 | +def function_call_arg_valid(): |
| 21 | + """assignment as function call arguments""" |
| 22 | + var = str(a if (a:='a') else '') |
| 23 | + var = str('' if (b:='b') else b) |
| 24 | + var = foo(1, c if (c:=1) else 0, 1) |
| 25 | + print(foo('', '', foo('', str(int(d if (d:='1') else '')), ''))) |
| 26 | + |
| 27 | +def function_call_keyword_valid(): |
| 28 | + """assignment as function call keywords""" |
| 29 | + var = foo(x=a if (a:='1') else '', y='', z='') |
| 30 | + var = foo(x='', y=foo(x='', y='', z=b if (b:='1') else ''), z='') |
| 31 | + |
| 32 | +def complex_valid(): |
| 33 | + """assignment within complex call expression""" |
| 34 | + var = str(bar(bar(a if (a:=1) else 0))).lower().upper() |
| 35 | + print(foo(x=foo(''.replace('', str(b if (b:=1) else 0).upper()), '', z=''), y='', z='')) |
| 36 | + |
| 37 | +def foo(x, y, z): |
| 38 | + """helper function for tests""" |
| 39 | + return x+y+z |
| 40 | + |
| 41 | +bar = lambda x : x |
0 commit comments