From 8a5239f7948f24ded67e33d95b19fbf8dc6f32d7 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 19 Sep 2014 17:37:59 +0400 Subject: [PATCH] Correctly place decompiled kotlin files under LibrarySourceInfo This check doesn't work for java (and other) decompiled sources, but we assume that we never deal with them in this code --- .../jet/plugin/caches/resolve/getModuleInfo.kt | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/getModuleInfo.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/getModuleInfo.kt index 24d53ed2aa7..e1d38cdb574 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/getModuleInfo.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/caches/resolve/getModuleInfo.kt @@ -58,14 +58,17 @@ fun PsiElement.getModuleInfo(): IdeaModuleInfo { val virtualFile = containingFile.getOriginalFile().getVirtualFile() ?: return logAndReturnDefault("Analyzing non-physical file $containingFile of type ${containingFile.javaClass}") - return getModuleInfoByVirtualFile(project, virtualFile) + return getModuleInfoByVirtualFile(project, virtualFile, (containingFile as? JetFile)?.isCompiled() ?: false) } -private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFile): IdeaModuleInfo { +private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFile, isDecompiledFile: Boolean): IdeaModuleInfo { val projectFileIndex = ProjectFileIndex.SERVICE.getInstance(project) val module = projectFileIndex.getModuleForFile(virtualFile) if (module != null) { + if (isDecompiledFile) { + LOG.error("Decompiled file for ${virtualFile.getCanonicalPath()} is in content of $module") + } if (projectFileIndex.isInTestSourceContent(virtualFile)) { return module.testSourceInfo() } @@ -80,10 +83,10 @@ private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFil when (orderEntry) { is LibraryOrderEntry -> { val library = orderEntry.getLibrary() ?: continue @entries - if (projectFileIndex.isInLibraryClasses(virtualFile)) { + if (projectFileIndex.isInLibraryClasses(virtualFile) && !isDecompiledFile) { return LibraryInfo(project, library) } - else if (projectFileIndex.isInLibrarySource(virtualFile)) { + else if (projectFileIndex.isInLibrarySource(virtualFile) || isDecompiledFile) { return LibrarySourceInfo(project, library) } }