Add appropriate script extension to the source name, if not provided
#KT-31704 fixed
This commit is contained in:
+2
-1
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.scripting.definitions.KotlinScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
|
||||
import org.jetbrains.kotlin.scripting.withCorrectExtension
|
||||
import java.io.File
|
||||
import java.net.URL
|
||||
import kotlin.reflect.KClass
|
||||
@@ -290,7 +291,7 @@ fun SourceCode.getVirtualFile(definition: ScriptDefinition): VirtualFile {
|
||||
val vFile = LocalFileSystem.getInstance().findFileByIoFile(file)
|
||||
if (vFile != null) return vFile
|
||||
}
|
||||
val scriptName = name ?: "script.${definition.fileExtension}"
|
||||
val scriptName = withCorrectExtension(name ?: "script", definition.fileExtension)
|
||||
val scriptPath = when (this) {
|
||||
is FileScriptSource -> file.path
|
||||
is ExternalSourceCode -> externalLocation.toString()
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.scripting
|
||||
|
||||
import kotlin.script.experimental.api.ScriptCompilationConfiguration
|
||||
import kotlin.script.experimental.api.SourceCode
|
||||
import kotlin.script.experimental.api.fileExtension
|
||||
|
||||
fun SourceCode.scriptFileName(
|
||||
mainScript: SourceCode,
|
||||
scriptCompilationConfiguration: ScriptCompilationConfiguration
|
||||
): String {
|
||||
val mainExtension = scriptCompilationConfiguration[ScriptCompilationConfiguration.fileExtension]
|
||||
return when {
|
||||
name != null -> withCorrectExtension(name!!, mainExtension)
|
||||
mainScript == this -> withCorrectExtension("script", mainExtension)
|
||||
else -> throw Exception("Unexpected script without name: $this")
|
||||
}
|
||||
}
|
||||
|
||||
internal fun withCorrectExtension(name: String, mainExtension: String?): String =
|
||||
// TODO: consider checking for all registered extensions
|
||||
if ((mainExtension != null && name.endsWith(".$mainExtension")) || name.endsWith(".kts")) name else "$name.${mainExtension ?: "kts"}"
|
||||
|
||||
Reference in New Issue
Block a user