From ac81a06e78fa0fa0c4298fefaf5b77af76e5bce3 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Mon, 19 Feb 2018 19:50:27 +0300 Subject: [PATCH] Don't process assignments in conditional expressions (PY-19856) They lead to syntax error. --- .../python/inspections/PyRedeclarationInspection.java | 2 +- .../PyRedeclarationInspection/conditionalExpression.py | 3 +++ .../python/inspections/PyRedeclarationInspectionTest.java | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 python/testData/inspections/PyRedeclarationInspection/conditionalExpression.py diff --git a/python/src/com/jetbrains/python/inspections/PyRedeclarationInspection.java b/python/src/com/jetbrains/python/inspections/PyRedeclarationInspection.java index 97a6d16fe1d9..670c35a857bb 100644 --- a/python/src/com/jetbrains/python/inspections/PyRedeclarationInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyRedeclarationInspection.java @@ -172,7 +172,7 @@ public class PyRedeclarationInspection extends PyInspection { final PsiElement element = instruction.getElement(); if (element == null) return false; - if (element instanceof PyTryExceptStatement) return true; + if (element instanceof PyTryExceptStatement || element instanceof PyConditionalExpression) return true; if (element instanceof PyForStatement) { final PyForPart forPart = ((PyForStatement)element).getForPart(); diff --git a/python/testData/inspections/PyRedeclarationInspection/conditionalExpression.py b/python/testData/inspections/PyRedeclarationInspection/conditionalExpression.py new file mode 100644 index 000000000000..515439986aaa --- /dev/null +++ b/python/testData/inspections/PyRedeclarationInspection/conditionalExpression.py @@ -0,0 +1,3 @@ +x = 1 +res1 = None if False else x = 2 +res2 = x = 2 if True else None \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/inspections/PyRedeclarationInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyRedeclarationInspectionTest.java index 4d70177033d8..c5edfc5c429a 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyRedeclarationInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyRedeclarationInspectionTest.java @@ -160,6 +160,10 @@ public class PyRedeclarationInspectionTest extends PyInspectionTestCase { doTest(); } + public void testConditionalExpression() { + doTest(); + } + @NotNull @Override protected Class getInspectionClass() {