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
This commit is contained in:
Pavel V. Talanov
2014-09-19 17:37:59 +04:00
parent 8a44325327
commit 8a5239f794
@@ -58,14 +58,17 @@ fun PsiElement.getModuleInfo(): IdeaModuleInfo {
val virtualFile = containingFile.getOriginalFile().getVirtualFile() val virtualFile = containingFile.getOriginalFile().getVirtualFile()
?: return logAndReturnDefault("Analyzing non-physical file $containingFile of type ${containingFile.javaClass}") ?: 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 projectFileIndex = ProjectFileIndex.SERVICE.getInstance(project)
val module = projectFileIndex.getModuleForFile(virtualFile) val module = projectFileIndex.getModuleForFile(virtualFile)
if (module != null) { if (module != null) {
if (isDecompiledFile) {
LOG.error("Decompiled file for ${virtualFile.getCanonicalPath()} is in content of $module")
}
if (projectFileIndex.isInTestSourceContent(virtualFile)) { if (projectFileIndex.isInTestSourceContent(virtualFile)) {
return module.testSourceInfo() return module.testSourceInfo()
} }
@@ -80,10 +83,10 @@ private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFil
when (orderEntry) { when (orderEntry) {
is LibraryOrderEntry -> { is LibraryOrderEntry -> {
val library = orderEntry.getLibrary() ?: continue @entries val library = orderEntry.getLibrary() ?: continue @entries
if (projectFileIndex.isInLibraryClasses(virtualFile)) { if (projectFileIndex.isInLibraryClasses(virtualFile) && !isDecompiledFile) {
return LibraryInfo(project, library) return LibraryInfo(project, library)
} }
else if (projectFileIndex.isInLibrarySource(virtualFile)) { else if (projectFileIndex.isInLibrarySource(virtualFile) || isDecompiledFile) {
return LibrarySourceInfo(project, library) return LibrarySourceInfo(project, library)
} }
} }