Update compiler tests to use KProperty instead of PropertyMetadata

This commit is contained in:
Alexander Udalov
2015-10-13 14:02:29 +03:00
parent a6846b3967
commit 51bf68ce27
68 changed files with 265 additions and 139 deletions
@@ -1,8 +1,10 @@
// This test was adapted from compiler/testData/codegen/boxWithStdlib/callableReference/property/.
package foo
import kotlin.reflect.KProperty
object NumberDecrypter {
fun getValue(instance: Any?, data: PropertyMetadata) = when (data.name) {
fun getValue(instance: Any?, data: KProperty<*>) = when (data.name) {
"four" -> 4
"two" -> 2
else -> throw Exception()
@@ -1,14 +1,16 @@
// This test was adapted from compiler/testData/codegen/boxWithStdlib/callableReference/property/.
package foo
import kotlin.reflect.KProperty
object Delegate {
var value = "lol"
fun getValue(instance: Any?, data: PropertyMetadata): String {
fun getValue(instance: Any?, data: KProperty<*>): String {
return value
}
fun setValue(instance: Any?, data: PropertyMetadata, newValue: String) {
fun setValue(instance: Any?, data: KProperty<*>, newValue: String) {
value = newValue
}
}
@@ -1,5 +1,7 @@
package foo
import kotlin.reflect.KProperty
class State(var realValue: Int)
fun format(event: String, property: String, value: Int): String
@@ -8,12 +10,12 @@ fun format(event: String, property: String, value: Int): String
object LoggerDelegate {
var log = ""
fun getValue(state: State, desc: PropertyMetadata): Int {
fun getValue(state: State, desc: KProperty<*>): Int {
log += format("get", desc.name, state.realValue)
return state.realValue
}
fun setValue(state: State, desc: PropertyMetadata, value: Int) {
fun setValue(state: State, desc: KProperty<*>, value: Int) {
log += format("set", desc.name, value)
state.realValue = value
}
@@ -36,4 +38,4 @@ fun box(): String {
assertEquals(expectedLog, LoggerDelegate.log)
return "OK"
}
}
@@ -1,9 +1,11 @@
package foo
import kotlin.reflect.KProperty
class Delegate {
var inner = 1
fun getValue(t: Any?, p: PropertyMetadata): Int = inner
fun setValue(t: Any?, p: PropertyMetadata, i: Int) {
fun getValue(t: Any?, p: KProperty<*>): Int = inner
fun setValue(t: Any?, p: KProperty<*>, i: Int) {
inner = i
}
}
@@ -1,9 +1,11 @@
package foo
import kotlin.reflect.KProperty
class Delegate {
var inner = 1
fun getValue(t: Any?, p: PropertyMetadata): Int = inner
fun setValue(t: Any?, p: PropertyMetadata, i: Int) {
fun getValue(t: Any?, p: KProperty<*>): Int = inner
fun setValue(t: Any?, p: KProperty<*>, i: Int) {
inner = i
}
}
@@ -1,9 +1,11 @@
package foo
import kotlin.reflect.KProperty
class Delegate {
var inner = 1
fun getValue(t: Any?, p: PropertyMetadata): Int = inner
fun setValue(t: Any?, p: PropertyMetadata, i: Int) {
fun getValue(t: Any?, p: KProperty<*>): Int = inner
fun setValue(t: Any?, p: KProperty<*>, i: Int) {
inner = i
}
}
@@ -1,9 +1,11 @@
package foo
import kotlin.reflect.KProperty
class Delegate {
}
fun Delegate.getValue(t: Any?, p: PropertyMetadata): Int = 1
fun Delegate.getValue(t: Any?, p: KProperty<*>): Int = 1
class A {
val prop: Int by Delegate()
@@ -1,14 +1,16 @@
package foo
import kotlin.reflect.KProperty
interface WithName {
var name: String
}
class GetPropertyName() {
fun getValue(withName: WithName, property: PropertyMetadata): String {
fun getValue(withName: WithName, property: KProperty<*>): String {
return withName.name + ":" + property.name;
}
fun setValue(withName: WithName, property: PropertyMetadata, value: String) {
fun setValue(withName: WithName, property: KProperty<*>, value: String) {
withName.name = value + ":" + property.name
}
}
@@ -1,11 +1,13 @@
package foo
import kotlin.reflect.KProperty
class Delegate {
var inner = 1
fun getValue(t: Any?, p: PropertyMetadata): Int = inner
fun getValue(t: Any?, p: KProperty<*>): Int = inner
}
fun Delegate.setValue(t: Any?, p: PropertyMetadata, i: Int) {
fun Delegate.setValue(t: Any?, p: KProperty<*>, i: Int) {
inner = i
}
+4 -2
View File
@@ -1,14 +1,16 @@
package foo
import kotlin.reflect.KProperty
interface WithNumber {
var number: Int
}
class IncNumber(val inc: Int) {
fun getValue(withNumber: WithNumber, property: PropertyMetadata): Int {
fun getValue(withNumber: WithNumber, property: KProperty<*>): Int {
return withNumber.number + inc;
}
fun setValue(withNumber: WithNumber, property: PropertyMetadata, value: Int) {
fun setValue(withNumber: WithNumber, property: KProperty<*>, value: Int) {
withNumber.number = value;
}
}
@@ -1,7 +1,9 @@
package foo
import kotlin.reflect.KProperty
class Delegate {
fun getValue(t: Any?, p: PropertyMetadata): Int = 1
fun getValue(t: Any?, p: KProperty<*>): Int = 1
}
val prop: Int by Delegate()
@@ -1,9 +1,11 @@
package foo
import kotlin.reflect.KProperty
class Delegate {
var inner = 1
fun getValue(t: Any?, p: PropertyMetadata): Int = inner
fun setValue(t: Any?, p: PropertyMetadata, i: Int) {
fun getValue(t: Any?, p: KProperty<*>): Int = inner
fun setValue(t: Any?, p: KProperty<*>, i: Int) {
inner = i
}
}
@@ -1,18 +1,20 @@
package foo
import kotlin.reflect.KProperty
interface Getter<T> {
fun get(): T
}
class Delegate<T>(val getter: Getter<T>) {
var t: T? = null
fun getValue(obj: Any, property: PropertyMetadata): T {
fun getValue(obj: Any, property: KProperty<*>): T {
if (t != null) {
return t!!
}
return getter.get()
}
fun setValue(obj: Any, property: PropertyMetadata, value: T) {
fun setValue(obj: Any, property: KProperty<*>, value: T) {
t = value
}
}
@@ -1,5 +1,7 @@
package foo
import kotlin.reflect.KProperty
class State(var value: Int)
interface Base {
@@ -7,9 +9,9 @@ interface Base {
}
class Delegate(val multiplier: Int) {
fun getValue(state: State, desc: PropertyMetadata): Int = multiplier * state.value
fun getValue(state: State, desc: KProperty<*>): Int = multiplier * state.value
fun setValue(state: State, desc: PropertyMetadata, value: Int) {
fun setValue(state: State, desc: KProperty<*>, value: Int) {
state.value = value / multiplier
}
@@ -37,4 +39,4 @@ fun box(): String {
assertEquals(10, d.getValueMultiplied(state))
return "OK"
}
}