From 0c455eb33205665d57dbf0ae67221c9ff804e125 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Fri, 2 Dec 2011 11:33:55 +0100 Subject: [PATCH] fixed PY-5195 Move Statement: loses code on moving nested function --- .../editorActions/moveUpDown/StatementMover.java | 8 ++++---- python/testData/mover/functionDown.py | 5 +++++ python/testData/mover/functionDown_afterDown.py | 5 +++++ python/testData/mover/functionDown_afterUp.py | 5 +++++ .../com/jetbrains/python/PyStatementMoverTest.java | 4 ++++ 5 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 python/testData/mover/functionDown.py create mode 100644 python/testData/mover/functionDown_afterDown.py create mode 100644 python/testData/mover/functionDown_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 5c9949bbd932..c0ffc5895b28 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -162,15 +162,15 @@ public class StatementMover extends LineMover { element2 = tmp; } } - PyElement parent2 = PsiTreeUtil.getParentOfType(element2, PyFunction.class, false); - PyElement parent1 = PsiTreeUtil.getParentOfType(myStatementToMove, PyFunction.class, false); + PyElement parent2 = PsiTreeUtil.getParentOfType(element2, PyFunction.class); + PyElement parent1 = PsiTreeUtil.getParentOfType(myStatementToMove, PyFunction.class); if (parent2 != null && parent2 != parent1) { TextRange textRange2 = parent2.getTextRange(); info.toMove2 = new LineRange(doc.getLineNumber(textRange2.getStartOffset()), doc.getLineNumber(textRange2.getEndOffset())+1); } - parent2 = PsiTreeUtil.getParentOfType(element2, PyClass.class, false); - parent1 = PsiTreeUtil.getParentOfType(myStatementToMove, PyClass.class, false); + parent2 = PsiTreeUtil.getParentOfType(element2, PyClass.class); + parent1 = PsiTreeUtil.getParentOfType(myStatementToMove, PyClass.class); if (parent2 != null && parent2 != parent1) { TextRange textRange2 = parent2.getTextRange(); info.toMove2 = new LineRange(doc.getLineNumber(textRange2.getStartOffset()), diff --git a/python/testData/mover/functionDown.py b/python/testData/mover/functionDown.py new file mode 100644 index 000000000000..58a37aa367ba --- /dev/null +++ b/python/testData/mover/functionDown.py @@ -0,0 +1,5 @@ +def a(): + + def b(): + pass + zoo(1) \ No newline at end of file diff --git a/python/testData/mover/functionDown_afterDown.py b/python/testData/mover/functionDown_afterDown.py new file mode 100644 index 000000000000..8fb35e93511d --- /dev/null +++ b/python/testData/mover/functionDown_afterDown.py @@ -0,0 +1,5 @@ +def a(): + + zoo(1) + def b(): + pass diff --git a/python/testData/mover/functionDown_afterUp.py b/python/testData/mover/functionDown_afterUp.py new file mode 100644 index 000000000000..8fd78681aa19 --- /dev/null +++ b/python/testData/mover/functionDown_afterUp.py @@ -0,0 +1,5 @@ +def a(): + + def b(): + pass + zoo(1) \ 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 abbc851bb806..70d754dd680b 100644 --- a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java +++ b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java @@ -91,4 +91,8 @@ public class PyStatementMoverTest extends PyTestCase { public void testNestedBlock() { // PY-1343 doTest(); } + + public void testFunctionDown() { + doTest(); + } }