From fbee7c314f25ba689fb74823ab80852b760c6cd4 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 2 Dec 2011 11:52:05 +0100 Subject: [PATCH] fixed PY-5192 Move Statement: breaks code in case moving down to nested try statement --- .../editorActions/moveUpDown/StatementMover.java | 4 ++-- python/testData/mover/nestedTry.py | 8 ++++++++ python/testData/mover/nestedTry_afterDown.py | 8 ++++++++ python/testData/mover/nestedTry_afterUp.py | 8 ++++++++ .../com/jetbrains/python/PyStatementMoverTest.java | 4 ++++ 5 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 python/testData/mover/nestedTry.py create mode 100644 python/testData/mover/nestedTry_afterDown.py create mode 100644 python/testData/mover/nestedTry_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 6da6cdef4086..e115afe1616c 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -246,7 +246,7 @@ public class StatementMover extends LineMover { PsiElement commonParent = PsiTreeUtil.findCommonParent(statementPart1, statementPart2); if (PsiTreeUtil.isAncestor(statementPart2, statementPart1, false)) return false; if ((commonParent instanceof PyIfStatement) || (commonParent instanceof PyLoopStatement) || - (commonParent instanceof PyConditionalStatementPart)) + (commonParent instanceof PyStatementPart)) return true; } } @@ -261,7 +261,7 @@ public class StatementMover extends LineMover { if (statementPart2 == null) return true; if (statementPart1.getParent() != statementPart2.getParent()) { PsiElement commonParent = PsiTreeUtil.findCommonParent(statementPart1, statementPart2); - if (!(commonParent instanceof PyIfStatement) && !(commonParent instanceof PyLoopStatement) && !(commonParent instanceof PyConditionalStatementPart)) + if (!(commonParent instanceof PyIfStatement) && !(commonParent instanceof PyLoopStatement) && !(commonParent instanceof PyStatementPart)) return true; if (PsiTreeUtil.isAncestor(statementPart2, statementPart1, false)) return true; } diff --git a/python/testData/mover/nestedTry.py b/python/testData/mover/nestedTry.py new file mode 100644 index 000000000000..3faf4285ff30 --- /dev/null +++ b/python/testData/mover/nestedTry.py @@ -0,0 +1,8 @@ +try: + zoo(3) + try: + print(zoo(1).foo(2)) + except: + print(zoo(0).foo(2)) +except: + pass \ No newline at end of file diff --git a/python/testData/mover/nestedTry_afterDown.py b/python/testData/mover/nestedTry_afterDown.py new file mode 100644 index 000000000000..0a6c8980f0c7 --- /dev/null +++ b/python/testData/mover/nestedTry_afterDown.py @@ -0,0 +1,8 @@ +try: + try: + zoo(3) + print(zoo(1).foo(2)) + except: + print(zoo(0).foo(2)) +except: + pass \ No newline at end of file diff --git a/python/testData/mover/nestedTry_afterUp.py b/python/testData/mover/nestedTry_afterUp.py new file mode 100644 index 000000000000..37fba0706683 --- /dev/null +++ b/python/testData/mover/nestedTry_afterUp.py @@ -0,0 +1,8 @@ +zoo(3) +try: + try: + print(zoo(1).foo(2)) + except: + print(zoo(0).foo(2)) +except: + pass \ 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 ee74bc87d5f3..01a5cbe60a58 100644 --- a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java +++ b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java @@ -99,4 +99,8 @@ public class PyStatementMoverTest extends PyTestCase { public void testContinueBreak() { // PY-5193 doTest(); } + + public void testNestedTry() { // PY-5192 + doTest(); + } }