Add KCallable.returnType

This commit is contained in:
Alexander Udalov
2015-07-23 16:39:52 +03:00
parent be77a2feee
commit 699a801ce9
4 changed files with 20 additions and 0 deletions
@@ -39,6 +39,11 @@ public interface KCallable<out R> {
*/ */
public val parameters: List<KParameter> public val parameters: List<KParameter>
/**
* The type of values returned by this callable.
*/
public val returnType: KType
/** /**
* Calls this callable with the specified arguments and returns the result. * Calls this callable with the specified arguments and returns the result.
* Throws an exception if the number of specified arguments is not equal to the size of [parameters], * Throws an exception if the number of specified arguments is not equal to the size of [parameters],
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import java.util.ArrayList import java.util.ArrayList
import kotlin.reflect.KCallable import kotlin.reflect.KCallable
import kotlin.reflect.KParameter import kotlin.reflect.KParameter
import kotlin.reflect.KType
interface KCallableImpl<out R> : KCallable<R> { interface KCallableImpl<out R> : KCallable<R> {
val descriptor: CallableMemberDescriptor val descriptor: CallableMemberDescriptor
@@ -44,4 +45,7 @@ interface KCallableImpl<out R> : KCallable<R> {
result.trimToSize() result.trimToSize()
return result return result
} }
override val returnType: KType
get() = KTypeImpl(descriptor.returnType!!)
} }
@@ -20,6 +20,7 @@ import kotlin.jvm.KotlinReflectionNotSupportedError;
import kotlin.reflect.KCallable; import kotlin.reflect.KCallable;
import kotlin.reflect.KDeclarationContainer; import kotlin.reflect.KDeclarationContainer;
import kotlin.reflect.KParameter; import kotlin.reflect.KParameter;
import kotlin.reflect.KType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
@@ -69,6 +70,11 @@ public abstract class CallableReference implements KCallable {
throw error(); throw error();
} }
@Override
public KType getReturnType() {
throw error();
}
@Override @Override
public Object call(@NotNull Object... args) { public Object call(@NotNull Object... args) {
throw error(); throw error();
@@ -66,6 +66,11 @@ public class FunctionReference
throw error(); throw error();
} }
@Override
public KType getReturnType() {
throw error();
}
@Override @Override
public Object call(@NotNull Object... args) { public Object call(@NotNull Object... args) {
throw error(); throw error();