Use NotUnderContentRootModuleInfo only from PsiElement.getModuleInfo()

This makes getModuleInfoByVirtualFile nullable
Fixes a variant of EA-75803 (from moveConflictUtils)
This commit is contained in:
Mikhail Glukhikh
2017-06-13 18:33:14 +03:00
committed by Mikhail Glukhikh
parent 0e2bdb8e66
commit 2a1c101350
2 changed files with 5 additions and 5 deletions
@@ -39,7 +39,7 @@ import org.jetbrains.kotlin.utils.sure
fun PsiElement.getModuleInfo(): IdeaModuleInfo = this.getModuleInfo { reason ->
LOG.error("Could not find correct module information.\nReason: $reason")
NotUnderContentRootModuleInfo
}.sure { "Defaulting to NotUnderContentRootModuleInfo so null is not possible" }
} ?: NotUnderContentRootModuleInfo
fun PsiElement.getNullableModuleInfo(): IdeaModuleInfo? = this.getModuleInfo { reason ->
LOG.warn("Could not find correct module information.\nReason: $reason")
@@ -84,9 +84,9 @@ private fun PsiElement.getModuleInfo(onFailure: (String) -> IdeaModuleInfo?): Id
fun getModuleInfoByVirtualFile(
project: Project, virtualFile: VirtualFile
): IdeaModuleInfo = getModuleInfoByVirtualFile(project, virtualFile, treatAsLibrarySource = false)
): IdeaModuleInfo? = getModuleInfoByVirtualFile(project, virtualFile, treatAsLibrarySource = false)
private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFile, treatAsLibrarySource: Boolean): IdeaModuleInfo {
private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFile, treatAsLibrarySource: Boolean): IdeaModuleInfo? {
val projectFileIndex = ProjectFileIndex.SERVICE.getInstance(project)
val module = projectFileIndex.getModuleForFile(virtualFile)
@@ -149,7 +149,7 @@ private fun getModuleInfoByVirtualFile(project: Project, virtualFile: VirtualFil
return ScriptDependenciesSourceModuleInfo(project)
}
return NotUnderContentRootModuleInfo
return null
}
private fun KtLightElement<*, *>.getModuleInfoForLightElement(onFailure: (String) -> IdeaModuleInfo?): IdeaModuleInfo? {
@@ -84,7 +84,7 @@ class MoveConflictChecker(
}
private fun getModuleDescriptor(sourceFile: VirtualFile) =
resolutionFacade.findModuleDescriptor(getModuleInfoByVirtualFile(project, sourceFile))
getModuleInfoByVirtualFile(project, sourceFile)?.let { resolutionFacade.findModuleDescriptor(it) }
private fun KotlinMoveTarget.getContainerDescriptor(): DeclarationDescriptor? {
return when (this) {