From 8596bcae2cab9de6e1c7af0f9750557df45af0bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9D=8F=E9=BB=91?= Date: Mon, 23 Aug 2021 16:42:16 +0800 Subject: [PATCH] 1.25 --- build.gradle | 2 +- .../gradle/KotlinMetaAnnotationVisitor.groovy | 29 +++++++++++++++++++ .../gradle/TabooLibClassVisitor.groovy | 4 ++- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 src/main/groovy/io/izzel/taboolib/gradle/KotlinMetaAnnotationVisitor.groovy diff --git a/build.gradle b/build.gradle index 7ce6e01..9905cec 100644 --- a/build.gradle +++ b/build.gradle @@ -9,7 +9,7 @@ plugins { apply plugin: 'kotlin' group 'io.izzel.taboolib' -version '1.24' +version '1.25' configurations { embed diff --git a/src/main/groovy/io/izzel/taboolib/gradle/KotlinMetaAnnotationVisitor.groovy b/src/main/groovy/io/izzel/taboolib/gradle/KotlinMetaAnnotationVisitor.groovy new file mode 100644 index 0000000..91c2f4d --- /dev/null +++ b/src/main/groovy/io/izzel/taboolib/gradle/KotlinMetaAnnotationVisitor.groovy @@ -0,0 +1,29 @@ +package io.izzel.taboolib.gradle + +import org.gradle.api.Project +import org.objectweb.asm.AnnotationVisitor +import org.objectweb.asm.Opcodes + +class KotlinMetaAnnotationVisitor extends AnnotationVisitor { + + Project project + + KotlinMetaAnnotationVisitor(AnnotationVisitor annotationVisitor, project) { + super(Opcodes.ASM7, annotationVisitor) + this.project = project + } + + @Override + void visit(String name, Object value) { + if (value instanceof String) { + super.visit(name, value.replace("taboolib", "${project.group.replace('.', '/')}/taboolib")) + } else { + super.visit(name, value) + } + } + + @Override + AnnotationVisitor visitArray(String name) { + return new KotlinMetaAnnotationVisitor(super.visitArray(name), project) + } +} diff --git a/src/main/groovy/io/izzel/taboolib/gradle/TabooLibClassVisitor.groovy b/src/main/groovy/io/izzel/taboolib/gradle/TabooLibClassVisitor.groovy index c47a6c3..e2eb0ba 100644 --- a/src/main/groovy/io/izzel/taboolib/gradle/TabooLibClassVisitor.groovy +++ b/src/main/groovy/io/izzel/taboolib/gradle/TabooLibClassVisitor.groovy @@ -40,7 +40,9 @@ class TabooLibClassVisitor extends ClassVisitor { @Override AnnotationVisitor visitAnnotation(String descriptor, boolean visible) { - if (descriptor == "L${project.group.replace('.', '/')}/taboolib/common/Isolated;") { + if (descriptor == "Lkotlin/Metadata;") { + return new KotlinMetaAnnotationVisitor(super.visitAnnotation(descriptor, visible), project) + } else if (descriptor == "L${project.group.replace('.', '/')}/taboolib/common/Isolated;") { return new IsolatedAnnotationVisitor(super.visitAnnotation(descriptor, visible), project, name, this) } else if (descriptor == "L${project.group.replace('.', '/')}/taboolib/common/env/RuntimeDependency;") { return new KotlinAnnotationVisitor(super.visitAnnotation(descriptor, visible), project)