Export filename extension from KotlinScriptDefinition, register...

extensions after loading definitions
This commit is contained in:
Ilya Chernikov
2018-08-27 11:01:29 +03:00
parent 5183eba70b
commit 3f2552af60
6 changed files with 39 additions and 27 deletions
@@ -45,6 +45,9 @@ open class KotlinScriptDefinition(open val template: KClass<out Any>) : UserData
open fun getScriptName(script: KtScript): Name =
NameUtils.getScriptNameForFile(script.containingKtFile.name)
open val fileExtension: String
get() = "kts"
open val dependencyResolver: DependenciesResolver get() = DependenciesResolver.NoDependencies
open val acceptedAnnotations: List<KClass<out Annotation>> get() = emptyList()
@@ -34,6 +34,8 @@ interface ScriptDefinitionProvider {
fun isScript(fileName: String): Boolean
fun getDefaultScriptDefinition(): KotlinScriptDefinition
fun getKnownFilenameExtensions(): Sequence<String>
companion object {
fun getInstance(project: Project): ScriptDefinitionProvider =
ServiceManager.getService(project, ScriptDefinitionProvider::class.java)
@@ -94,6 +96,10 @@ abstract class LazyScriptDefinitionProvider : ScriptDefinitionProvider {
override fun isScript(fileName: String) = findScriptDefinition(fileName) != null
override fun getKnownFilenameExtensions(): Sequence<String> = lock.read {
cachedDefinitions?.map { it.fileExtension } ?: emptySequence()
}
companion object {
// TODO: find a common place for storing kotlin-related extensions and reuse values from it everywhere
protected val nonScriptFilenameSuffixes = arrayOf(".${KotlinFileType.EXTENSION}", ".${JavaFileType.DEFAULT_EXTENSION}")