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
@@ -29,8 +29,6 @@ abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinit
protected abstract val hostConfiguration: ScriptingHostConfiguration
abstract val scriptFileExtensionWithDot: String
open val baseClass: KClass<*> by lazy(LazyThreadSafetyMode.PUBLICATION) {
getScriptingClass(scriptCompilationConfiguration.getOrError(ScriptCompilationConfiguration.baseClass))
}
@@ -43,11 +41,11 @@ abstract class KotlinScriptDefinitionAdapterFromNewAPIBase : KotlinScriptDefinit
override val fileType: LanguageFileType = KotlinFileType.INSTANCE
override fun isScript(fileName: String): Boolean =
fileName.endsWith(scriptFileExtensionWithDot)
fileName.endsWith(".$fileExtension")
override fun getScriptName(script: KtScript): Name {
val fileBasedName = NameUtils.getScriptNameForFile(script.containingKtFile.name)
return Name.identifier(fileBasedName.identifier.removeSuffix(scriptFileExtensionWithDot))
return Name.identifier(fileBasedName.identifier.removeSuffix(".$fileExtension"))
}
override val annotationsForSamWithReceivers: List<String>
@@ -105,6 +103,6 @@ class KotlinScriptDefinitionAdapterFromNewAPI(
override val name: String get() = scriptCompilationConfiguration[ScriptCompilationConfiguration.displayName] ?: super.name
override val scriptFileExtensionWithDot =
"." + (scriptCompilationConfiguration[ScriptCompilationConfiguration.fileExtension] ?: "kts")
override val fileExtension: String
get() = scriptCompilationConfiguration[ScriptCompilationConfiguration.fileExtension] ?: super.fileExtension
}
@@ -64,14 +64,12 @@ class LazyScriptDefinitionFromDiscoveredClass internal constructor(
}
}
override val scriptFileExtensionWithDot: String by lazy(LazyThreadSafetyMode.PUBLICATION) {
val extFromAnn = annotationsFromAsm.find { it.name == KotlinScript::class.simpleName }?.args
override val fileExtension: String by lazy(LazyThreadSafetyMode.PUBLICATION) {
annotationsFromAsm.find { it.name == KotlinScript::class.simpleName }?.args
?.find { it.name == "extension" }?.value
val ext = extFromAnn
?: scriptCompilationConfiguration.let {
it[ScriptCompilationConfiguration.fileExtension] ?: "kts"
it[ScriptCompilationConfiguration.fileExtension] ?: super.fileExtension
}
".$ext"
}
override val name: String by lazy(LazyThreadSafetyMode.PUBLICATION) {