summaryrefslogtreecommitdiff
path: root/tests/functional
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2021-10-26 09:59:29 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2021-10-26 11:15:37 +0200
commit9323cf20afff416dabe61b7f303791a1ce7f2bb6 (patch)
tree7f353d7a99be28d8453a7178bad2b7316c4201f3 /tests/functional
parent448485a98b66a40fae6db6dbb4f25f4516e5e539 (diff)
downloadpylint-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.py51
-rw-r--r--tests/functional/u/undefined/undefined_variable_py38.txt2
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