diff --git a/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/LazyScriptDefinitionFromDiscoveredClass.kt b/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/LazyScriptDefinitionFromDiscoveredClass.kt index 443efa7a4d3..f801a308832 100644 --- a/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/LazyScriptDefinitionFromDiscoveredClass.kt +++ b/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/LazyScriptDefinitionFromDiscoveredClass.kt @@ -65,9 +65,11 @@ class LazyScriptDefinitionFromDiscoveredClass internal constructor( } override val scriptFileExtensionWithDot: String by lazy(LazyThreadSafetyMode.PUBLICATION) { - val ext = annotationsFromAsm.find { it.name == KotlinScriptFileExtension::class.simpleName!! }?.args?.first() - // TODO: check whether it actually works - ?: annotationsFromAsm.find { it.name == KotlinScript::class.simpleName }?.args?.get(1) + val extFromAnn = ( + annotationsFromAsm.find { it.name == KotlinScriptFileExtension::class.simpleName!! }?.args + ?: annotationsFromAsm.find { it.name == KotlinScript::class.simpleName }?.args + )?.find { it.name == "extension" }?.value + val ext = extFromAnn ?: scriptDefinition.let { it[ScriptDefinition.fileExtension] ?: "kts" } @@ -75,7 +77,7 @@ class LazyScriptDefinitionFromDiscoveredClass internal constructor( } override val name: String by lazy(LazyThreadSafetyMode.PUBLICATION) { - annotationsFromAsm.find { it.name == KotlinScript::class.simpleName!! }?.args?.first() + annotationsFromAsm.find { it.name == KotlinScript::class.simpleName!! }?.args?.find { it.name == "name" }?.value ?: super.name } } diff --git a/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/asmBasedAnnotationsLoading.kt b/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/asmBasedAnnotationsLoading.kt index 98a4b935793..51d442fe154 100644 --- a/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/asmBasedAnnotationsLoading.kt +++ b/plugins/scripting/scripting-cli/src/org/jetbrains/kotlin/scripting/compiler/plugin/asmBasedAnnotationsLoading.kt @@ -7,14 +7,19 @@ package org.jetbrains.kotlin.scripting.compiler.plugin import org.jetbrains.org.objectweb.asm.* +internal class BinAnnArgData( + val name: String?, + val value: String +) + internal class BinAnnData( val name: String, - val args: ArrayList = arrayListOf() + val args: ArrayList = arrayListOf() ) private class TemplateAnnotationVisitor(val anns: ArrayList = arrayListOf()) : AnnotationVisitor(Opcodes.ASM5) { override fun visit(name: String?, value: Any?) { - anns.last().args.add(value.toString()) + anns.last().args.add(BinAnnArgData(name, value.toString())) } }