From e60c299def33b5ceed40bd513c081ea264856736 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 18 Mar 2015 17:26:43 +0300 Subject: [PATCH] Fix warnings in module 'reflection.jvm', clarify some code --- .../internal/KMemberExtensionPropertyImpl.kt | 8 +++---- .../jvm/internal/KMemberPropertyImpl.kt | 8 +++---- .../reflect/jvm/internal/RuntimeTypeMapper.kt | 21 +++++++------------ .../reflect/jvm/internal/foreignKClasses.kt | 1 + 4 files changed, 17 insertions(+), 21 deletions(-) diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberExtensionPropertyImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberExtensionPropertyImpl.kt index ef264f79a34..bcab4120c44 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberExtensionPropertyImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberExtensionPropertyImpl.kt @@ -33,10 +33,10 @@ open class KMemberExtensionPropertyImpl( 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( ) : KMemberExtensionPropertyImpl(container, computeDescriptor), KMutableMemberExtensionProperty, KMutablePropertyImpl { override val setter: Method get() = super.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) diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberPropertyImpl.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberPropertyImpl.kt index 627fd382b74..d377351644f 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberPropertyImpl.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/KMemberPropertyImpl.kt @@ -27,11 +27,11 @@ open class KMemberPropertyImpl( ) : DescriptorBasedProperty(computeDescriptor), KMemberProperty, KPropertyImpl { 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( container: KClassImpl, computeDescriptor: () -> PropertyDescriptor ) : KMemberPropertyImpl(container, computeDescriptor), KMutableMemberProperty, KMutablePropertyImpl { - 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) diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt index fd87e26a421..da4a2933427 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/RuntimeTypeMapper.kt @@ -36,7 +36,7 @@ object RuntimeTypeMapper : JavaToKotlinClassMapBuilder() { private val kotlinFqNameToJvmDescNullable = linkedMapOf() private val jvmDescToKotlinClassId = linkedMapOf(); - { + 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, 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 } diff --git a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/foreignKClasses.kt b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/foreignKClasses.kt index 4830af8131e..0bb2d2ebeeb 100644 --- a/core/reflection.jvm/src/kotlin/reflect/jvm/internal/foreignKClasses.kt +++ b/core/reflection.jvm/src/kotlin/reflect/jvm/internal/foreignKClasses.kt @@ -31,6 +31,7 @@ fun foreignKotlinClass(jClass: Class): KClassImpl { val name = jClass.getName() val cached = FOREIGN_K_CLASSES[name] if (cached is WeakReference<*>) { + [suppress("UNCHECKED_CAST")] val kClass = cached.get() as KClassImpl? if (kClass?.jClass == jClass) { return kClass!!