From b55a8b421a7ef6bfaa0af2adebe22fa43a755b6d Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Wed, 18 Sep 2013 17:04:51 +0400 Subject: [PATCH] Fixed unbound variable inspection for unreachable code (PY-6114) --- .../inspections/PyUnboundLocalVariableInspection.java | 3 +++ .../PyUnboundLocalVariableInspection/UnboundUnreachable.py | 7 +++++++ .../inspections/PyUnboundLocalVariableInspectionTest.java | 5 +++++ 3 files changed, 15 insertions(+) create mode 100644 python/testData/inspections/PyUnboundLocalVariableInspection/UnboundUnreachable.py diff --git a/python/src/com/jetbrains/python/inspections/PyUnboundLocalVariableInspection.java b/python/src/com/jetbrains/python/inspections/PyUnboundLocalVariableInspection.java index e551b97f1649..ba3d7c0c92e5 100644 --- a/python/src/com/jetbrains/python/inspections/PyUnboundLocalVariableInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyUnboundLocalVariableInspection.java @@ -123,6 +123,9 @@ public class PyUnboundLocalVariableInspection extends PyInspection { return; } } + if (PyUnreachableCodeInspection.isUnreachable(node)) { + return; + } if (owner instanceof PyFile) { if (isBuiltin) { return; diff --git a/python/testData/inspections/PyUnboundLocalVariableInspection/UnboundUnreachable.py b/python/testData/inspections/PyUnboundLocalVariableInspection/UnboundUnreachable.py new file mode 100644 index 000000000000..02cc63c063e1 --- /dev/null +++ b/python/testData/inspections/PyUnboundLocalVariableInspection/UnboundUnreachable.py @@ -0,0 +1,7 @@ +def test1(c, xs): + if c: + y = 1 + print(y) + for x in xs: + continue + z = 1 diff --git a/python/testSrc/com/jetbrains/python/inspections/PyUnboundLocalVariableInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyUnboundLocalVariableInspectionTest.java index b46fb6c655fa..3a13ef14c22b 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyUnboundLocalVariableInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyUnboundLocalVariableInspectionTest.java @@ -173,6 +173,11 @@ public class PyUnboundLocalVariableInspectionTest extends PyTestCase { doTest(); } + // PY-6114 + public void testUnboundUnreachable() { + doTest(); + } + private void doTest() { myFixture.configureByFile(TEST_DIRECTORY + getTestName(false) + ".py"); myFixture.enableInspections(PyUnboundLocalVariableInspection.class);