From da805a61210c0aa7c4a77c0bf87bc20f831d7b54 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Sun, 19 Dec 2010 12:52:56 +0300 Subject: [PATCH] for out-of-project files, resolve imports from SDK selected for project --- .../python/psi/resolve/ResolveImportUtil.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java b/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java index 22f93d53ceea..72aceb2ba863 100644 --- a/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java +++ b/python/src/com/jetbrains/python/psi/resolve/ResolveImportUtil.java @@ -410,8 +410,24 @@ public class ResolveImportUtil { if (elt_psifile != null) { // formality final VirtualFile elt_vfile = elt_psifile.getVirtualFile(); if (elt_vfile != null) { // reality - for (OrderEntry entry : ProjectRootManager.getInstance(elt.getProject()).getFileIndex().getOrderEntriesForFile(elt_vfile)) { - if (!visitOrderEntryRoots(visitor, entry)) break; + final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(elt.getProject()).getFileIndex(); + final List orderEntries = fileIndex.getOrderEntriesForFile(elt_vfile); + if (orderEntries.size() > 0) { + for (OrderEntry entry : orderEntries) { + if (!visitOrderEntryRoots(visitor, entry)) break; + } + } + else { + // out-of-project file - use roots of SDK assigned to project + final Sdk sdk = PyBuiltinCache.findSdkForFile(elt_psifile); + if (sdk != null) { + final VirtualFile[] roots = sdk.getRootProvider().getFiles(OrderRootType.CLASSES); + for (VirtualFile root : roots) { + if (!visitor.visitRoot(root)) { + break; + } + } + } } } }