Get platform for scripts from script definition

Introduce 'platform' property in KotlinScripDefinition (should have a value which exists in TargetPlatform.ALL_KINDS)

^KT-27684 Fixed
This commit is contained in:
Natalia Selezneva
2018-12-21 16:37:13 +03:00
parent 0188cd5330
commit f3c828a17d
8 changed files with 122 additions and 0 deletions
@@ -48,6 +48,10 @@ open class KotlinScriptDefinition(open val template: KClass<out Any>) : UserData
open val fileExtension: String
get() = "kts"
// Target platform for script, ex. "JVM", "JS", "NATIVE"
open val platform: String
get() = "JVM"
open val dependencyResolver: DependenciesResolver get() = DependenciesResolver.NoDependencies
open val acceptedAnnotations: List<KClass<out Annotation>> get() = emptyList()
@@ -21,6 +21,7 @@ import com.intellij.openapi.components.ServiceManager
import com.intellij.openapi.fileTypes.FileTypeRegistry
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiFile
import com.intellij.psi.PsiManager
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.psi.KtFile
@@ -38,6 +39,11 @@ interface ScriptDefinitionProvider {
}
}
fun findScriptDefinition(psiFile: PsiFile): KotlinScriptDefinition? {
val virtualFile = psiFile.virtualFile ?: psiFile.originalFile.virtualFile ?: return null
return findScriptDefinition(virtualFile, psiFile.project)
}
fun findScriptDefinition(file: VirtualFile, project: Project): KotlinScriptDefinition? {
if (file.isDirectory ||
file.extension == KotlinFileType.EXTENSION ||