From 6e563e538062d46478b75cab92e5bc9cfeafea1d Mon Sep 17 00:00:00 2001 From: Ekaterina Tuzova Date: Mon, 23 Sep 2013 20:56:32 +0400 Subject: [PATCH] fixed PY-9365 Make function from method: leads to unresolved attribute reference for method usages in class --- .../quickfix/PyMakeFunctionFromMethodQuickFix.java | 3 ++- .../PyMakeFunctionFromMethodQuickFixTest/usageSelf.py | 6 ++++++ .../usageSelf_after.py | 7 +++++++ .../quickFixes/PyMakeFunctionFromMethodQuickFixTest.java | 4 ++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf.py create mode 100644 python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf_after.py diff --git a/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java index cf0f7300f856..c6b76785f534 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/PyMakeFunctionFromMethodQuickFix.java @@ -11,6 +11,7 @@ import com.intellij.psi.PsiReference; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.usageView.UsageInfo; import com.jetbrains.python.PyBundle; +import com.jetbrains.python.PyNames; import com.jetbrains.python.codeInsight.imports.AddImportHelper; import com.jetbrains.python.inspections.PyUnresolvedReferencesInspection; import com.jetbrains.python.psi.*; @@ -74,7 +75,7 @@ public class PyMakeFunctionFromMethodQuickFix implements LocalQuickFix { @NotNull final PsiFile usageFile, boolean addImport) { final PyExpression qualifier = element.getQualifier(); if (qualifier == null) return; - + if (qualifier.getText().equals(PyNames.CANONICAL_SELF)) PyUtil.removeQualifier(element); if (qualifier instanceof PyCallExpression) { // remove qualifier A().m() if (addImport) AddImportHelper.addImport((PsiNamedElement)finalElement, usageFile, element); diff --git a/python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf.py b/python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf.py new file mode 100644 index 000000000000..9de442508eff --- /dev/null +++ b/python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf.py @@ -0,0 +1,6 @@ +class A(): + def method(self): + self.method2() + + def method2(self): + print 1 \ No newline at end of file diff --git a/python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf_after.py b/python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf_after.py new file mode 100644 index 000000000000..aa0edbeeee99 --- /dev/null +++ b/python/testData/quickFixes/PyMakeFunctionFromMethodQuickFixTest/usageSelf_after.py @@ -0,0 +1,7 @@ +class A(): + def method(self): + method2() + + +def method2(): + print 1 \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionFromMethodQuickFixTest.java b/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionFromMethodQuickFixTest.java index 9f418624310e..7fe875860262 100644 --- a/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionFromMethodQuickFixTest.java +++ b/python/testSrc/com/jetbrains/python/quickFixes/PyMakeFunctionFromMethodQuickFixTest.java @@ -55,4 +55,8 @@ public class PyMakeFunctionFromMethodQuickFixTest extends PyQuickFixTestCase { public void testUsageImport2() { doMultifilesTest(PyMethodMayBeStaticInspection.class, PyBundle.message("QFIX.NAME.make.function"), new String[]{"test.py"}); } + + public void testUsageSelf() { + doInspectionTest(PyMethodMayBeStaticInspection.class, PyBundle.message("QFIX.NAME.make.function")); + } }