Guest User

Untitled

a guest
Feb 18th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. import org.jetbrains.kotlin.serialization.jvm.*
  2.  
  3. @Suppress("INVISIBLE_MEMBER", "INVISIBLE_REFERENCE")
  4. fun loadOriginName(className: String) {
  5. val metadata = Class.forName(className).declaredAnnotations
  6. .filter { it.annotationClass.qualifiedName == "kotlin.Metadata" }
  7. .single() as Metadata
  8.  
  9. if (metadata.k == 3 && metadata.d1.isNotEmpty()) {
  10. // Synthetic classes generated for lambdas/coroutines
  11. val (nameResolver, classProto) = JvmProtoBufUtil.readFunctionDataFrom(metadata.d1, metadata.d2)
  12. val nameIndex = classProto.getExtension(JvmProtoBuf.lambdaClassOriginName)
  13. val originName = nameResolver.getString(nameIndex)
  14. println("Origin class for lambda class $className is $originName")
  15. } else if (metadata.k == 1) {
  16. // Anonymous classes generated for object literals
  17. val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(metadata.d1, metadata.d2)
  18. val nameIndex = classProto.getExtension(JvmProtoBuf.anonymousObjectOriginName)
  19. val originName = nameResolver.getString(nameIndex)
  20. println("Origin class for anonymous object $className is $originName")
  21. } else {
  22. println("Unable to determine origin class for class $className")
  23. }
  24. }
  25.  
  26. fun main(args: Array<String>) {
  27. // Example usage (replace with an existing class name):
  28. loadOriginName("test.TestKt\$box\$\$inlined\$checker\$1")
  29. }
Add Comment
Please, Sign In to add comment