Scripts: search for script definition using PsiFile instead of file name

This commit is contained in:
Natalia Selezneva
2019-07-09 12:50:59 +03:00
parent fbe965be9d
commit b0c9339dee
2 changed files with 7 additions and 5 deletions
@@ -1,5 +1,5 @@
/* /*
* Copyright 2000-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/ */
@@ -27,7 +27,7 @@ import org.jetbrains.kotlin.idea.util.isInSourceContentWithoutInjected
import org.jetbrains.kotlin.idea.util.isKotlinBinary import org.jetbrains.kotlin.idea.util.isKotlinBinary
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
import org.jetbrains.kotlin.scripting.definitions.findScriptDefinitionByFileName import org.jetbrains.kotlin.scripting.definitions.findScriptDefinition
import org.jetbrains.kotlin.utils.addIfNotNull import org.jetbrains.kotlin.utils.addIfNotNull
import org.jetbrains.kotlin.utils.sure import org.jetbrains.kotlin.utils.sure
import org.jetbrains.kotlin.utils.yieldIfNotNull import org.jetbrains.kotlin.utils.yieldIfNotNull
@@ -174,8 +174,10 @@ private fun <T> PsiElement.collectInfos(c: ModuleInfoCollector<T>): T {
return c.onResult(it) return c.onResult(it)
} }
containingKtFile.script?.let { containingKtFile.script?.let {
val definition = findScriptDefinitionByFileName(project, containingKtFile.name) val definition = containingKtFile.findScriptDefinition()
return c.onResult(ScriptModuleInfo(project, virtualFile, definition)) if (definition != null) {
return c.onResult(ScriptModuleInfo(project, virtualFile, definition))
}
} }
} }
@@ -41,7 +41,7 @@ fun VirtualFile.findScriptDefinition(project: Project): ScriptDefinition? {
return findScriptDefinitionByFilePath(project, File(path)) return findScriptDefinitionByFilePath(project, File(path))
} }
fun findScriptDefinitionByFilePath(project: Project, file: File): ScriptDefinition { private fun findScriptDefinitionByFilePath(project: Project, file: File): ScriptDefinition {
val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project) ?: return null val scriptDefinitionProvider = ScriptDefinitionProvider.getInstance(project) ?: return null
?: throw IllegalStateException("Unable to get script definition: ScriptDefinitionProvider is not configured.") ?: throw IllegalStateException("Unable to get script definition: ScriptDefinitionProvider is not configured.")