[kotlin] Gradle kts files are non standalone runnable scripts

#KTIJ-16451 Fixed

GitOrigin-RevId: 31ad9e9aa396a8c92d1431cd4d8861e1f1a94e5f
This commit is contained in:
Vladimir Dolzhenko
2024-06-18 08:29:49 +02:00
committed by intellij-monorepo-bot
parent 1df10af0b5
commit 6b9e287b98
2 changed files with 8 additions and 1 deletions

View File

@@ -67,6 +67,12 @@ fun compilerAllowsAnyScriptsInSourceRoots(project: Project): Boolean {
return additionalSettings.additionalArguments.contains("-Xallow-any-scripts-in-source-roots")
}
@ApiStatus.Internal
fun VirtualFile.isRunnableKotlinScript(project: Project): Boolean {
if (nameSequence.endsWith(".gradle.kts")) return false
return isStandaloneKotlinScript(project)
}
@ApiStatus.Internal
fun VirtualFile.isStandaloneKotlinScript(project: Project): Boolean {
val ktFile = (toPsiFile(project) as? KtFile)?.takeIf(KtFile::isScript) ?: return false

View File

@@ -7,6 +7,7 @@ import com.intellij.execution.actions.LazyRunConfigurationProducer
import com.intellij.execution.configurations.ConfigurationFactory
import com.intellij.openapi.util.Ref
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.idea.isRunnableKotlinScript
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
@@ -36,7 +37,7 @@ class KotlinStandaloneScriptRunConfigurationProducer :
fun pathFromPsiElement(element: PsiElement): String? {
val file = element.getParentOfType<KtFile>(false) ?: return null
val script = file.script ?: return null
return script.containingKtFile.virtualFile.canonicalPath
return script.containingKtFile.virtualFile.takeIf { it.isRunnableKotlinScript(file.project) }?.canonicalPath
}
}