Fix warnings in module 'reflection.jvm', clarify some code
This commit is contained in:
@@ -33,10 +33,10 @@ open class KMemberExtensionPropertyImpl<D : Any, E, out R>(
|
||||
|
||||
override val field: Field? get() = null
|
||||
|
||||
override fun get(dispatchReceiver: D, extensionReceiver: E): R {
|
||||
override fun get(instance: D, extensionReceiver: E): R {
|
||||
try {
|
||||
[suppress("UNCHECKED_CAST")]
|
||||
return getter.invoke(dispatchReceiver, extensionReceiver) as R
|
||||
return getter.invoke(instance, extensionReceiver) as R
|
||||
}
|
||||
catch (e: IllegalAccessException) {
|
||||
throw IllegalPropertyAccessException(e)
|
||||
@@ -60,9 +60,9 @@ class KMutableMemberExtensionPropertyImpl<D : Any, E, R>(
|
||||
) : KMemberExtensionPropertyImpl<D, E, R>(container, computeDescriptor), KMutableMemberExtensionProperty<D, E, R>, KMutablePropertyImpl<R> {
|
||||
override val setter: Method get() = super<KMemberExtensionPropertyImpl>.setter!!
|
||||
|
||||
override fun set(dispatchReceiver: D, extensionReceiver: E, value: R) {
|
||||
override fun set(instance: D, extensionReceiver: E, value: R) {
|
||||
try {
|
||||
setter.invoke(dispatchReceiver, extensionReceiver, value)
|
||||
setter.invoke(instance, extensionReceiver, value)
|
||||
}
|
||||
catch (e: IllegalAccessException) {
|
||||
throw IllegalPropertyAccessException(e)
|
||||
|
||||
@@ -27,11 +27,11 @@ open class KMemberPropertyImpl<T : Any, out R>(
|
||||
) : DescriptorBasedProperty(computeDescriptor), KMemberProperty<T, R>, KPropertyImpl<R> {
|
||||
override val name: String get() = descriptor.getName().asString()
|
||||
|
||||
override fun get(receiver: T): R {
|
||||
override fun get(instance: T): R {
|
||||
try {
|
||||
val getter = getter
|
||||
[suppress("UNCHECKED_CAST")]
|
||||
return if (getter != null) getter(receiver) as R else field!!.get(receiver) as R
|
||||
return if (getter != null) getter(instance) as R else field!!.get(instance) as R
|
||||
}
|
||||
catch (e: IllegalAccessException) {
|
||||
throw IllegalPropertyAccessException(e)
|
||||
@@ -53,10 +53,10 @@ class KMutableMemberPropertyImpl<T : Any, R>(
|
||||
container: KClassImpl<T>,
|
||||
computeDescriptor: () -> PropertyDescriptor
|
||||
) : KMemberPropertyImpl<T, R>(container, computeDescriptor), KMutableMemberProperty<T, R>, KMutablePropertyImpl<R> {
|
||||
override fun set(receiver: T, value: R) {
|
||||
override fun set(instance: T, value: R) {
|
||||
try {
|
||||
val setter = setter
|
||||
if (setter != null) setter(receiver, value) else field!!.set(receiver, value)
|
||||
if (setter != null) setter(instance, value) else field!!.set(instance, value)
|
||||
}
|
||||
catch (e: IllegalAccessException) {
|
||||
throw IllegalPropertyAccessException(e)
|
||||
|
||||
@@ -36,7 +36,7 @@ object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() {
|
||||
private val kotlinFqNameToJvmDescNullable = linkedMapOf<FqName, String>()
|
||||
private val jvmDescToKotlinClassId = linkedMapOf<String, ClassId>();
|
||||
|
||||
{
|
||||
init {
|
||||
init()
|
||||
initPrimitives()
|
||||
}
|
||||
@@ -85,6 +85,13 @@ object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() {
|
||||
val classifier = type.getConstructor().getDeclarationDescriptor()
|
||||
if (classifier is TypeParameterDescriptor) return mapTypeToJvmDesc(classifier.getUpperBounds().first())
|
||||
|
||||
if (KotlinBuiltIns.isArray(type)) {
|
||||
val elementType = KotlinBuiltIns.getInstance().getArrayElementType(type)
|
||||
// makeNullable is called here to map primitive types to the corresponding wrappers,
|
||||
// because the given type is Array<Something>, not SomethingArray
|
||||
return "[" + mapTypeToJvmDesc(TypeUtils.makeNullable(elementType))
|
||||
}
|
||||
|
||||
val classDescriptor = classifier as ClassDescriptor
|
||||
val fqNameUnsafe = DescriptorUtils.getFqName(classDescriptor)
|
||||
if (fqNameUnsafe.isSafe()) {
|
||||
@@ -95,18 +102,6 @@ object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() {
|
||||
kotlinFqNameToJvmDesc[fqName]?.let { return it }
|
||||
}
|
||||
|
||||
if (KotlinBuiltIns.isArray(type)) {
|
||||
var dimension = 0
|
||||
var elementType = type
|
||||
|
||||
while (KotlinBuiltIns.isArray(elementType)) {
|
||||
elementType = KotlinBuiltIns.getInstance().getArrayElementType(elementType)
|
||||
dimension++
|
||||
}
|
||||
|
||||
return "[".repeat(dimension) + mapTypeToJvmDesc(TypeUtils.makeNullable(elementType))
|
||||
}
|
||||
|
||||
return classDescriptor.classId.desc
|
||||
}
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@ fun <T> foreignKotlinClass(jClass: Class<T>): KClassImpl<T> {
|
||||
val name = jClass.getName()
|
||||
val cached = FOREIGN_K_CLASSES[name]
|
||||
if (cached is WeakReference<*>) {
|
||||
[suppress("UNCHECKED_CAST")]
|
||||
val kClass = cached.get() as KClassImpl<T>?
|
||||
if (kClass?.jClass == jClass) {
|
||||
return kClass!!
|
||||
|
||||
Reference in New Issue
Block a user