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