From d1603c432993fe06fb34d2aa1682b5f8e42efe34 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Tue, 18 Jul 2017 20:02:37 +0300 Subject: [PATCH] Minor, move deserializeToDescriptor to package kotlin.reflect.jvm.internal To prevent binary-compatibility-validator from reporting it as a public API; that happens because the signature is different after the gradle-shadow-plugin is applied --- .../kotlin/reflect/jvm/internal/KClassImpl.kt | 1 - .../reflect/jvm/internal/KPackageImpl.kt | 1 - .../src/kotlin/reflect/jvm/internal/util.kt | 34 ++++++++++++++++--- .../src/kotlin/reflect/jvm/reflectLambda.kt | 29 +--------------- 4 files changed, 31 insertions(+), 34 deletions(-) diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt index 3465cf187a9..1bf3d861408 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KClassImpl.kt @@ -36,7 +36,6 @@ import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import org.jetbrains.kotlin.utils.compactIfPossible import kotlin.jvm.internal.TypeIntrinsics import kotlin.reflect.* -import kotlin.reflect.jvm.deserializeToDescriptor import kotlin.reflect.jvm.internal.KDeclarationContainerImpl.MemberBelonginess.DECLARED import kotlin.reflect.jvm.internal.KDeclarationContainerImpl.MemberBelonginess.INHERITED diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt index 4e362844cae..d23c35fdbad 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KPackageImpl.kt @@ -31,7 +31,6 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil import kotlin.reflect.KCallable -import kotlin.reflect.jvm.deserializeToDescriptor import kotlin.reflect.jvm.internal.KDeclarationContainerImpl.MemberBelonginess.DECLARED internal class KPackageImpl( diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/util.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/util.kt index 04ac8c56422..e23129a0f6e 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/util.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/util.kt @@ -16,10 +16,7 @@ package kotlin.reflect.jvm.internal -import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor -import org.jetbrains.kotlin.descriptors.ClassDescriptor -import org.jetbrains.kotlin.descriptors.Visibilities -import org.jetbrains.kotlin.descriptors.Visibility +import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.Annotated import org.jetbrains.kotlin.descriptors.annotations.isEffectivelyInlineOnly import org.jetbrains.kotlin.load.java.JvmAbi @@ -34,8 +31,15 @@ import org.jetbrains.kotlin.load.kotlin.reflect.ReflectAnnotationSource import org.jetbrains.kotlin.load.kotlin.reflect.ReflectKotlinClass import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.platform.JavaToKotlinClassMap +import org.jetbrains.kotlin.protobuf.MessageLite import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.classId +import org.jetbrains.kotlin.serialization.ProtoBuf +import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext +import org.jetbrains.kotlin.serialization.deserialization.MemberDeserializer +import org.jetbrains.kotlin.serialization.deserialization.NameResolver +import org.jetbrains.kotlin.serialization.deserialization.TypeTable +import org.jetbrains.kotlin.serialization.deserialization.descriptors.SinceKotlinInfoTable import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil import kotlin.jvm.internal.FunctionReference @@ -152,3 +156,25 @@ internal val CallableMemberDescriptor.isPublicInBytecode: Boolean val visibility = visibility return (visibility == Visibilities.PUBLIC || visibility == Visibilities.INTERNAL) && !isEffectivelyInlineOnly() } + +internal fun deserializeToDescriptor( + moduleAnchor: Class<*>, + proto: M, + nameResolver: NameResolver, + typeTable: TypeTable, + createDescriptor: MemberDeserializer.(M) -> D +): D? { + val moduleData = moduleAnchor.getOrCreateModule() + + val typeParameters = when (proto) { + is ProtoBuf.Function -> proto.typeParameterList + is ProtoBuf.Property -> proto.typeParameterList + else -> error("Unsupported message: $proto") + } + + val context = DeserializationContext( + moduleData.deserialization, nameResolver, moduleData.module, typeTable, SinceKotlinInfoTable.EMPTY, + containerSource = null, parentTypeDeserializer = null, typeParameters = typeParameters + ) + return MemberDeserializer(context).createDescriptor(proto) +} diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/reflectLambda.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/reflectLambda.kt index 69659b14bb4..9b4ee9ed294 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/reflectLambda.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/reflectLambda.kt @@ -18,22 +18,17 @@ package kotlin.reflect.jvm -import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.load.kotlin.JvmNameResolver -import org.jetbrains.kotlin.protobuf.MessageLite import org.jetbrains.kotlin.serialization.ProtoBuf -import org.jetbrains.kotlin.serialization.deserialization.DeserializationContext import org.jetbrains.kotlin.serialization.deserialization.MemberDeserializer -import org.jetbrains.kotlin.serialization.deserialization.NameResolver import org.jetbrains.kotlin.serialization.deserialization.TypeTable -import org.jetbrains.kotlin.serialization.deserialization.descriptors.SinceKotlinInfoTable import org.jetbrains.kotlin.serialization.jvm.BitEncoding import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil import kotlin.reflect.KFunction import kotlin.reflect.jvm.internal.EmptyContainerForLocal import kotlin.reflect.jvm.internal.KFunctionImpl -import kotlin.reflect.jvm.internal.getOrCreateModule +import kotlin.reflect.jvm.internal.deserializeToDescriptor /** * This is an experimental API. Given a class for a compiled Kotlin lambda or a function expression, @@ -54,25 +49,3 @@ fun Function.reflect(): KFunction? { @Suppress("UNCHECKED_CAST") return KFunctionImpl(EmptyContainerForLocal, descriptor) as KFunction } - -internal fun deserializeToDescriptor( - moduleAnchor: Class<*>, - proto: M, - nameResolver: NameResolver, - typeTable: TypeTable, - createDescriptor: MemberDeserializer.(M) -> D -): D? { - val moduleData = moduleAnchor.getOrCreateModule() - - val typeParameters = when (proto) { - is ProtoBuf.Function -> proto.typeParameterList - is ProtoBuf.Property -> proto.typeParameterList - else -> error("Unsupported message: $proto") - } - - val context = DeserializationContext( - moduleData.deserialization, nameResolver, moduleData.module, typeTable, SinceKotlinInfoTable.EMPTY, - containerSource = null, parentTypeDeserializer = null, typeParameters = typeParameters - ) - return MemberDeserializer(context).createDescriptor(proto) -}