diff --git a/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java b/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java index ed93c2f82cff..c19730ba8f35 100644 --- a/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyMissingConstructorInspection.java @@ -123,7 +123,9 @@ public class PyMissingConstructorInspection extends PyInspection { PyExpression[] args = ((PyCallExpression)qualifier).getArguments(); if (args.length > 0) { String firstArg = args[0].getText(); - if (firstArg.equals(cl.getName()) || firstArg.equals(CANONICAL_SELF+"."+ CLASS)) + final String qualifiedName = cl.getQualifiedName(); + if (firstArg.equals(cl.getName()) || firstArg.equals(CANONICAL_SELF+"."+ CLASS) || + (qualifiedName != null && qualifiedName.endsWith(firstArg))) return true; for (PyClass s : cl.iterateAncestorClasses()) { if (firstArg.equals(s.getName())) diff --git a/python/testData/inspections/PyMissingConstructorInspection/innerClass.py b/python/testData/inspections/PyMissingConstructorInspection/innerClass.py new file mode 100644 index 000000000000..92cc3c83f432 --- /dev/null +++ b/python/testData/inspections/PyMissingConstructorInspection/innerClass.py @@ -0,0 +1,18 @@ + +class Base(object): + def __init__(self, param): + print "Base", param + + +class Wrapper(object): + class Child(Base): + def __init__(self, param1, param2): + # Here PyCharm claims no super call + super(Wrapper.Child, self).__init__(param2) + print "Child", param1 + + def __init__(self): + self.child = self.Child("aaa", "bbb") + + +wrapper = Wrapper() diff --git a/python/testSrc/com/jetbrains/python/inspections/PyMissingConstructorTest.java b/python/testSrc/com/jetbrains/python/inspections/PyMissingConstructorTest.java index cf734731f38c..f575647386a7 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyMissingConstructorTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyMissingConstructorTest.java @@ -33,8 +33,11 @@ public class PyMissingConstructorTest extends PyTestCase { doTest(); } - // PY-7176 - public void testException() { + public void testException() { // PY-7176 + doTest(); + } + + public void testInnerClass() { //PY-7699 doTest(); }