KtFe10TypeRenderer: fix reflection & suspend type rendering
After this commit, all Fe10IdeNormalAnalysisSourceModuleFunctionClassKindTestGenerated pass
This commit is contained in:
+16
-6
@@ -11,10 +11,8 @@ import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.bas
|
|||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getKtNamedAnnotationArguments
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.getKtNamedAnnotationArguments
|
||||||
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.maybeLocalClassId
|
import org.jetbrains.kotlin.analysis.api.descriptors.symbols.descriptorBased.base.maybeLocalClassId
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter
|
import org.jetbrains.kotlin.analysis.utils.printer.PrettyPrinter
|
||||||
|
import org.jetbrains.kotlin.builtins.*
|
||||||
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
import org.jetbrains.kotlin.builtins.functions.FunctionClassDescriptor
|
||||||
import org.jetbrains.kotlin.builtins.getReceiverTypeFromFunctionType
|
|
||||||
import org.jetbrains.kotlin.builtins.getReturnTypeFromFunctionType
|
|
||||||
import org.jetbrains.kotlin.builtins.getValueParameterTypesFromFunctionType
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptorWithTypeParameters
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptorWithTypeParameters
|
||||||
import org.jetbrains.kotlin.descriptors.PossiblyInnerType
|
import org.jetbrains.kotlin.descriptors.PossiblyInnerType
|
||||||
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
import org.jetbrains.kotlin.descriptors.TypeParameterDescriptor
|
||||||
@@ -177,9 +175,21 @@ internal class KtFe10TypeRenderer(private val options: KtTypeRendererOptions, pr
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun KtFe10RendererConsumer.renderFunctionType(type: SimpleType) {
|
private fun KtFe10RendererConsumer.renderFunctionType(type: SimpleType) {
|
||||||
val receiverType = type.getReceiverTypeFromFunctionType()
|
if (type.isSuspendFunctionType || type.isKSuspendFunctionType) {
|
||||||
val valueParameters = type.getValueParameterTypesFromFunctionType()
|
append("suspend ")
|
||||||
val returnType = type.getReturnTypeFromFunctionType()
|
}
|
||||||
|
val (receiverType, valueParameters, returnType) = when {
|
||||||
|
type.isKFunctionType || type.isKSuspendFunctionType -> Triple(
|
||||||
|
null,
|
||||||
|
type.arguments.dropLast(1),
|
||||||
|
type.arguments.last().type,
|
||||||
|
)
|
||||||
|
else -> Triple(
|
||||||
|
type.getReceiverTypeFromFunctionType(),
|
||||||
|
type.getValueParameterTypesFromFunctionType(),
|
||||||
|
type.getReturnTypeFromFunctionType()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
if (receiverType != null) {
|
if (receiverType != null) {
|
||||||
renderType(receiverType)
|
renderType(receiverType)
|
||||||
|
|||||||
Reference in New Issue
Block a user