Rename internal field/getter/setter properties in KPropertyImpl

To avoid clash with getter/setter which will appear soon in KProperty interface
This commit is contained in:
Alexander Udalov
2015-07-01 16:24:31 +03:00
parent 048a9b686e
commit fd198accf6
7 changed files with 33 additions and 33 deletions
@@ -66,21 +66,21 @@ abstract class DescriptorBasedProperty protected constructor(
null null
} }
open val field: Field? by ReflectProperties.lazySoft { open val javaField: Field? by ReflectProperties.lazySoft {
val proto = protoData val proto = protoData
if (proto == null) container.jClass.getField(name) if (proto == null) container.jClass.getField(name)
else if (!proto.signature.hasField()) null else if (!proto.signature.hasField()) null
else container.findFieldBySignature(proto.proto, proto.signature.getField(), proto.nameResolver) else container.findFieldBySignature(proto.proto, proto.signature.getField(), proto.nameResolver)
} }
open val getter: Method? by ReflectProperties.lazySoft { open val javaGetter: Method? by ReflectProperties.lazySoft {
val proto = protoData val proto = protoData
if (proto == null || !proto.signature.hasGetter()) null if (proto == null || !proto.signature.hasGetter()) null
else container.findMethodBySignature(proto.signature.getGetter(), proto.nameResolver, else container.findMethodBySignature(proto.signature.getGetter(), proto.nameResolver,
descriptor.getGetter()?.getVisibility()?.let { Visibilities.isPrivate(it) } ?: false) descriptor.getGetter()?.getVisibility()?.let { Visibilities.isPrivate(it) } ?: false)
} }
open val setter: Method? by ReflectProperties.lazySoft { open val javaSetter: Method? by ReflectProperties.lazySoft {
val proto = protoData val proto = protoData
if (proto == null || !proto.signature.hasSetter()) null if (proto == null || !proto.signature.hasSetter()) null
else container.findMethodBySignature(proto.signature.getSetter(), proto.nameResolver, else container.findMethodBySignature(proto.signature.getSetter(), proto.nameResolver,
@@ -28,12 +28,12 @@ open class KProperty0Impl<out R> : DescriptorBasedProperty, KProperty0<R>, KProp
override val name: String get() = descriptor.getName().asString() override val name: String get() = descriptor.getName().asString()
override val getter: Method get() = super<DescriptorBasedProperty>.getter!! override val javaGetter: Method get() = super.javaGetter!!
override fun get(): R { override fun get(): R {
try { try {
@suppress("UNCHECKED_CAST") @suppress("UNCHECKED_CAST")
return getter.invoke(null) as R return javaGetter.invoke(null) as R
} }
catch (e: IllegalAccessException) { catch (e: IllegalAccessException) {
throw IllegalPropertyAccessException(e) throw IllegalPropertyAccessException(e)
@@ -44,11 +44,11 @@ open class KProperty0Impl<out R> : DescriptorBasedProperty, KProperty0<R>, KProp
open class KMutableProperty0Impl<R> : KProperty0Impl<R>, KMutableProperty0<R>, KMutablePropertyImpl<R> { open class KMutableProperty0Impl<R> : KProperty0Impl<R>, KMutableProperty0<R>, KMutablePropertyImpl<R> {
constructor(container: KCallableContainerImpl, name: String, signature: String) : super(container, name, signature) constructor(container: KCallableContainerImpl, name: String, signature: String) : super(container, name, signature)
override val setter: Method get() = super<KProperty0Impl>.setter!! override val javaSetter: Method get() = super.javaSetter!!
override fun set(value: R) { override fun set(value: R) {
try { try {
setter.invoke(null, value) javaSetter.invoke(null, value)
} }
catch (e: IllegalAccessException) { catch (e: IllegalAccessException) {
throw IllegalPropertyAccessException(e) throw IllegalPropertyAccessException(e)
@@ -35,8 +35,8 @@ open class KProperty1Impl<T, out R> : DescriptorBasedProperty, KProperty1<T, R>,
@suppress("UNCHECKED_CAST") @suppress("UNCHECKED_CAST")
override fun get(receiver: T): R { override fun get(receiver: T): R {
try { try {
val getter = getter ?: val getter = javaGetter ?:
return field!!.get(receiver) as R return javaField!!.get(receiver) as R
if (Modifier.isStatic(getter.getModifiers())) { if (Modifier.isStatic(getter.getModifiers())) {
// Workaround the case of platformStatic property in object, getter of which doesn't take a receiver // Workaround the case of platformStatic property in object, getter of which doesn't take a receiver
@@ -63,8 +63,8 @@ open class KMutableProperty1Impl<T, R> : KProperty1Impl<T, R>, KMutableProperty1
override fun set(receiver: T, value: R) { override fun set(receiver: T, value: R) {
try { try {
val setter = setter ?: val setter = javaSetter ?:
return field!!.set(receiver, value) return javaField!!.set(receiver, value)
if (Modifier.isStatic(setter.getModifiers())) { if (Modifier.isStatic(setter.getModifiers())) {
// Workaround the case of platformStatic property in object, setter of which doesn't take a receiver // Workaround the case of platformStatic property in object, setter of which doesn't take a receiver
@@ -30,14 +30,14 @@ open class KProperty2Impl<D, E, out R> : DescriptorBasedProperty, KProperty2<D,
override val name: String get() = descriptor.getName().asString() override val name: String get() = descriptor.getName().asString()
override val getter: Method get() = super<DescriptorBasedProperty>.getter!! override val javaGetter: Method get() = super.javaGetter!!
override val field: Field? get() = null override val javaField: Field? get() = null
override fun get(receiver1: D, receiver2: E): R { override fun get(receiver1: D, receiver2: E): R {
try { try {
@suppress("UNCHECKED_CAST") @suppress("UNCHECKED_CAST")
return getter.invoke(receiver1, receiver2) as R return javaGetter.invoke(receiver1, receiver2) as R
} }
catch (e: IllegalAccessException) { catch (e: IllegalAccessException) {
throw IllegalPropertyAccessException(e) throw IllegalPropertyAccessException(e)
@@ -51,11 +51,11 @@ class KMutableProperty2Impl<D, E, R> : KProperty2Impl<D, E, R>, KMutableProperty
constructor(container: KClassImpl<D>, descriptor: PropertyDescriptor) : super(container, descriptor) constructor(container: KClassImpl<D>, descriptor: PropertyDescriptor) : super(container, descriptor)
override val setter: Method get() = super<KProperty2Impl>.setter!! override val javaSetter: Method get() = super.javaSetter!!
override fun set(receiver1: D, receiver2: E, value: R) { override fun set(receiver1: D, receiver2: E, value: R) {
try { try {
setter.invoke(receiver1, receiver2, value) javaSetter.invoke(receiver1, receiver2, value)
} }
catch (e: IllegalAccessException) { catch (e: IllegalAccessException) {
throw IllegalPropertyAccessException(e) throw IllegalPropertyAccessException(e)
@@ -20,12 +20,12 @@ import java.lang.reflect.*
import kotlin.reflect.* import kotlin.reflect.*
interface KPropertyImpl<out R> : KProperty<R>, KCallableImpl<R> { interface KPropertyImpl<out R> : KProperty<R>, KCallableImpl<R> {
val field: Field? val javaField: Field?
val getter: Method? val javaGetter: Method?
} }
interface KMutablePropertyImpl<R> : KMutableProperty<R>, KPropertyImpl<R> { interface KMutablePropertyImpl<R> : KMutableProperty<R>, KPropertyImpl<R> {
val setter: Method? val javaSetter: Method?
} }
@@ -46,21 +46,21 @@ public val KPackage.javaFacade: Class<*>
* or `null` if the property has no backing field. * or `null` if the property has no backing field.
*/ */
public val KProperty<*>.javaField: Field? public val KProperty<*>.javaField: Field?
get() = (this as KPropertyImpl<*>).field get() = (this as KPropertyImpl<*>).javaField
/** /**
* Returns a Java [Method] instance corresponding to the getter of the given property, * Returns a Java [Method] instance corresponding to the getter of the given property,
* or `null` if the property has no getter, for example in case of a simple private `val` in a class. * or `null` if the property has no getter, for example in case of a simple private `val` in a class.
*/ */
public val KProperty<*>.javaGetter: Method? public val KProperty<*>.javaGetter: Method?
get() = (this as? KPropertyImpl<*>)?.getter get() = (this as? KPropertyImpl<*>)?.javaGetter
/** /**
* Returns a Java [Method] instance corresponding to the setter of the given mutable property, * Returns a Java [Method] instance corresponding to the setter of the given mutable property,
* or `null` if the property has no setter, for example in case of a simple private `var` in a class. * or `null` if the property has no setter, for example in case of a simple private `var` in a class.
*/ */
public val KMutableProperty<*>.javaSetter: Method? public val KMutableProperty<*>.javaSetter: Method?
get() = (this as? KMutablePropertyImpl<*>)?.setter get() = (this as? KMutablePropertyImpl<*>)?.javaSetter
@@ -99,6 +99,6 @@ public val Field.kotlin: KProperty<*>?
// TODO: optimize (search by name) // TODO: optimize (search by name)
return clazz.properties.firstOrNull { p: KProperty<*> -> return clazz.properties.firstOrNull { p: KProperty<*> ->
(p as KPropertyImpl<*>).field == this (p as KPropertyImpl<*>).javaField == this
} }
} }
@@ -35,12 +35,12 @@ public var <R> KProperty<R>.accessible: Boolean
get() { get() {
return when (this) { return when (this) {
is KMutableProperty1Impl<*, R> -> is KMutableProperty1Impl<*, R> ->
field?.isAccessible() ?: true && javaField?.isAccessible() ?: true &&
getter?.isAccessible() ?: true && javaGetter?.isAccessible() ?: true &&
setter?.isAccessible() ?: true javaSetter?.isAccessible() ?: true
is KProperty1Impl<*, R> -> is KProperty1Impl<*, R> ->
field?.isAccessible() ?: true && javaField?.isAccessible() ?: true &&
getter?.isAccessible() ?: true javaGetter?.isAccessible() ?: true
else -> { else -> {
// Non-member properties always have public visibility on JVM, thus accessible has no effect on them // Non-member properties always have public visibility on JVM, thus accessible has no effect on them
true true
@@ -50,13 +50,13 @@ public var <R> KProperty<R>.accessible: Boolean
set(value) { set(value) {
when (this) { when (this) {
is KMutableProperty1Impl<*, R> -> { is KMutableProperty1Impl<*, R> -> {
field?.setAccessible(value) javaField?.setAccessible(value)
getter?.setAccessible(value) javaGetter?.setAccessible(value)
setter?.setAccessible(value) javaSetter?.setAccessible(value)
} }
is KProperty1Impl<*, R> -> { is KProperty1Impl<*, R> -> {
field?.setAccessible(value) javaField?.setAccessible(value)
getter?.setAccessible(value) javaGetter?.setAccessible(value)
} }
} }
} }