Reflection: add API for declaration modifiers

#KT-10447 Fixed
This commit is contained in:
Alexander Udalov
2016-07-12 19:06:00 +03:00
parent ada81923dc
commit 7e317f7a7c
24 changed files with 681 additions and 1 deletions
@@ -99,6 +99,21 @@ public abstract class CallableReference implements KCallable {
return getReflected().callBy(args);
}
@Override
public boolean isFinal() {
return getReflected().isFinal();
}
@Override
public boolean isOpen() {
return getReflected().isOpen();
}
@Override
public boolean isAbstract() {
return getReflected().isAbstract();
}
public KCallable compute() {
if (reflected == null) {
reflected = computeReflected();
@@ -48,6 +48,27 @@ class ClassReference(override val jClass: Class<*>) : KClass<Any>, ClassBasedDec
override val supertypes: List<KType>
get() = error()
override val isFinal: Boolean
get() = error()
override val isOpen: Boolean
get() = error()
override val isAbstract: Boolean
get() = error()
override val isSealed: Boolean
get() = error()
override val isData: Boolean
get() = error()
override val isInner: Boolean
get() = error()
override val isCompanion: Boolean
get() = error()
private fun error(): Nothing = throw KotlinReflectionNotSupportedError()
override fun equals(other: Any?) =
@@ -84,6 +84,51 @@ public class FunctionReference extends FunctionImpl implements KFunction {
return getReflected().callBy(args);
}
@Override
public boolean isFinal() {
return getReflected().isFinal();
}
@Override
public boolean isOpen() {
return getReflected().isOpen();
}
@Override
public boolean isAbstract() {
return getReflected().isAbstract();
}
@Override
public boolean isInline() {
return getReflected().isInline();
}
@Override
public boolean isExternal() {
return getReflected().isExternal();
}
@Override
public boolean isOperator() {
return getReflected().isOperator();
}
@Override
public boolean isInfix() {
return getReflected().isInfix();
}
@Override
public boolean isTailrec() {
return getReflected().isTailrec();
}
@Override
public boolean isSuspend() {
return getReflected().isSuspend();
}
@Override
public boolean equals(Object obj) {
if (obj == this) return true;
@@ -19,6 +19,21 @@ package kotlin.jvm.internal;
import kotlin.reflect.KProperty;
public abstract class PropertyReference extends CallableReference implements KProperty {
@Override
protected KProperty getReflected() {
return (KProperty) super.getReflected();
}
@Override
public boolean isLateinit() {
return getReflected().isLateinit();
}
@Override
public boolean isConst() {
return getReflected().isConst();
}
@Override
public boolean equals(Object obj) {
if (obj == this) return true;