Files
kotlin-fork/plugins/assign-plugin/testData/codegen/varBehaviour.kt
T

66 lines
1.8 KiB
Kotlin
Vendored

annotation class ValueContainer
@ValueContainer
data class StringProperty(var v: String) {
fun assign(v: String) {
this.v = v
}
fun assign(v: StringProperty) {
this.v = v.get()
}
fun get() = v
}
data class Task(var input: StringProperty)
fun `test local var reference and value`(): String {
var property = StringProperty("OK")
var originalProperty = property
property = StringProperty("Fail")
return when {
originalProperty.get() != "OK" -> "Fail: ${originalProperty.get()}"
originalProperty == property -> "Fail: originalProperty == property"
else -> "OK"
}
}
fun `test class property var reference and value`(): String {
val task = Task(StringProperty("OK"))
val originalProperty = task.input
task.input = StringProperty("Fail")
return when {
originalProperty.get() != "OK" -> "Fail: ${originalProperty.get()}"
originalProperty == task.input -> "Fail: originalProperty == task.input"
else -> "OK"
}
}
fun `test class property var reference and value with apply`(): String {
val task = Task(StringProperty("OK"))
val originalProperty = task.input
task.apply {
input = StringProperty("Fail")
}
return when {
originalProperty.get() != "OK" -> "Fail: ${originalProperty.get()}"
originalProperty == task.input -> "Fail: originalProperty == task.input"
else -> "OK"
}
}
fun box(): String {
var result = `test local var reference and value`()
if (result != "OK") return result
result = `test class property var reference and value`()
if (result != "OK") return result
result = `test class property var reference and value with apply`()
if (result != "OK") return result
return "OK"
}