name.remal.gradle_plugins.dsl.utils.DependenciesCollectorClassVisitor.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Remal Gradle plugins: gradle-plugins-kotlin-dsl
package name.remal.gradle_plugins.dsl.utils
import name.remal.uncheckedCast
import org.objectweb.asm.ClassVisitor
import org.objectweb.asm.commons.ClassRemapper
import org.objectweb.asm.commons.Remapper
class DependenciesCollectorClassVisitor(delegate: ClassVisitor?) : ClassRemapper(delegate, DependenciesCollectorRemapper()) {
val dependencyInternalClassNames: Set
get() = remapper.uncheckedCast()
.dependencyInternalClassNames
.toSortedSet()
.apply { internalClassName?.let(this::remove) }
private var internalClassName: String? = null
override fun visit(version: Int, access: Int, name: String, signature: String?, superName: String?, interfaces: Array?) {
internalClassName = name
super.visit(version, access, name, signature, superName, interfaces)
}
private class DependenciesCollectorRemapper : Remapper() {
val dependencyInternalClassNames: MutableSet = hashSetOf()
override fun map(internalName: String?): String? {
internalName?.let(dependencyInternalClassNames::add)
return null
}
}
}