Fix asm annotations loading after annotations refactoring
This commit is contained in:
+6
-4
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+7
-2
@@ -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<String> = arrayListOf()
|
||||
val args: ArrayList<BinAnnArgData> = arrayListOf()
|
||||
)
|
||||
|
||||
private class TemplateAnnotationVisitor(val anns: ArrayList<BinAnnData> = 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()))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user