Supported obtaining function type parameter names from KotlinType

This commit is contained in:
Valentin Kipyatkov
2016-09-13 12:07:59 +03:00
parent 8d7b59777c
commit 147d1da1ed
12 changed files with 86 additions and 17 deletions
@@ -16,6 +16,8 @@
package org.jetbrains.kotlin.codegen;
import kotlin.collections.CollectionsKt;
import kotlin.jvm.functions.Function1;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.coroutines.CoroutineUtilKt;
import org.jetbrains.kotlin.descriptors.*;
@@ -101,11 +103,18 @@ public class JvmRuntimeTypes {
ReceiverParameterDescriptor receiverParameter = descriptor.getExtensionReceiverParameter();
//noinspection ConstantConditions
List<ValueParameterDescriptor> parameters = descriptor.getValueParameters();
KotlinType functionType = FunctionTypeResolveUtilsKt.createFunctionType(
DescriptorUtilsKt.getBuiltIns(descriptor),
Annotations.Companion.getEMPTY(),
receiverParameter == null ? null : receiverParameter.getType(),
ExpressionTypingUtils.getValueParametersTypes(descriptor.getValueParameters()),
ExpressionTypingUtils.getValueParametersTypes(parameters),
CollectionsKt.map(parameters, new Function1<ValueParameterDescriptor, Name>() {
@Override
public Name invoke(ValueParameterDescriptor descriptor) {
return descriptor.getName();
}
}),
descriptor.getReturnType()
);
@@ -128,11 +137,18 @@ public class JvmRuntimeTypes {
extensionReceiver != null ? extensionReceiver.getType() : dispatchReceiver != null ? dispatchReceiver.getType() : null;
//noinspection ConstantConditions
List<ValueParameterDescriptor> parameters = descriptor.getValueParameters();
KotlinType functionType = FunctionTypeResolveUtilsKt.createFunctionType(
DescriptorUtilsKt.getBuiltIns(descriptor),
Annotations.Companion.getEMPTY(),
isBound ? null : receiverType,
ExpressionTypingUtils.getValueParametersTypes(descriptor.getValueParameters()),
ExpressionTypingUtils.getValueParametersTypes(parameters),
CollectionsKt.map(parameters, new Function1<ValueParameterDescriptor, Name>() {
@Override
public Name invoke(ValueParameterDescriptor descriptor) {
return descriptor.getName();
}
}),
descriptor.getReturnType()
);