mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
show seen members of same qualifier in completion list (PY-1181)
This commit is contained in:
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user