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) {
|
override val scriptFileExtensionWithDot: String by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
||||||
val ext = annotationsFromAsm.find { it.name == KotlinScriptFileExtension::class.simpleName!! }?.args?.first()
|
val extFromAnn = (
|
||||||
// TODO: check whether it actually works
|
annotationsFromAsm.find { it.name == KotlinScriptFileExtension::class.simpleName!! }?.args
|
||||||
?: annotationsFromAsm.find { it.name == KotlinScript::class.simpleName }?.args?.get(1)
|
?: annotationsFromAsm.find { it.name == KotlinScript::class.simpleName }?.args
|
||||||
|
)?.find { it.name == "extension" }?.value
|
||||||
|
val ext = extFromAnn
|
||||||
?: scriptDefinition.let {
|
?: scriptDefinition.let {
|
||||||
it[ScriptDefinition.fileExtension] ?: "kts"
|
it[ScriptDefinition.fileExtension] ?: "kts"
|
||||||
}
|
}
|
||||||
@@ -75,7 +77,7 @@ class LazyScriptDefinitionFromDiscoveredClass internal constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override val name: String by lazy(LazyThreadSafetyMode.PUBLICATION) {
|
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
|
?: super.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-2
@@ -7,14 +7,19 @@ package org.jetbrains.kotlin.scripting.compiler.plugin
|
|||||||
|
|
||||||
import org.jetbrains.org.objectweb.asm.*
|
import org.jetbrains.org.objectweb.asm.*
|
||||||
|
|
||||||
|
internal class BinAnnArgData(
|
||||||
|
val name: String?,
|
||||||
|
val value: String
|
||||||
|
)
|
||||||
|
|
||||||
internal class BinAnnData(
|
internal class BinAnnData(
|
||||||
val name: String,
|
val name: String,
|
||||||
val args: ArrayList<String> = arrayListOf()
|
val args: ArrayList<BinAnnArgData> = arrayListOf()
|
||||||
)
|
)
|
||||||
|
|
||||||
private class TemplateAnnotationVisitor(val anns: ArrayList<BinAnnData> = arrayListOf()) : AnnotationVisitor(Opcodes.ASM5) {
|
private class TemplateAnnotationVisitor(val anns: ArrayList<BinAnnData> = arrayListOf()) : AnnotationVisitor(Opcodes.ASM5) {
|
||||||
override fun visit(name: String?, value: Any?) {
|
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