diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyBuiltinCache.kt b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyBuiltinCache.kt index 744b2a48bc99..ac31228cb94a 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyBuiltinCache.kt +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/impl/PyBuiltinCache.kt @@ -167,11 +167,7 @@ class PyBuiltinCache private constructor( get() = getObjectType("slice") val noneType: PyClassType? - get() { - val file = myTypeshedFile ?: return null - // need to use `resolveNested` because `_typeshed` has `NoneType` as an import, not a class - return file.getClassType("NoneType", file::resolveNested) - } + get() = myTypesFile?.getClassType("NoneType") ?: myTypeshedFile?.getClassType("NoneType") val ellipsisType: PyClassType? get() = myTypesFile?.getClassType("EllipsisType") @@ -314,7 +310,7 @@ private class CachedFile( */ private val myTypeCache: MutableMap = mutableMapOf(), ) { - fun getClassType(name: @NonNls String, typeResolver: (@NonNls String) -> PyClassType? = ::resolveTopLevel): PyClassType? { + fun getClassType(name: @NonNls String): PyClassType? { return synchronized(this) { if (myModificationStamp != file.modificationStamp) { myTypeCache.clear() @@ -322,21 +318,13 @@ private class CachedFile( } myTypeCache[name] ?.also { it.assertValid(name) } - } ?: typeResolver(name)?.also { + } ?: resolveTopLevel(name)?.also { synchronized(myTypeCache) { myTypeCache.put(name, it) } } } - fun resolveNested(name: @NonNls String): PyClassType? { - val pyClass = ResolveImportUtil.resolveChildren( - file, name, file, false, true, false, false - ).getOrNull(0)?.element as? PyClass? ?: return null - return PyClassTypeImpl(pyClass, false) - .also { it.assertValid(name) } - } - fun resolveTopLevel(name: @NonNls String): PyClassType? { return file.findTopLevelClass(name)?.let { pyClass -> PyClassTypeImpl(pyClass, false) } }