| // 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") |
| } |
| } |