diff --git a/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java b/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java index a0b157c009e0..af480ad12009 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyQualifiedReference.java @@ -292,16 +292,16 @@ public class PyQualifiedReference extends PyReferenceImpl { final PyExpression qualifierElement = myElement.getQualifier(); if (qualifierElement instanceof PyReferenceExpression) { PyReferenceExpression qualifier = (PyReferenceExpression)qualifierElement; - if (qualifier.getQualifier() == null) { - final String className = qualifier.getText(); + final String className = qualifier.getReferencedName(); + if (className != null) { Collection classes = PyClassNameIndexInsensitive.find(className, getElement().getProject()); classes = filterByImports(classes, myElement.getContainingFile()); if (classes.size() == 1) { final PyClassType classType = new PyClassType(classes.iterator().next(), false); return getTypeCompletionVariants(myElement, classType); } - return collectSeenMembers(qualifier.getText()); } + return collectSeenMembers(qualifier.getText()); } return ArrayUtil.EMPTY_OBJECT_ARRAY; } diff --git a/python/testData/completion/classNameFromVarNameChained.after.py b/python/testData/completion/classNameFromVarNameChained.after.py new file mode 100644 index 000000000000..4a1be6085883 --- /dev/null +++ b/python/testData/completion/classNameFromVarNameChained.after.py @@ -0,0 +1,6 @@ +class Product: + def doStuff(self): pass + +class C: + def foo(self): + self.product.doStuff() diff --git a/python/testData/completion/classNameFromVarNameChained.py b/python/testData/completion/classNameFromVarNameChained.py new file mode 100644 index 000000000000..bc83ac36cac3 --- /dev/null +++ b/python/testData/completion/classNameFromVarNameChained.py @@ -0,0 +1,6 @@ +class Product: + def doStuff(self): pass + +class C: + def foo(self): + self.product.doS diff --git a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java index f43db36aac12..11c93e2ebc66 100644 --- a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java +++ b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java @@ -126,6 +126,10 @@ public class PythonCompletionTest extends PyTestCase { doTest(); } + public void testClassNameFromVarNameChained() { // PY-5629 + doTest(); + } + public void testPropertyType() { doTest(); }