feat: add SourceDebugExtension, Metadata visit in UnmetaClassVisitor

This commit is contained in:
2024-07-07 02:15:29 +08:00
parent 0cb7216285
commit cd919ce2a6
2 changed files with 9 additions and 3 deletions

View File

@@ -11,13 +11,19 @@ class UnmetaClassVisitor(
var isModified = false var isModified = false
private set private set
var modifiedClassName = ""
private set
override fun visitAnnotation(descriptor: String?, visible: Boolean): AnnotationVisitor? { override fun visitAnnotation(descriptor: String?, visible: Boolean): AnnotationVisitor? {
return when (descriptor) { return when (descriptor) {
"Lkotlin/coroutines/jvm/internal/DebugMetadata;" -> { "Lkotlin/coroutines/jvm/internal/DebugMetadata;",
"Lkotlin/jvm/internal/SourceDebugExtension;",
"Lkotlin/Metadata;",
-> {
isModified = true isModified = true
modifiedClassName = descriptor.removeSuffix(";").split("/").last()
null null
} }
else -> super.visitAnnotation(descriptor, visible) else -> super.visitAnnotation(descriptor, visible)
} }
} }

View File

@@ -90,7 +90,7 @@ abstract class UnmetaTask : DefaultTask() {
classReader.accept(unmetaClassVisitor, ClassReader.SKIP_DEBUG) classReader.accept(unmetaClassVisitor, ClassReader.SKIP_DEBUG)
if (unmetaClassVisitor.isModified) { if (unmetaClassVisitor.isModified) {
++modifiedFiles ++modifiedFiles
log("- Removed @DebugMetadata annotation from ${it.toRelativeString(basePath)}") log("- Removed @${unmetaClassVisitor.modifiedClassName} annotation from ${it.toRelativeString(basePath)}")
it.writeBytes(classWriter.toByteArray()) it.writeBytes(classWriter.toByteArray())
} }
} catch (e: UnsupportedOperationException) { } catch (e: UnsupportedOperationException) {