Fix transferring stub package marker to resolved subdirs (PY-31739, PY-31740)

They're often converted to `__init__.py` and vice versa.
This commit is contained in:
Semyon Proshev
2018-11-30 15:44:16 +03:00
parent 6be74faa86
commit a4c7e1270b
@@ -54,7 +54,7 @@ fun findStubPackage(dir: PsiDirectory,
// see comment about case sensitivity in com.jetbrains.python.psi.resolve.ResolveImportUtil.resolveInDirectory
if (stubPackage?.name == stubPackageName && (!checkForPackage || PyUtil.isPackage(stubPackage, dir))) {
stubPackage.putUserData(STUB_PACKAGE_KEY, true)
doTransferStubPackageMarker(stubPackage)
return stubPackage
}
}
@@ -74,10 +74,15 @@ fun transferStubPackageMarker(dir: PsiDirectory, resolvedSubmodule: PsiFile): Ps
* Puts special mark to dir resolved in stub package.
*/
fun transferStubPackageMarker(dir: PsiDirectory, resolvedSubdir: PsiDirectory): PsiDirectory {
if (dir.getUserData(STUB_PACKAGE_KEY) == true) resolvedSubdir.putUserData(STUB_PACKAGE_KEY, true)
if (dir.getUserData(STUB_PACKAGE_KEY) == true) doTransferStubPackageMarker(resolvedSubdir)
return resolvedSubdir
}
private fun doTransferStubPackageMarker(resolvedSubdir: PsiDirectory) {
resolvedSubdir.putUserData(STUB_PACKAGE_KEY, true)
PyUtil.turnDirIntoInit(resolvedSubdir)?.putUserData(STUB_PACKAGE_KEY, true)
}
/**
* Filters resolved elements according to their import priority in sys.path and
* [PEP 561](https://www.python.org/dev/peps/pep-0561/#type-checker-module-resolution-order) rules.