PY-15503 Numpy: unresolved reference: false positive for testing package referenced with numpy import only

fixed resolve for the relative from imports
This commit is contained in:
Ekaterina Tuzova
2015-05-05 17:03:36 +03:00
parent 4495d85bb4
commit dfa4380854
5 changed files with 34 additions and 0 deletions
@@ -106,6 +106,10 @@ public class PyModuleType implements PyType { // Modules don't descend from obje
if (!inSameFile(location, myModule)) {
importElements.addAll(myModule.getImportTargets());
}
final List<PyFromImportStatement> imports = myModule.getFromImports();
for (PyFromImportStatement anImport : imports) {
Collections.addAll(importElements, anImport.getImportElements());
}
}
final List<? extends RatedResolveResult> implicitMembers = resolveImplicitPackageMember(name, importElements);
if (implicitMembers != null) {
@@ -185,6 +189,18 @@ public class PyModuleType implements PyType { // Modules don't descend from obje
importedQNames.add(implicitSubModuleQName);
}
}
else {
final List<PsiElement> elements = ResolveImportUtil.resolveFromImportStatementSource(fromImportStatement, element.getImportedQName());
for (PsiElement psiElement : elements) {
if (psiElement instanceof PsiFile) {
final VirtualFile virtualFile = ((PsiFile)psiElement).getVirtualFile();
final QualifiedName qName = QualifiedNameFinder.findShortestImportableQName(element, virtualFile);
if (qName != null) {
importedQNames.add(qName);
}
}
}
}
}
else if (stmt instanceof PyImportStatement) {
final QualifiedName importedQName = element.getImportedQName();
@@ -0,0 +1,4 @@
import x
print(x.z)
# <ref>
@@ -0,0 +1,5 @@
__author__ = 'ktisha'
from . import z as qq
print(z)
@@ -0,0 +1,4 @@
__author__ = 'ktisha'
def foo():
return 1
@@ -402,4 +402,9 @@ public class PyMultiFileResolveTest extends PyMultiFileResolveTestCase {
}
assertResolveResult(element, PyClass.class, "A");
}
public void testRelativeImport() {
assertResolvesTo(PyFile.class, "z.py");
}
}