Do not try to create view of suspend function descriptor on IR BE

Keep container source in wrapped descriptor
This commit is contained in:
Ilmir Usmanov
2019-06-14 21:34:19 +03:00
parent 53878b6961
commit c613e04962
10 changed files with 34 additions and 122 deletions
@@ -31,7 +31,6 @@ import org.jetbrains.kotlin.serialization.deserialization.descriptors.Deserializ
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.storage.StorageManager
import org.jetbrains.kotlin.types.*
import java.lang.UnsupportedOperationException
abstract class WrappedDeclarationDescriptor<T : IrDeclaration>(annotations: Annotations) :
@@ -374,7 +373,6 @@ open class WrappedSimpleFunctionDescriptor(
annotations: Annotations = Annotations.EMPTY,
sourceElement: SourceElement = SourceElement.NO_SOURCE
) : SimpleFunctionDescriptor, WrappedCallableDescriptor<IrSimpleFunction>(annotations, sourceElement) {
private val userDataMap = mutableMapOf<CallableDescriptor.UserDataKey<*>, Any?>()
// TODO: Remove as soon as all IR declarations have their originalDescriptor.
constructor(originalDescriptor: FunctionDescriptor) : this(originalDescriptor.annotations, originalDescriptor.source) {
@@ -423,7 +421,7 @@ open class WrappedSimpleFunctionDescriptor(
}
override fun setOverriddenDescriptors(overriddenDescriptors: MutableCollection<out CallableMemberDescriptor>) {
if (!isSuspend) TODO("not implemented")
TODO("not implemented")
}
override fun getKind() =
@@ -450,15 +448,10 @@ open class WrappedSimpleFunctionDescriptor(
override fun getInitialSignatureDescriptor() = null
override fun <V : Any?> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? =
userDataMap[key as CallableDescriptor.UserDataKey<*>] as V?
override fun <V : Any?> getUserData(key: CallableDescriptor.UserDataKey<V>?): V? = null
override fun newCopyBuilder(): FunctionDescriptor.CopyBuilder<out SimpleFunctionDescriptor> {
// KotlinTypeMapper uses getOrCreateJvmSuspendFunctionView extensively, but since
// after AddContinuationLowering all suspend descriptors are views anyway, return original
// one as a copy (with user data changed)
if (isSuspend) return ChangeUserDataCopyBuilder()
else TODO("not implemented")
TODO("not implemented")
}
override fun <R, D> accept(visitor: DeclarationDescriptorVisitor<R, D>?, data: D) =
@@ -467,96 +460,6 @@ open class WrappedSimpleFunctionDescriptor(
override fun acceptVoid(visitor: DeclarationDescriptorVisitor<Void, Void>?) {
visitor!!.visitFunctionDescriptor(this, null)
}
inner class ChangeUserDataCopyBuilder : FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
override fun setOwner(owner: DeclarationDescriptor): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setModality(modality: Modality): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setVisibility(visibility: Visibility): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setKind(kind: CallableMemberDescriptor.Kind): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setCopyOverrides(copyOverrides: Boolean): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setName(name: Name): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setValueParameters(parameters: MutableList<ValueParameterDescriptor>): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setTypeParameters(parameters: MutableList<TypeParameterDescriptor>): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setReturnType(type: KotlinType): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setExtensionReceiverParameter(extensionReceiverParameter: ReceiverParameterDescriptor?): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setDispatchReceiverParameter(dispatchReceiverParameter: ReceiverParameterDescriptor?): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setOriginal(original: CallableMemberDescriptor?): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setSignatureChange(): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setPreserveSourceElement(): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setDropOriginalInContainingParts(): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setHiddenToOvercomeSignatureClash(): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setHiddenForResolutionEverywhereBesideSupercalls(): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setAdditionalAnnotations(additionalAnnotations: Annotations): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun setSubstitution(substitution: TypeSubstitution): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
return this
}
override fun <V : Any?> putUserData(
userDataKey: CallableDescriptor.UserDataKey<V>,
value: V
): FunctionDescriptor.CopyBuilder<WrappedSimpleFunctionDescriptor> {
this@WrappedSimpleFunctionDescriptor.userDataMap[userDataKey] = value
return this
}
override fun build(): WrappedSimpleFunctionDescriptor? {
return this@WrappedSimpleFunctionDescriptor
}
}
}
class WrappedFunctionDescriptorWithContainerSource(