Code cleanup: FunctionInvokeDescriptor

This commit is contained in:
Mikhail Glukhikh
2022-04-04 13:25:54 +03:00
committed by Space
parent 0ef32e5807
commit edeb4688dc
@@ -28,17 +28,17 @@ import org.jetbrains.kotlin.types.Variance
import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.util.OperatorNameConventions
class FunctionInvokeDescriptor private constructor( class FunctionInvokeDescriptor private constructor(
container: DeclarationDescriptor, container: DeclarationDescriptor,
original: FunctionInvokeDescriptor?, original: FunctionInvokeDescriptor?,
callableKind: CallableMemberDescriptor.Kind, callableKind: CallableMemberDescriptor.Kind,
isSuspend: Boolean isSuspend: Boolean
) : SimpleFunctionDescriptorImpl( ) : SimpleFunctionDescriptorImpl(
container, container,
original, original,
Annotations.EMPTY, Annotations.EMPTY,
OperatorNameConventions.INVOKE, OperatorNameConventions.INVOKE,
callableKind, callableKind,
SourceElement.NO_SOURCE SourceElement.NO_SOURCE
) { ) {
init { init {
this.isOperator = true this.isOperator = true
@@ -66,12 +66,12 @@ class FunctionInvokeDescriptor private constructor(
} }
override fun createSubstitutedCopy( override fun createSubstitutedCopy(
newOwner: DeclarationDescriptor, newOwner: DeclarationDescriptor,
original: FunctionDescriptor?, original: FunctionDescriptor?,
kind: CallableMemberDescriptor.Kind, kind: CallableMemberDescriptor.Kind,
newName: Name?, newName: Name?,
annotations: Annotations, annotations: Annotations,
source: SourceElement source: SourceElement
): FunctionDescriptorImpl { ): FunctionDescriptorImpl {
return FunctionInvokeDescriptor(newOwner, original as FunctionInvokeDescriptor?, kind, isSuspend) return FunctionInvokeDescriptor(newOwner, original as FunctionInvokeDescriptor?, kind, isSuspend)
} }
@@ -103,9 +103,9 @@ class FunctionInvokeDescriptor private constructor(
} }
val copyConfiguration = newCopyBuilder(TypeSubstitutor.EMPTY) val copyConfiguration = newCopyBuilder(TypeSubstitutor.EMPTY)
.setHasSynthesizedParameterNames(parameterNames.any { it == null }) .setHasSynthesizedParameterNames(parameterNames.any { it == null })
.setValueParameters(newValueParameters) .setValueParameters(newValueParameters)
.setOriginal(original) .setOriginal(original)
return super.doSubstitute(copyConfiguration)!! return super.doSubstitute(copyConfiguration)!!
} }
@@ -116,27 +116,26 @@ class FunctionInvokeDescriptor private constructor(
val result = FunctionInvokeDescriptor(functionClass, null, CallableMemberDescriptor.Kind.DECLARATION, isSuspend) val result = FunctionInvokeDescriptor(functionClass, null, CallableMemberDescriptor.Kind.DECLARATION, isSuspend)
result.initialize( result.initialize(
null, null,
functionClass.thisAsReceiverParameter, functionClass.thisAsReceiverParameter,
listOf(), listOf(), listOf(), listOf(),
typeParameters.takeWhile { it.variance == Variance.IN_VARIANCE } typeParameters.takeWhile { it.variance == Variance.IN_VARIANCE }
.withIndex() .withIndex()
.map { createValueParameter(result, it.index, it.value) }, .map { createValueParameter(result, it.index, it.value) },
typeParameters.last().defaultType, typeParameters.last().defaultType,
Modality.ABSTRACT, Modality.ABSTRACT,
DescriptorVisibilities.PUBLIC DescriptorVisibilities.PUBLIC
) )
result.setHasSynthesizedParameterNames(true) result.setHasSynthesizedParameterNames(true)
return result return result
} }
private fun createValueParameter( private fun createValueParameter(
containingDeclaration: FunctionInvokeDescriptor, containingDeclaration: FunctionInvokeDescriptor,
index: Int, index: Int,
typeParameter: TypeParameterDescriptor typeParameter: TypeParameterDescriptor
): ValueParameterDescriptor { ): ValueParameterDescriptor {
val typeParameterName = typeParameter.name.asString() val name = when (val typeParameterName = typeParameter.name.asString()) {
val name = when (typeParameterName) {
"T" -> "instance" "T" -> "instance"
"E" -> "receiver" "E" -> "receiver"
else -> { else -> {
@@ -146,15 +145,15 @@ class FunctionInvokeDescriptor private constructor(
} }
return ValueParameterDescriptorImpl( return ValueParameterDescriptorImpl(
containingDeclaration, null, index, containingDeclaration, null, index,
Annotations.EMPTY, Annotations.EMPTY,
Name.identifier(name), Name.identifier(name),
typeParameter.defaultType, typeParameter.defaultType,
/* declaresDefaultValue = */ false, declaresDefaultValue = false,
/* isCrossinline = */ false, isCrossinline = false,
/* isNoinline = */ false, isNoinline = false,
/* varargElementType = */ null, varargElementType = null,
SourceElement.NO_SOURCE SourceElement.NO_SOURCE
) )
} }
} }