From 3b171696078fa5fe9c5912d1086c4d1a31457480 Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Tue, 28 Aug 2012 17:34:14 +0400 Subject: [PATCH] fixed PY-7089 Insert type assertion: leads to syntactically incorrect code when invoked for one-line function --- .../python/codeInsight/intentions/TypeAssertionIntention.java | 2 +- python/testData/intentions/afterTypeAssertion1.py | 3 +++ python/testData/intentions/beforeTypeAssertion1.py | 1 + python/testSrc/com/jetbrains/python/PyIntentionTest.java | 4 ++++ 4 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 python/testData/intentions/afterTypeAssertion1.py create mode 100644 python/testData/intentions/beforeTypeAssertion1.py diff --git a/python/src/com/jetbrains/python/codeInsight/intentions/TypeAssertionIntention.java b/python/src/com/jetbrains/python/codeInsight/intentions/TypeAssertionIntention.java index 1292036bbc39..4fd66c48b40d 100644 --- a/python/src/com/jetbrains/python/codeInsight/intentions/TypeAssertionIntention.java +++ b/python/src/com/jetbrains/python/codeInsight/intentions/TypeAssertionIntention.java @@ -99,7 +99,7 @@ public class TypeAssertionIntention implements IntentionAction { if (document.getLineNumber(statementList.getTextOffset()) == document.getLineNumber(statementListParent.getTextOffset())) { final String substring = - TextRange.create(statementListParent.getTextOffset(), statementList.getTextOffset()).substring(document.getText()); + TextRange.create(statementListParent.getTextRange().getStartOffset(), statementList.getTextOffset()).substring(document.getText()); final PyStatement foo = elementGenerator.createFromText(LanguageLevel.forElement(problemElement), PyStatement.class, substring + "\n\t" + text + "\n\t" + statementList.getText()); diff --git a/python/testData/intentions/afterTypeAssertion1.py b/python/testData/intentions/afterTypeAssertion1.py new file mode 100644 index 000000000000..eccd6b600b47 --- /dev/null +++ b/python/testData/intentions/afterTypeAssertion1.py @@ -0,0 +1,3 @@ +def foo(a, b): + assert isinstance(a, object) + a. diff --git a/python/testData/intentions/beforeTypeAssertion1.py b/python/testData/intentions/beforeTypeAssertion1.py new file mode 100644 index 000000000000..e56ba22d5530 --- /dev/null +++ b/python/testData/intentions/beforeTypeAssertion1.py @@ -0,0 +1 @@ +def foo(a, b): a. diff --git a/python/testSrc/com/jetbrains/python/PyIntentionTest.java b/python/testSrc/com/jetbrains/python/PyIntentionTest.java index f6a3e2ce6ed1..cb69abafe97f 100644 --- a/python/testSrc/com/jetbrains/python/PyIntentionTest.java +++ b/python/testSrc/com/jetbrains/python/PyIntentionTest.java @@ -249,6 +249,10 @@ public class PyIntentionTest extends PyTestCase { doTest(PyBundle.message("INTN.insert.assertion")); } + public void testTypeAssertion1() { //PY-7089 + doTest(PyBundle.message("INTN.insert.assertion")); + } + public void testDocStub() { doDocStubTest(); }