fixed PY-6482 Move statement: ineffective move down to else statement in try/except/else

This commit is contained in:
Ekaterina Tuzova
2012-05-02 15:42:24 +04:00
parent 936c7f4d0a
commit dac294d16f
5 changed files with 30 additions and 2 deletions

View File

@@ -394,13 +394,14 @@ public class StatementMover extends LineMover {
PyElement statementPart1 = statementParts.first;
PyElement statementPart2 = statementParts.second;
if (statementPart2 instanceof PyStatementPart) {
PyStatementList stList = ((PyStatementPart)statementParts.second).getStatementList();
PyStatementList stList = ((PyStatementPart)statementPart2).getStatementList();
if (stList != null && stList.getStatements().length == 1 && stList.getStatements()[0] instanceof PyPassStatement ||
moveToEmptyLine) {
myStatementPartToRemovePass = (PyStatementPart)statementParts.second;
}
}
return !(statementPart1 instanceof PyExceptPart) &&
final boolean fromExceptToElse = statementPart1 instanceof PyExceptPart && statementPart2 instanceof PyTryPart;
return !fromExceptToElse &&
statementPart2 != null &&
statementPart1 != null &&
statementPart1.getParent() == statementPart2.getParent() ||

View File

@@ -0,0 +1,7 @@
try:
print(zoo(1).foo(2))
except:
print<caret>(zoo(0).foo(2)) # <- move statement up here
else:
a = 1

View File

@@ -0,0 +1,8 @@
try:
print(zoo(1).foo(2))
except:
pass
else:
print<caret>(zoo(0).foo(2)) # <- move statement up here
a = 1

View File

@@ -0,0 +1,8 @@
try:
print(zoo(1).foo(2))
print<caret>(zoo(0).foo(2)) # <- move statement up here
except:
pass
else:
a = 1

View File

@@ -141,6 +141,10 @@ public class PyStatementMoverTest extends PyTestCase {
doTest();
}
public void testExceptElse() { // PY-6482
doTest();
}
public void testOneLineCompound() { // PY-5198
doTest();
}