Drop synthetic class kind Function, drop Metadata#xi
This commit is contained in:
@@ -231,7 +231,6 @@ public class ClosureCodegen extends MemberCodegen<KtElement> {
|
|||||||
@Override
|
@Override
|
||||||
public Unit invoke(AnnotationVisitor av) {
|
public Unit invoke(AnnotationVisitor av) {
|
||||||
writeAnnotationData(av, serializer, functionProto, false);
|
writeAnnotationData(av, serializer, functionProto, false);
|
||||||
av.visit(JvmAnnotationNames.SYNTHETIC_CLASS_KIND_FIELD_NAME, KotlinClassHeader.SyntheticClassKind.FUNCTION.getId());
|
|
||||||
return Unit.INSTANCE;
|
return Unit.INSTANCE;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
Vendored
-7
@@ -34,17 +34,10 @@ fun extensionFunExpr() {
|
|||||||
assertEquals(null, g.parameters.single().name)
|
assertEquals(null, g.parameters.single().name)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun customFunction() {
|
|
||||||
val f = object : Function<String> {}
|
|
||||||
assertNull(f.reflect())
|
|
||||||
}
|
|
||||||
|
|
||||||
fun box(): String {
|
fun box(): String {
|
||||||
lambda()
|
lambda()
|
||||||
funExpr()
|
funExpr()
|
||||||
extensionFunExpr()
|
extensionFunExpr()
|
||||||
|
|
||||||
customFunction()
|
|
||||||
|
|
||||||
return "OK"
|
return "OK"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ public final class JvmAnnotationNames {
|
|||||||
public static final String KIND_FIELD_NAME = "k";
|
public static final String KIND_FIELD_NAME = "k";
|
||||||
public static final String METADATA_DATA_FIELD_NAME = "d1";
|
public static final String METADATA_DATA_FIELD_NAME = "d1";
|
||||||
public static final String METADATA_STRINGS_FIELD_NAME = "d2";
|
public static final String METADATA_STRINGS_FIELD_NAME = "d2";
|
||||||
public static final String SYNTHETIC_CLASS_KIND_FIELD_NAME = "xi";
|
|
||||||
public static final String METADATA_MULTIFILE_CLASS_NAME_FIELD_NAME = "xs";
|
public static final String METADATA_MULTIFILE_CLASS_NAME_FIELD_NAME = "xs";
|
||||||
public static final String DATA_FIELD_NAME = "data";
|
public static final String DATA_FIELD_NAME = "data";
|
||||||
public static final String STRINGS_FIELD_NAME = "strings";
|
public static final String STRINGS_FIELD_NAME = "strings";
|
||||||
|
|||||||
-4
@@ -44,9 +44,5 @@ class KotlinClassHeader(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class SyntheticClassKind(val id: Int) {
|
|
||||||
FUNCTION(1),
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun toString() = "$kind version=$metadataVersion"
|
override fun toString() = "$kind version=$metadataVersion"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
package kotlin.reflect.jvm
|
package kotlin.reflect.jvm
|
||||||
|
|
||||||
import org.jetbrains.kotlin.load.kotlin.JvmNameResolver
|
import org.jetbrains.kotlin.load.kotlin.JvmNameResolver
|
||||||
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext
|
import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.MemberDeserializer
|
import org.jetbrains.kotlin.serialization.deserialization.MemberDeserializer
|
||||||
@@ -39,7 +38,6 @@ 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
|
||||||
if (annotation.xi != KotlinClassHeader.SyntheticClassKind.FUNCTION.id) return null
|
|
||||||
val input = BitEncoding.decodeBytes(annotation.d1).inputStream()
|
val input = BitEncoding.decodeBytes(annotation.d1).inputStream()
|
||||||
val nameResolver = JvmNameResolver(
|
val nameResolver = JvmNameResolver(
|
||||||
JvmProtoBuf.StringTableTypes.parseDelimitedFrom(input, JvmProtoBufUtil.EXTENSION_REGISTRY), annotation.d2
|
JvmProtoBuf.StringTableTypes.parseDelimitedFrom(input, JvmProtoBufUtil.EXTENSION_REGISTRY), annotation.d2
|
||||||
|
|||||||
@@ -55,14 +55,5 @@ internal annotation class Metadata(
|
|||||||
/**
|
/**
|
||||||
* An extra string. For a multi-file part class, internal name of the facade class.
|
* An extra string. For a multi-file part class, internal name of the facade class.
|
||||||
*/
|
*/
|
||||||
val xs: String = "",
|
val xs: String = ""
|
||||||
/**
|
|
||||||
* An extra integer. For a synthetic class, the specific kind of this class which is one of the following:
|
|
||||||
*
|
|
||||||
* 1 Anonymous class for a lambda or a function reference
|
|
||||||
*
|
|
||||||
* A value other than this (e.g. 0) or a missing value means this is a synthetic class of some other sort.
|
|
||||||
* This kind has no effect on the compiler because it doesn't read synthetic class metadata. It may be used in IDEs and tools.
|
|
||||||
*/
|
|
||||||
val xi: Int = 0
|
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user