heuristic completion for members of qualified expressions (PY-5629)

This commit is contained in:
Dmitry Jemerov
2012-03-02 19:13:02 +01:00
parent da1ac53bb4
commit cd5492bb94
4 changed files with 19 additions and 3 deletions
@@ -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<PyClass> 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;
}
@@ -0,0 +1,6 @@
class Product:
def doStuff(self): pass
class C:
def foo(self):
self.product.doStuff()
@@ -0,0 +1,6 @@
class Product:
def doStuff(self): pass
class C:
def foo(self):
self.product.doS<caret>
@@ -126,6 +126,10 @@ public class PythonCompletionTest extends PyTestCase {
doTest();
}
public void testClassNameFromVarNameChained() { // PY-5629
doTest();
}
public void testPropertyType() {
doTest();
}