Filter out fake elements from typeshed builtins (PY-22508)

This commit is contained in:
Semyon Proshev
2018-11-16 19:07:35 +03:00
parent d349fb28bf
commit aedde231e7
4 changed files with 18 additions and 3 deletions
@@ -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<RatedResolveResult> {
if (name == "function" && PyBuiltinCache.getInstance(this).builtinsFile == this) return emptyList()
val baseResults = super.multiResolveName(name, exported)
return if (exported)
baseResults
@@ -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
@@ -1,5 +1,5 @@
def transform():
def function1(x):
def function(x):
return x + 5
return function1
return function
@@ -764,6 +764,12 @@ public class PyUnresolvedReferencesInspectionTest extends PyInspectionTestCase {
doTest();
}
// PY-22508
public void testFakesFromTypeshed() {
doTestByText("print(<error descr=\"Unresolved reference 'function'\">function</error>)\n" +
"print(<error descr=\"Unresolved reference 'module'\">module</error>)");
}
@NotNull
@Override
protected Class<? extends PyInspection> getInspectionClass() {