fixed PY-2970 Join 2 if's intention alters behavior of code

This commit is contained in:
Ekaterina Tuzova
2011-02-21 11:19:19 +03:00
parent 030a9614c7
commit d598c1fefa
3 changed files with 22 additions and 1 deletions
@@ -45,7 +45,8 @@ public class PyJoinIfIntention extends BaseIntentionAction {
if (outer != null) {
if (outer.getElsePart() != null || outer.getElifParts().length > 0) return false;
PyStatement firstStatement = getFirstStatement(outer);
PyStatementList outerStList = outer.getIfPart().getStatementList();
if (outerStList != null && outerStList.getStatements().length != 1) return false;
if (firstStatement instanceof PyIfStatement) {
final PyIfStatement inner = (PyIfStatement)firstStatement;
if (inner.getElsePart() != null || inner.getElifParts().length > 0) return false;
@@ -0,0 +1,16 @@
class A:
def __init__(self, *args, **kwargs):
self.uses_remaining_this_turn = None
self.effects = None
def foo(self):
if self.can_act<caret>ivate():
if self.effect_queue is None:
self.effect_queue = list(self.effects)
for effect in self.effect_queue:
effect.activate(source, targets)
self.effect_queue = None
self.uses_remaining_this_turn -= 1
def can_activate(self):
pass
@@ -125,6 +125,10 @@ public class PyIntentionTest extends PyLightFixtureTestCase {
doNegativeTest(PyBundle.message("INTN.join.if.text"));
}
public void testJoinIfMultiStatements() { //PY-2970
doNegativeTest(PyBundle.message("INTN.join.if.text"));
}
public void testDictConstructorToLiteralForm() {
doTest(PyBundle.message("INTN.convert.dict.constructor.to.dict.literal"));
}