fixed PY-6133 Move statement: strange comment moving down to def or class statements

This commit is contained in:
Ekaterina Tuzova
2012-04-08 17:12:16 +04:00
parent b2e3d61ea6
commit 194383cbd0
6 changed files with 36 additions and 7 deletions
@@ -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);
}
}
}
@@ -0,0 +1,6 @@
#comment <caret>
def f():
if True:
a = 1
else:
a = 2
@@ -0,0 +1,6 @@
def f():
#comment
if True:
a = 1
else:
a = 2
@@ -0,0 +1,6 @@
#comment <caret>
def f():
if True:
a = 1
else:
a = 2
+1 -1
View File
@@ -1,6 +1,6 @@
#comment
def f():
if True:
a = 1
else:
a = 2
#comment
@@ -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);