diff --git a/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java b/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java index c0de4854c136..9ea0507482a2 100644 --- a/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java +++ b/python/src/com/jetbrains/python/inspections/quickfix/AddFieldQuickFix.java @@ -194,11 +194,14 @@ public class AddFieldQuickFix implements LocalQuickFix { if (cls.isNewStyleClass()) { // form the super() call sb.append("super("); - sb.append(cls.getName()); + if (!LanguageLevel.forElement(cls).isPy3K()) { + sb.append(cls.getName()); - // NOTE: assume that we have at least the first param - String self_name = params[0].getName(); - sb.append(", ").append(self_name).append(").").append(PyNames.INIT).append("("); + // NOTE: assume that we have at least the first param + String self_name = params[0].getName(); + sb.append(", ").append(self_name); + } + sb.append(").").append(PyNames.INIT).append("("); } else { sb.append(ancestorClass.getName()); diff --git a/python/testData/quickFixes/PyMoveAttributeToInitQuickFixTest/py3K.py b/python/testData/quickFixes/PyMoveAttributeToInitQuickFixTest/py3K.py new file mode 100644 index 000000000000..453532b9d932 --- /dev/null +++ b/python/testData/quickFixes/PyMoveAttributeToInitQuickFixTest/py3K.py @@ -0,0 +1,7 @@ +class Base(): + def __init__(self): + self.param = 2 + +class Child(Base): + def f(self): + self.my = 1 \ No newline at end of file diff --git a/python/testData/quickFixes/PyMoveAttributeToInitQuickFixTest/py3K_after.py b/python/testData/quickFixes/PyMoveAttributeToInitQuickFixTest/py3K_after.py new file mode 100644 index 000000000000..7b5f16b2f0fd --- /dev/null +++ b/python/testData/quickFixes/PyMoveAttributeToInitQuickFixTest/py3K_after.py @@ -0,0 +1,11 @@ +class Base(): + def __init__(self): + self.param = 2 + +class Child(Base): + def __init__(self): + super().__init__() + self.my = 1 + + def f(self): + pass diff --git a/python/testSrc/com/jetbrains/python/PyQuickFixTestCase.java b/python/testSrc/com/jetbrains/python/PyQuickFixTestCase.java index d4b72ef651a8..54ce622f5c6a 100644 --- a/python/testSrc/com/jetbrains/python/PyQuickFixTestCase.java +++ b/python/testSrc/com/jetbrains/python/PyQuickFixTestCase.java @@ -17,6 +17,8 @@ package com.jetbrains.python; import com.intellij.codeInsight.intention.IntentionAction; import com.jetbrains.python.fixtures.PyTestCase; +import com.jetbrains.python.psi.LanguageLevel; +import com.jetbrains.python.psi.impl.PythonLanguageLevelPusher; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -32,6 +34,16 @@ public abstract class PyQuickFixTestCase extends PyTestCase { return PythonTestUtil.getTestDataPath() + "/quickFixes/" + getClass().getSimpleName(); } + protected void doQuickFixTest(final Class inspectionClass, final String hint, LanguageLevel languageLevel) { + PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), languageLevel); + try { + doQuickFixTest(inspectionClass, hint); + } + finally { + PythonLanguageLevelPusher.setForcedLanguageLevel(myFixture.getProject(), null); + } + } + protected void doQuickFixTest(final Class inspectionClass, final String hint) { final String testFileName = getTestName(true); myFixture.enableInspections(inspectionClass); diff --git a/python/testSrc/com/jetbrains/python/quickFixes/PyMoveAttributeToInitQuickFixTest.java b/python/testSrc/com/jetbrains/python/quickFixes/PyMoveAttributeToInitQuickFixTest.java index 59c0563746ba..f645c0874c46 100644 --- a/python/testSrc/com/jetbrains/python/quickFixes/PyMoveAttributeToInitQuickFixTest.java +++ b/python/testSrc/com/jetbrains/python/quickFixes/PyMoveAttributeToInitQuickFixTest.java @@ -19,6 +19,7 @@ import com.intellij.testFramework.TestDataPath; import com.jetbrains.python.PyBundle; import com.jetbrains.python.PyQuickFixTestCase; import com.jetbrains.python.inspections.PyAttributeOutsideInitInspection; +import com.jetbrains.python.psi.LanguageLevel; /** * User: ktisha @@ -58,4 +59,8 @@ public class PyMoveAttributeToInitQuickFixTest extends PyQuickFixTestCase { doInspectionTest(PyAttributeOutsideInitInspection.class); } + public void testPy3K() { + doQuickFixTest(PyAttributeOutsideInitInspection.class, PyBundle.message("QFIX.move.attribute"), LanguageLevel.PYTHON33); + } + }