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 92a6dc4f27e5..1fa586c76e5e 100644 --- a/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java +++ b/python/src/com/jetbrains/python/codeInsight/editorActions/moveUpDown/StatementMover.java @@ -217,17 +217,24 @@ public class StatementMover extends LineMover { parent2 = PsiTreeUtil.getParentOfType(element2, PyFunction.class); PyElement parent1 = PsiTreeUtil.getParentOfType(myStatementToMove, PyFunction.class); if (parent2 != null && parent2 != parent1) { - TextRange textRange2 = parent2.getTextRange(); - int endOffset = myStatementToMove instanceof PsiComment? doc.getLineNumber(textRange2.getEndOffset()) - : doc.getLineNumber(textRange2.getEndOffset())+1; + final TextRange textRange2 = parent2.getTextRange(); + if (myStatementToMove instanceof PsiComment) { + myStatementToIncreaseIndent = myStatementToMove; + return; + } + final int endOffset = doc.getLineNumber(textRange2.getEndOffset())+1; info.toMove2 = new LineRange(doc.getLineNumber(textRange2.getStartOffset()), endOffset); } 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()), - doc.getLineNumber(textRange2.getEndOffset())+1); + final TextRange textRange2 = parent2.getTextRange(); + if (myStatementToMove instanceof PsiComment) { + myStatementToIncreaseIndent = myStatementToMove; + return; + } + final int endOffset = doc.getLineNumber(textRange2.getEndOffset())+1; + info.toMove2 = new LineRange(doc.getLineNumber(textRange2.getStartOffset()), endOffset); } } } diff --git a/python/testData/mover/commentIntoCompound.py b/python/testData/mover/commentIntoCompound.py new file mode 100644 index 000000000000..ecfb4679570d --- /dev/null +++ b/python/testData/mover/commentIntoCompound.py @@ -0,0 +1,6 @@ +#comment +def f(): + if True: + a = 1 + else: + a = 2 diff --git a/python/testData/mover/commentIntoCompound_afterDown.py b/python/testData/mover/commentIntoCompound_afterDown.py new file mode 100644 index 000000000000..219d3cf364f5 --- /dev/null +++ b/python/testData/mover/commentIntoCompound_afterDown.py @@ -0,0 +1,6 @@ +def f(): + #comment + if True: + a = 1 + else: + a = 2 diff --git a/python/testData/mover/commentIntoCompound_afterUp.py b/python/testData/mover/commentIntoCompound_afterUp.py new file mode 100644 index 000000000000..ecfb4679570d --- /dev/null +++ b/python/testData/mover/commentIntoCompound_afterUp.py @@ -0,0 +1,6 @@ +#comment +def f(): + if True: + a = 1 + else: + a = 2 diff --git a/python/testData/mover/commentUp_afterUp.py b/python/testData/mover/commentUp_afterUp.py index 0b788b8514fb..3095347a9c28 100644 --- a/python/testData/mover/commentUp_afterUp.py +++ b/python/testData/mover/commentUp_afterUp.py @@ -1,6 +1,6 @@ -#comment def f(): if True: a = 1 else: a = 2 + #comment diff --git a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java index 3a0593989357..9104b8afcc46 100644 --- a/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java +++ b/python/testSrc/com/jetbrains/python/PyStatementMoverTest.java @@ -161,6 +161,10 @@ public class PyStatementMoverTest extends PyTestCase { doTest(); } + public void testCommentIntoCompound() { // PY-6133 + doTest(); + } + public void testWith() { // PY-5202 try { setLanguageLevel(LanguageLevel.PYTHON27);