Files

45 lines
1.2 KiB
Kotlin
Vendored

// !DIAGNOSTICS: -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE
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(): String = v
}
fun `should not work with local val for different type`() {
val property = StringProperty("OK")
<!VAL_REASSIGNMENT!>property<!> = <!ASSIGNMENT_TYPE_MISMATCH!>"Fail"<!>
}
fun `should not work with local val for same type`() {
val property = StringProperty("OK")
<!VAL_REASSIGNMENT!>property<!> = StringProperty("Fail")
}
fun `should not work with local var for different type`() {
var property = StringProperty("OK")
property = <!ASSIGNMENT_TYPE_MISMATCH!>"Fail"<!>
}
fun `should work with local var for same type`() {
var property = StringProperty("OK")
property = StringProperty("Fail")
}
fun `should not work with method parameters`() {
fun m1(property: StringProperty): Unit {
<!VAL_REASSIGNMENT!>property<!> = <!ASSIGNMENT_TYPE_MISMATCH!>"Fail"<!>
}
fun m2(property: StringProperty): Unit {
<!VAL_REASSIGNMENT!>property<!> = StringProperty("Fail")
}
}