From 55f0826558f85310d5a53c1712019db8207d913e Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Tue, 12 Feb 2013 22:17:45 +0400 Subject: [PATCH] Don't show private module names from builtins in completion and mark them as unresolved (PY-7805) --- .../python/psi/impl/references/PyReferenceImpl.java | 2 +- .../python/psi/resolve/CompletionVariantsProcessor.java | 3 +++ python/testData/completion/noUnderscoredBuiltin.after.py | 1 + python/testData/completion/noUnderscoredBuiltin.py | 1 + .../PyUnresolvedReferencesInspection/underscoredBuiltin.py | 2 ++ .../testSrc/com/jetbrains/python/PythonCompletionTest.java | 5 +++++ .../inspections/PyUnresolvedReferencesInspectionTest.java | 5 +++++ 7 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 python/testData/completion/noUnderscoredBuiltin.after.py create mode 100644 python/testData/completion/noUnderscoredBuiltin.py create mode 100644 python/testData/inspections/PyUnresolvedReferencesInspection/underscoredBuiltin.py diff --git a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java index af0f251a7ae8..1d5fd6ddc87a 100644 --- a/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java +++ b/python/src/com/jetbrains/python/psi/impl/references/PyReferenceImpl.java @@ -307,7 +307,7 @@ public class PyReferenceImpl implements PsiReferenceEx, PsiPolyVariantReference if (uexpr == null) { // ...as a builtin symbol PyFile bfile = builtins_cache.getBuiltinsFile(); - if (bfile != null) { + if (bfile != null && !PyUtil.isClassPrivateName(referencedName)) { uexpr = bfile.getElementNamed(referencedName); if (uexpr == null && "__builtins__".equals(referencedName)) { uexpr = bfile; // resolve __builtins__ reference diff --git a/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java b/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java index 8c3ca5edb3f5..ad193209114a 100644 --- a/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java +++ b/python/src/com/jetbrains/python/psi/resolve/CompletionVariantsProcessor.java @@ -151,6 +151,9 @@ public class CompletionVariantsProcessor extends VariantsProcessor { @Override protected void addElement(String name, PsiElement element) { + if (PyUtil.isClassPrivateName(name) && !PyUtil.inSameFile(element, myContext)) { + return; + } myVariants.put(name, setupItem(LookupElementBuilder.create(element, name).withIcon(element.getIcon(0)))); } diff --git a/python/testData/completion/noUnderscoredBuiltin.after.py b/python/testData/completion/noUnderscoredBuiltin.after.py new file mode 100644 index 000000000000..53ff02ca5ce1 --- /dev/null +++ b/python/testData/completion/noUnderscoredBuiltin.after.py @@ -0,0 +1 @@ +___Cl diff --git a/python/testData/completion/noUnderscoredBuiltin.py b/python/testData/completion/noUnderscoredBuiltin.py new file mode 100644 index 000000000000..0255903cdee7 --- /dev/null +++ b/python/testData/completion/noUnderscoredBuiltin.py @@ -0,0 +1 @@ +___Cl diff --git a/python/testData/inspections/PyUnresolvedReferencesInspection/underscoredBuiltin.py b/python/testData/inspections/PyUnresolvedReferencesInspection/underscoredBuiltin.py new file mode 100644 index 000000000000..ae2f096cad0d --- /dev/null +++ b/python/testData/inspections/PyUnresolvedReferencesInspection/underscoredBuiltin.py @@ -0,0 +1,2 @@ +___Classobj +__debug__ diff --git a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java index c08b75db28d6..62c0e93c9e60 100644 --- a/python/testSrc/com/jetbrains/python/PythonCompletionTest.java +++ b/python/testSrc/com/jetbrains/python/PythonCompletionTest.java @@ -627,4 +627,9 @@ public class PythonCompletionTest extends PyTestCase { "VAR = 2\n" + "__all__ = ['VAR']"); } + + // PY-7805 + public void testNoUnderscoredBuiltin() { + doTest(); + } } diff --git a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java index 2ce92bbd16c9..831b058c0e11 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java @@ -252,6 +252,11 @@ public class PyUnresolvedReferencesInspectionTest extends PyTestCase { doTest(); } + // PY-7805 + public void testUnderscoredBuiltin() { + doTest(); + } + private void doTest() { myFixture.configureByFile(TEST_DIRECTORY + getTestName(true) + ".py"); myFixture.enableInspections(PyUnresolvedReferencesInspection.class);