Do not fail on lambdas without metadata in toString()

This commit is contained in:
Alexander Udalov
2017-06-29 21:06:21 +03:00
parent 61e52f0bfe
commit 5a8546519a
@@ -39,10 +39,10 @@ import kotlin.reflect.jvm.internal.getOrCreateModule
*/ */
fun <R> Function<R>.reflect(): KFunction<R>? { fun <R> Function<R>.reflect(): KFunction<R>? {
val annotation = javaClass.getAnnotation(Metadata::class.java) ?: return null val annotation = javaClass.getAnnotation(Metadata::class.java) ?: return null
val input = BitEncoding.decodeBytes(annotation.d1).inputStream() val data = annotation.d1.takeUnless(Array<String>::isEmpty) ?: return null
val nameResolver = JvmNameResolver( val input = BitEncoding.decodeBytes(data).inputStream()
JvmProtoBuf.StringTableTypes.parseDelimitedFrom(input, JvmProtoBufUtil.EXTENSION_REGISTRY), annotation.d2 val stringTableTypes = JvmProtoBuf.StringTableTypes.parseDelimitedFrom(input, JvmProtoBufUtil.EXTENSION_REGISTRY)
) val nameResolver = JvmNameResolver(stringTableTypes, annotation.d2)
val proto = ProtoBuf.Function.parseFrom(input, JvmProtoBufUtil.EXTENSION_REGISTRY) val proto = ProtoBuf.Function.parseFrom(input, JvmProtoBufUtil.EXTENSION_REGISTRY)
val moduleData = javaClass.getOrCreateModule() val moduleData = javaClass.getOrCreateModule()
val context = DeserializationContext( val context = DeserializationContext(