show seen members of same qualifier in completion list (PY-1181)

This commit is contained in:
Dmitry Jemerov
2010-07-01 21:53:43 +04:00
parent aef26f6b4f
commit cdbb08b5e1
4 changed files with 32 additions and 0 deletions
@@ -171,6 +171,7 @@ public class PyQualifiedReferenceImpl extends PyReferenceImpl {
final PyClassType classType = new PyClassType(classes.iterator().next(), false);
return ((PyReferenceExpressionImpl) myElement).getTypeCompletionVariants(classType);
}
return collectSeenMembers(qualifier.getText());
}
}
return ArrayUtil.EMPTY_OBJECT_ARRAY;
@@ -195,6 +196,23 @@ public class PyQualifiedReferenceImpl extends PyReferenceImpl {
return result;
}
private Object[] collectSeenMembers(final String text) {
final List<String> results = new ArrayList<String>();
myElement.getContainingFile().accept(new PyRecursiveElementVisitor() {
@Override
public void visitPyReferenceExpression(PyReferenceExpression node) {
super.visitPyReferenceExpression(node);
if (node != myElement) {
final PyExpression qualifier = node.getQualifier();
if (qualifier != null && qualifier.getText().equals(text)) {
results.add(node.getReferencedName());
}
}
}
});
return results.toArray(new Object[results.size()]);
}
private static Collection<PyExpression> collectAssignedAttributes(PyQualifiedExpression qualifier) {
List<PyQualifiedExpression> qualifier_path = PyResolveUtil.unwindQualifiers(qualifier);
if (qualifier_path != null) {
@@ -0,0 +1,5 @@
def foo(element):
print(element.children)
def bar(element):
element.children
@@ -0,0 +1,5 @@
def foo(element):
print(element.children)
def bar(element):
element.ch<caret>
@@ -115,6 +115,10 @@ public class PythonCompletionTest extends PyLightFixtureTestCase {
doTest();
}
public void testSeenMembers() throws Exception { // PY-1181
doTest();
}
public void testImportModule() throws Exception {
final String testName = "completion/" + getTestName(true);
myFixture.configureByFiles(testName + ".py", "completion/someModule.py");