diff --git a/python/src/com/jetbrains/python/codeInsight/intentions/PyJoinIfIntention.java b/python/src/com/jetbrains/python/codeInsight/intentions/PyJoinIfIntention.java index 9b24d8f753b8..720f3f82ba5a 100644 --- a/python/src/com/jetbrains/python/codeInsight/intentions/PyJoinIfIntention.java +++ b/python/src/com/jetbrains/python/codeInsight/intentions/PyJoinIfIntention.java @@ -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; diff --git a/python/testData/intentions/beforeJoinIfMultiStatements.py b/python/testData/intentions/beforeJoinIfMultiStatements.py new file mode 100644 index 000000000000..98e74d7e1ac5 --- /dev/null +++ b/python/testData/intentions/beforeJoinIfMultiStatements.py @@ -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_activate(): + 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 \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/PyIntentionTest.java b/python/testSrc/com/jetbrains/python/PyIntentionTest.java index c39c3c0622ec..6c12e1710939 100644 --- a/python/testSrc/com/jetbrains/python/PyIntentionTest.java +++ b/python/testSrc/com/jetbrains/python/PyIntentionTest.java @@ -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")); }