| annotation class ValueContainer | |
| @ValueContainer | |
| data class StringProperty(var v: String) { | |
| fun assign(v: String): <!DECLARATION_ERROR_ASSIGN_METHOD_SHOULD_RETURN_UNIT!>String<!> { | |
| this.v = v | |
| return "" | |
| } | |
| fun assign(v: StringProperty): <!DECLARATION_ERROR_ASSIGN_METHOD_SHOULD_RETURN_UNIT!>String<!> { | |
| this.v = v.get() | |
| return "" | |
| } | |
| fun get(): String = v | |
| } | |
| fun StringProperty.assign(v: Int): <!DECLARATION_ERROR_ASSIGN_METHOD_SHOULD_RETURN_UNIT!>String<!> { | |
| this.v = "OK" | |
| return "" | |
| } | |
| data class Task(val input: StringProperty) | |
| fun `should report an error for assign method return type on assignment for annotated class`() { | |
| val task = Task(StringProperty("Fail")) | |
| task.input <!CALL_ERROR_ASSIGN_METHOD_SHOULD_RETURN_UNIT!>=<!> "42" | |
| task.input <!CALL_ERROR_ASSIGN_METHOD_SHOULD_RETURN_UNIT!>=<!> 42 | |
| } | |
| fun `should not report an error for assign return type for unannotated class`() { | |
| data class IntProperty(var v: Int) | |
| fun IntProperty.assign(v: Int): String = "OK" | |
| data class IntTask(val input: IntProperty) | |
| val task = IntTask(IntProperty(42)) | |
| task.<!VAL_REASSIGNMENT!>input<!> <!ASSIGNMENT_TYPE_MISMATCH!>=<!> 42 | |
| } |