mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
exclude import elements when calculating the list of completion variants for a module (PY-2385)
This commit is contained in:
@@ -4,6 +4,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.codeInsight.lookup.LookupElementBuilder;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.psi.*;
|
||||
@@ -14,6 +15,7 @@ import com.jetbrains.python.codeInsight.PyDynamicMember;
|
||||
import com.jetbrains.python.psi.AccessDirection;
|
||||
import com.jetbrains.python.psi.PyExpression;
|
||||
import com.jetbrains.python.psi.PyFile;
|
||||
import com.jetbrains.python.psi.PyImportElement;
|
||||
import com.jetbrains.python.psi.resolve.PyResolveContext;
|
||||
import com.jetbrains.python.psi.resolve.ResolveImportUtil;
|
||||
import com.jetbrains.python.psi.resolve.VariantsProcessor;
|
||||
@@ -111,7 +113,12 @@ public class PyModuleType implements PyType { // Modules don't descend from obje
|
||||
}
|
||||
|
||||
if (point == ResolveImportUtil.PointInImport.NONE || point == ResolveImportUtil.PointInImport.AS_NAME) { // when not imported from, add regular attributes
|
||||
final VariantsProcessor processor = new VariantsProcessor(location);
|
||||
final VariantsProcessor processor = new VariantsProcessor(location, new Condition<PsiElement>() {
|
||||
@Override
|
||||
public boolean value(PsiElement psiElement) {
|
||||
return !(psiElement instanceof PyImportElement);
|
||||
}
|
||||
}, null);
|
||||
processor.setPlainNamesOnly(point == ResolveImportUtil.PointInImport.AS_NAME); // no parens after imported function names
|
||||
myModule.processDeclarations(processor, ResolveState.initial(), null, location);
|
||||
if (names_already != null) {
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
import b
|
||||
|
||||
b.da<caret>
|
||||
@@ -0,0 +1,3 @@
|
||||
import b
|
||||
|
||||
b.da<caret>
|
||||
@@ -0,0 +1 @@
|
||||
import datetime
|
||||
@@ -21,6 +21,13 @@ public class PythonCompletionTest extends PyLightFixtureTestCase {
|
||||
myFixture.checkResultByFile(testName + ".after.py");
|
||||
}
|
||||
|
||||
private void doMultiFileTest() {
|
||||
myFixture.copyDirectoryToProject("completion/" + getTestName(true), "");
|
||||
myFixture.configureByFile("a.py");
|
||||
myFixture.completeBasic();
|
||||
myFixture.checkResultByFile("completion/" + getTestName(true) + "/a.after.py");
|
||||
}
|
||||
|
||||
public void testLocalVar() {
|
||||
doTest();
|
||||
}
|
||||
@@ -295,17 +302,11 @@ public class PythonCompletionTest extends PyLightFixtureTestCase {
|
||||
}
|
||||
|
||||
public void testDuplicateImportKeyword() { // PY-3034
|
||||
myFixture.copyDirectoryToProject("completion/duplicateImportKeyword", "");
|
||||
myFixture.configureByFile("a.py");
|
||||
myFixture.completeBasic();
|
||||
myFixture.checkResultByFile("completion/duplicateImportKeyword/a.after.py");
|
||||
doMultiFileTest();
|
||||
}
|
||||
|
||||
public void testImportInMiddleOfHierarchy() { // PY-3016
|
||||
myFixture.copyDirectoryToProject("completion/importInMiddleOfHierarchy", "");
|
||||
myFixture.configureByFile("a.py");
|
||||
myFixture.completeBasic();
|
||||
myFixture.checkResultByFile("completion/importInMiddleOfHierarchy/a.after.py");
|
||||
doMultiFileTest();
|
||||
}
|
||||
|
||||
public void testLambdaInExpression() { // PY-3150
|
||||
@@ -315,4 +316,8 @@ public class PythonCompletionTest extends PyLightFixtureTestCase {
|
||||
public void testVeryPrivate() { // PY-3246
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testReexportModules() { // PY-2385
|
||||
doMultiFileTest();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user