From aedde231e738c4512b6ed1c88d5f4f18d2e07be3 Mon Sep 17 00:00:00 2001 From: Semyon Proshev Date: Fri, 9 Nov 2018 18:51:52 +0300 Subject: [PATCH] Filter out fake elements from typeshed builtins (PY-22508) --- python/src/com/jetbrains/python/pyi/PyiFile.kt | 5 ++++- .../inspections/PyShadowingBuiltinsInspection/test.py | 6 ++++++ .../testData/intentions/convertLambdaToFunction2_after.py | 4 ++-- .../inspections/PyUnresolvedReferencesInspectionTest.java | 6 ++++++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/python/src/com/jetbrains/python/pyi/PyiFile.kt b/python/src/com/jetbrains/python/pyi/PyiFile.kt index 63c4ce4f444a..fb19fa3de7a3 100644 --- a/python/src/com/jetbrains/python/pyi/PyiFile.kt +++ b/python/src/com/jetbrains/python/pyi/PyiFile.kt @@ -19,6 +19,7 @@ import com.intellij.psi.FileViewProvider import com.jetbrains.python.PythonFileType import com.jetbrains.python.psi.LanguageLevel import com.jetbrains.python.psi.PyImportElement +import com.jetbrains.python.psi.impl.PyBuiltinCache import com.jetbrains.python.psi.impl.PyFileImpl import com.jetbrains.python.psi.resolve.ImportedResolveResult import com.jetbrains.python.psi.resolve.RatedResolveResult @@ -29,11 +30,13 @@ import com.jetbrains.python.psi.resolve.RatedResolveResult class PyiFile(viewProvider: FileViewProvider) : PyFileImpl(viewProvider, PyiLanguageDialect.getInstance()) { override fun getFileType(): PythonFileType = PyiFileType.INSTANCE - override fun toString(): String = "PyiFile:" + name + override fun toString(): String = "PyiFile:$name" override fun getLanguageLevel(): LanguageLevel = LanguageLevel.PYTHON37 override fun multiResolveName(name: String, exported: Boolean): List { + if (name == "function" && PyBuiltinCache.getInstance(this).builtinsFile == this) return emptyList() + val baseResults = super.multiResolveName(name, exported) return if (exported) baseResults diff --git a/python/testData/inspections/PyShadowingBuiltinsInspection/test.py b/python/testData/inspections/PyShadowingBuiltinsInspection/test.py index 4951bf1fdf50..422ac3e7397a 100644 --- a/python/testData/inspections/PyShadowingBuiltinsInspection/test.py +++ b/python/testData/inspections/PyShadowingBuiltinsInspection/test.py @@ -48,3 +48,9 @@ def test_builtin_qualified_name(): def test_builtin_class_attribute(): class C: id = 1 + + +# PY-22508 +def test_fakes_from_typeshed(): + function = 10 + module = 10 \ No newline at end of file diff --git a/python/testData/intentions/convertLambdaToFunction2_after.py b/python/testData/intentions/convertLambdaToFunction2_after.py index ac27ce8c04aa..113f460f0a8c 100644 --- a/python/testData/intentions/convertLambdaToFunction2_after.py +++ b/python/testData/intentions/convertLambdaToFunction2_after.py @@ -1,5 +1,5 @@ def transform(): - def function1(x): + def function(x): return x + 5 - return function1 \ No newline at end of file + return function \ No newline at end of file diff --git a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java index c69af8c114a1..701e1947820e 100644 --- a/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java +++ b/python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java @@ -764,6 +764,12 @@ public class PyUnresolvedReferencesInspectionTest extends PyInspectionTestCase { doTest(); } + // PY-22508 + public void testFakesFromTypeshed() { + doTestByText("print(function)\n" + + "print(module)"); + } + @NotNull @Override protected Class getInspectionClass() {