fixed PY-9406 Make function from method: when removing last method from class add pass statement

This commit is contained in:
Ekaterina Tuzova
2013-04-09 14:08:09 +04:00
parent 46e58f10c1
commit 913e96ea0e
6 changed files with 38 additions and 1 deletions

View File

@@ -36,11 +36,14 @@ public class PyMakeFunctionFromMethodQuickFix implements LocalQuickFix {
final PyClass containingClass = problemFunction.getContainingClass();
if (containingClass == null) return;
if (!PyUtil.deleteParameter(problemFunction, 0)) return;
PyUtil.deleteParameter(problemFunction, 0);
final PsiElement copy = problemFunction.copy();
final PyStatementList classStatementList = containingClass.getStatementList();
classStatementList.deleteChildRange(problemFunction, problemFunction);
if (classStatementList.getStatements().length < 1) {
classStatementList.add(PyElementGenerator.getInstance(project).createPassStatement());
}
final PsiFile file = containingClass.getContainingFile();
file.addAfter(copy, containingClass);
}

View File

@@ -0,0 +1,5 @@
__author__ = 'ktisha'
class Child(Base):
def <caret>f(self):
test = 1

View File

@@ -0,0 +1,8 @@
__author__ = 'ktisha'
class Child(Base):
pass
def f():
test = 1

View File

@@ -0,0 +1,5 @@
__author__ = 'ktisha'
class Child(Base):
def <caret>f():
test = 1

View File

@@ -0,0 +1,8 @@
__author__ = 'ktisha'
class Child(Base):
pass
def f():
test = 1

View File

@@ -24,4 +24,12 @@ public class PyMakeFunctionFromMethodQuickFixTest extends PyQuickFixTestCase {
doInspectionTest(PyMethodMayBeStaticInspection.class, PyBundle.message("QFIX.NAME.make.function"));
}
public void testEmptyStatementList() {
doInspectionTest(PyMethodMayBeStaticInspection.class, PyBundle.message("QFIX.NAME.make.function"));
}
public void testNoSelf() {
doInspectionTest(PyMethodMayBeStaticInspection.class, PyBundle.message("QFIX.NAME.make.function"));
}
}