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
}
open val field: Field? by ReflectProperties.lazySoft {
open val javaField: Field? by ReflectProperties.lazySoft {
val proto = protoData
if (proto == null) container.jClass.getField(name)
else if (!proto.signature.hasField()) null
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
if (proto == null || !proto.signature.hasGetter()) null
else container.findMethodBySignature(proto.signature.getGetter(), proto.nameResolver,
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
if (proto == null || !proto.signature.hasSetter()) null
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 getter: Method get() = super<DescriptorBasedProperty>.getter!!
override val javaGetter: Method get() = super.javaGetter!!
override fun get(): R {
try {
@suppress("UNCHECKED_CAST")
return getter.invoke(null) as R
return javaGetter.invoke(null) as R
}
catch (e: IllegalAccessException) {
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> {
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) {
try {
setter.invoke(null, value)
javaSetter.invoke(null, value)
}
catch (e: IllegalAccessException) {
throw IllegalPropertyAccessException(e)
@@ -35,8 +35,8 @@ open class KProperty1Impl<T, out R> : DescriptorBasedProperty, KProperty1<T, R>,
@suppress("UNCHECKED_CAST")
override fun get(receiver: T): R {
try {
val getter = getter ?:
return field!!.get(receiver) as R
val getter = javaGetter ?:
return javaField!!.get(receiver) as R
if (Modifier.isStatic(getter.getModifiers())) {
// 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) {
try {
val setter = setter ?:
return field!!.set(receiver, value)
val setter = javaSetter ?:
return javaField!!.set(receiver, value)
if (Modifier.isStatic(setter.getModifiers())) {
// 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 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 {
try {
@suppress("UNCHECKED_CAST")
return getter.invoke(receiver1, receiver2) as R
return javaGetter.invoke(receiver1, receiver2) as R
}
catch (e: IllegalAccessException) {
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)
override val setter: Method get() = super<KProperty2Impl>.setter!!
override val javaSetter: Method get() = super.javaSetter!!
override fun set(receiver1: D, receiver2: E, value: R) {
try {
setter.invoke(receiver1, receiver2, value)
javaSetter.invoke(receiver1, receiver2, value)
}
catch (e: IllegalAccessException) {
throw IllegalPropertyAccessException(e)
@@ -20,12 +20,12 @@ import java.lang.reflect.*
import kotlin.reflect.*
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> {
val setter: Method?
val javaSetter: Method?
}
@@ -46,21 +46,21 @@ public val KPackage.javaFacade: Class<*>
* or `null` if the property has no backing 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,
* 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?
get() = (this as? KPropertyImpl<*>)?.getter
get() = (this as? KPropertyImpl<*>)?.javaGetter
/**
* 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.
*/
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)
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() {
return when (this) {
is KMutableProperty1Impl<*, R> ->
field?.isAccessible() ?: true &&
getter?.isAccessible() ?: true &&
setter?.isAccessible() ?: true
javaField?.isAccessible() ?: true &&
javaGetter?.isAccessible() ?: true &&
javaSetter?.isAccessible() ?: true
is KProperty1Impl<*, R> ->
field?.isAccessible() ?: true &&
getter?.isAccessible() ?: true
javaField?.isAccessible() ?: true &&
javaGetter?.isAccessible() ?: true
else -> {
// Non-member properties always have public visibility on JVM, thus accessible has no effect on them
true
@@ -50,13 +50,13 @@ public var <R> KProperty<R>.accessible: Boolean
set(value) {
when (this) {
is KMutableProperty1Impl<*, R> -> {
field?.setAccessible(value)
getter?.setAccessible(value)
setter?.setAccessible(value)
javaField?.setAccessible(value)
javaGetter?.setAccessible(value)
javaSetter?.setAccessible(value)
}
is KProperty1Impl<*, R> -> {
field?.setAccessible(value)
getter?.setAccessible(value)
javaField?.setAccessible(value)
javaGetter?.setAccessible(value)
}
}
}