From 099e229783be53007006fa947e8d06598ec59bd8 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Thu, 15 Dec 2011 14:39:01 +0400 Subject: [PATCH] fixed PY-5192 Move Statement: breaks code in case moving down to nested try statement --- .../editorActions/moveUpDown/StatementMover.java | 2 +- python/testData/mover/tryExcept.py | 8 ++++++++ python/testData/mover/tryExcept_afterDown.py | 9 +++++++++ python/testData/mover/tryExcept_afterUp.py | 9 +++++++++ .../com/jetbrains/python/PyStatementMoverTest.java | 4 ++++ 5 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 python/testData/mover/tryExcept.py create mode 100644 python/testData/mover/tryExcept_afterDown.py create mode 100644 python/testData/mover/tryExcept_afterUp.py diff --git a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java index 774c034b9521..491fe3813793 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -356,7 +356,7 @@ public class StatementMover extends LineMover { myStatementPartToRemovePass = (PyStatementPart)statementParts.second; } } - if (statementPart2 != null && statementPart1 != null && statementPart1.getParent() == statementPart2.getParent() || + if (!(statementPart1 instanceof PyExceptPart) && statementPart2 != null && statementPart1 != null && statementPart1.getParent() == statementPart2.getParent() || statementPart2 == statementPart1) return true; return false; } diff --git a/python/testData/mover/tryExcept.py b/python/testData/mover/tryExcept.py new file mode 100644 index 000000000000..467e5d2d849e --- /dev/null +++ b/python/testData/mover/tryExcept.py @@ -0,0 +1,8 @@ + +try: + try: + print(zoo(1).foo(2)) + except: + print(zoo(0).foo(2)) # <- move statement up here +except: + zoo(3) \ No newline at end of file diff --git a/python/testData/mover/tryExcept_afterDown.py b/python/testData/mover/tryExcept_afterDown.py new file mode 100644 index 000000000000..12638ae0cca1 --- /dev/null +++ b/python/testData/mover/tryExcept_afterDown.py @@ -0,0 +1,9 @@ + +try: + try: + print(zoo(1).foo(2)) + except: + pass + print(zoo(0).foo(2)) # <- move statement up here +except: + zoo(3) \ No newline at end of file diff --git a/python/testData/mover/tryExcept_afterUp.py b/python/testData/mover/tryExcept_afterUp.py new file mode 100644 index 000000000000..e277e463168f --- /dev/null +++ b/python/testData/mover/tryExcept_afterUp.py @@ -0,0 +1,9 @@ + +try: + try: + print(zoo(1).foo(2)) + print(zoo(0).foo(2)) # <- move statement up here + except: + pass +except: + zoo(3) \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java index 7b6e63aad258..77f5a3cb0bcd 100644 --- a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java +++ b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java @@ -25,6 +25,10 @@ public class PyStatementMoverTest extends PyTestCase { doTest(); } + public void testTryExcept() { + doTest(); + } + public void testInnerIf() { doTest(); }