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
|
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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user