diff options
author | Daniƫl van Noord <13665637+DanielNoord@users.noreply.github.com> | 2021-10-26 09:59:29 +0200 |
---|---|---|
committer | Pierre Sassoulas <pierre.sassoulas@gmail.com> | 2021-10-26 11:15:37 +0200 |
commit | 9323cf20afff416dabe61b7f303791a1ce7f2bb6 (patch) | |
tree | 7f353d7a99be28d8453a7178bad2b7316c4201f3 /tests/functional | |
parent | 448485a98b66a40fae6db6dbb4f25f4516e5e539 (diff) | |
download | pylint-git-9323cf20afff416dabe61b7f303791a1ce7f2bb6.tar.gz |
Add control flow check for ``undefined-variable`` in ``if ... else``
Closes #3688
Diffstat (limited to 'tests/functional')
-rw-r--r-- | tests/functional/u/undefined/undefined_variable_py38.py | 51 | ||||
-rw-r--r-- | tests/functional/u/undefined/undefined_variable_py38.txt | 2 |
2 files changed, 52 insertions, 1 deletions
diff --git a/tests/functional/u/undefined/undefined_variable_py38.py b/tests/functional/u/undefined/undefined_variable_py38.py index 950d17fb4..3c00bfd85 100644 --- a/tests/functional/u/undefined/undefined_variable_py38.py +++ b/tests/functional/u/undefined/undefined_variable_py38.py @@ -1,5 +1,5 @@ """Tests for undefined variable with assignment expressions""" -# pylint: disable=using-constant-test +# pylint: disable=using-constant-test, expression-not-assigned # Tests for annotation of variables and potentially undefinition @@ -48,3 +48,52 @@ def no_parameters_in_function_default() -> None: print(again_no_default) # [undefined-variable] + +# Tests for assignment expressions in if ... else comprehensions + + +[i for i in range(10) if (if_assign_1 := i)] + +print(if_assign_1) + +IF_TWO = [i for i in range(10) if (if_assign_2 := i)] + +print(if_assign_2) + +IF_THREE = next(i for i in range(10) if (if_assign_3 := i)) + +print(if_assign_3) + +IF_FOUR = {i: i for i in range(10) if (if_assign_4 := i)} + +print(if_assign_4) + +IF_FIVE = {i: i if (if_assign_5 := i) else 0 for i in range(10)} +print(if_assign_5) + +{i: i if True else (else_assign_1 := i) for i in range(10)} + +print(else_assign_1) # [undefined-variable] + + +# Tests for assignment expressions in the assignment of comprehensions + +[(assign_assign_1 := i) for i in range(10)] + +print(assign_assign_1) + +COMPREHENSION_TWO =[(assign_assign_2 := i) for i in range(10)] + +print(assign_assign_2) + +COMPREHENSION_THREE = next((assign_assign_3 := i) for i in range(10)) + +print(assign_assign_3) + +COMPREHENSION_FOUR = {i: (assign_assign_4 := i) for i in range(10)} + +print(assign_assign_4) + +COMPREHENSION_FIVE = {i: (else_assign_2 := i) if False else 0 for i in range(10)} + +print(else_assign_2) # [undefined-variable] diff --git a/tests/functional/u/undefined/undefined_variable_py38.txt b/tests/functional/u/undefined/undefined_variable_py38.txt index 50a4944ac..d33473d98 100644 --- a/tests/functional/u/undefined/undefined_variable_py38.txt +++ b/tests/functional/u/undefined/undefined_variable_py38.txt @@ -1,3 +1,5 @@ undefined-variable:17:15:typing_and_self_referncing_assignment_expression:Undefined variable 'var':HIGH undefined-variable:42:6::Undefined variable 'no_default':HIGH undefined-variable:50:6::Undefined variable 'again_no_default':HIGH +undefined-variable:76:6::Undefined variable 'else_assign_1':HIGH +undefined-variable:99:6::Undefined variable 'else_assign_2':HIGH |