Minor. Pull user-data related things to CallableDescriptor
Currently, we assume user data for all non-FunctionDescriptor declarations is empty
This commit is contained in:
@@ -48,7 +48,7 @@ class AccessorForFunctionDescriptor(
|
||||
|
||||
isSuspend = calleeDescriptor.isSuspend
|
||||
if (calleeDescriptor.getUserData(INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION) != null) {
|
||||
userDataMap = LinkedHashMap<FunctionDescriptor.UserDataKey<*>, Any>()
|
||||
userDataMap = LinkedHashMap<CallableDescriptor.UserDataKey<*>, Any>()
|
||||
userDataMap[INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION] =
|
||||
calleeDescriptor.getUserData(INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION)
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ abstract class AbstractCoroutineCodegen(
|
||||
element: KtElement,
|
||||
closureContext: ClosureContext,
|
||||
classBuilder: ClassBuilder,
|
||||
private val userDataForDoResume: Map<out FunctionDescriptor.UserDataKey<*>, *>? = null
|
||||
private val userDataForDoResume: Map<out CallableDescriptor.UserDataKey<*>, *>? = null
|
||||
) : ClosureCodegen(
|
||||
outerExpressionCodegen.state,
|
||||
element, null, closureContext, null,
|
||||
|
||||
+2
-2
@@ -117,10 +117,10 @@ private val GET_CONTEXT_METHOD_NAME = "getContext"
|
||||
data class ResolvedCallWithRealDescriptor(val resolvedCall: ResolvedCall<*>, val fakeContinuationExpression: KtExpression)
|
||||
|
||||
@JvmField
|
||||
val INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION = object : FunctionDescriptor.UserDataKey<FunctionDescriptor> {}
|
||||
val INITIAL_DESCRIPTOR_FOR_SUSPEND_FUNCTION = object : CallableDescriptor.UserDataKey<FunctionDescriptor> {}
|
||||
|
||||
@JvmField
|
||||
val INITIAL_SUSPEND_DESCRIPTOR_FOR_DO_RESUME = object : FunctionDescriptor.UserDataKey<FunctionDescriptor> {}
|
||||
val INITIAL_SUSPEND_DESCRIPTOR_FOR_DO_RESUME = object : CallableDescriptor.UserDataKey<FunctionDescriptor> {}
|
||||
|
||||
// Resolved calls to suspension function contain descriptors as they visible within coroutines:
|
||||
// E.g. `fun <V> await(f: CompletableFuture<V>): V` instead of `fun <V> await(f: CompletableFuture<V>, machine: Continuation<V>): Unit`
|
||||
|
||||
@@ -19,6 +19,7 @@ package org.jetbrains.kotlin.contracts
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.contracts.description.*
|
||||
import org.jetbrains.kotlin.contracts.description.expressions.*
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.deserialization.Flags
|
||||
@@ -36,7 +37,7 @@ class ContractDeserializerImpl(private val configuration: DeserializationConfigu
|
||||
ownerFunction: FunctionDescriptor,
|
||||
typeTable: TypeTable,
|
||||
typeDeserializer: TypeDeserializer
|
||||
): Pair<FunctionDescriptor.UserDataKey<*>, LazyContractProvider>? {
|
||||
): Pair<CallableDescriptor.UserDataKey<*>, LazyContractProvider>? {
|
||||
if (!proto.hasContract()) return null
|
||||
|
||||
if (!configuration.readDeserializedContracts) return null
|
||||
|
||||
@@ -204,7 +204,7 @@ class FunctionDescriptorResolver(
|
||||
)
|
||||
|
||||
val contractProvider = getContractProvider(functionDescriptor, trace, scope, dataFlowInfo, function)
|
||||
val userData = mutableMapOf<FunctionDescriptor.UserDataKey<*>, Any>().apply {
|
||||
val userData = mutableMapOf<CallableDescriptor.UserDataKey<*>, Any>().apply {
|
||||
if (contractProvider != null) {
|
||||
put(ContractProviderKey, contractProvider)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.resolve.calls
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.TypeAliasDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||
@@ -20,7 +21,7 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
|
||||
object DslMarkerUtils {
|
||||
|
||||
object FunctionTypeAnnotationsKey : FunctionDescriptor.UserDataKey<Annotations>
|
||||
object FunctionTypeAnnotationsKey : CallableDescriptor.UserDataKey<Annotations>
|
||||
|
||||
data class DslMarkersFromReceiver(
|
||||
val common: Set<FqName>,
|
||||
|
||||
+6
-2
@@ -80,6 +80,8 @@ abstract class WrappedCallableDescriptor<T : IrDeclaration>(
|
||||
override fun acceptVoid(visitor: DeclarationDescriptorVisitor<Void, Void>?) {
|
||||
TODO("not implemented")
|
||||
}
|
||||
|
||||
override fun <V : Any?> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
|
||||
}
|
||||
|
||||
open class WrappedValueParameterDescriptor(
|
||||
@@ -289,7 +291,7 @@ open class WrappedSimpleFunctionDescriptor(
|
||||
|
||||
override fun getInitialSignatureDescriptor() = null
|
||||
|
||||
override fun <V : Any?> getUserData(key: FunctionDescriptor.UserDataKey<V>?): V? = null
|
||||
override fun <V : Any?> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
|
||||
|
||||
override fun newCopyBuilder(): FunctionDescriptor.CopyBuilder<out SimpleFunctionDescriptor> {
|
||||
TODO("not implemented")
|
||||
@@ -378,7 +380,7 @@ open class WrappedClassConstructorDescriptor(
|
||||
|
||||
override fun isSuspend() = false
|
||||
|
||||
override fun <V : Any?> getUserData(key: FunctionDescriptor.UserDataKey<V>?): V? = null
|
||||
override fun <V : Any?> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
|
||||
|
||||
override fun isExternal() = owner.isExternal
|
||||
|
||||
@@ -586,4 +588,6 @@ open class WrappedPropertyDescriptor(
|
||||
override fun getDelegateField(): FieldDescriptor? {
|
||||
TODO("not implemented")
|
||||
}
|
||||
|
||||
override fun <V : Any?> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
|
||||
}
|
||||
|
||||
+2
-2
@@ -47,7 +47,7 @@ abstract class IrBuiltinOperatorDescriptorBase(containingDeclaration: Declaratio
|
||||
override fun getKind(): CallableMemberDescriptor.Kind = CallableMemberDescriptor.Kind.SYNTHESIZED
|
||||
override fun getInitialSignatureDescriptor(): FunctionDescriptor? = null
|
||||
override fun isExternal(): Boolean = false
|
||||
override fun <V : Any> getUserData(key: FunctionDescriptor.UserDataKey<V>?): V? = null
|
||||
override fun <V : Any> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
|
||||
override fun isHiddenForResolutionEverywhereBesideSupercalls(): Boolean = false
|
||||
override fun isHiddenToOvercomeSignatureClash(): Boolean = false
|
||||
override fun isInfix(): Boolean = false
|
||||
@@ -118,4 +118,4 @@ class IrBuiltinValueParameterDescriptorImpl(
|
||||
override fun <R : Any?, D : Any?> accept(visitor: DeclarationDescriptorVisitor<R, D>, data: D): R {
|
||||
return visitor.visitValueParameterDescriptor(this, data)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.contracts.description
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.CallableDescriptor
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ContractProvider
|
||||
|
||||
/**
|
||||
@@ -51,4 +51,4 @@ class LazyContractProvider(private val computation: () -> Any?) : ContractProvid
|
||||
}
|
||||
|
||||
// For storing into UserDataMap of FunctionDescriptor
|
||||
object ContractProviderKey : FunctionDescriptor.UserDataKey<LazyContractProvider?>
|
||||
object ContractProviderKey : CallableDescriptor.UserDataKey<LazyContractProvider?>
|
||||
|
||||
+2
@@ -76,4 +76,6 @@ open class FakeCallableDescriptorForObject(
|
||||
override fun getContainingDeclaration() = classDescriptor.getClassObjectReferenceTarget().containingDeclaration
|
||||
|
||||
override fun substitute(substitutor: TypeSubstitutor) = this
|
||||
|
||||
override fun <V> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user