KT-235 Illegal assignment return type

This commit is contained in:
svtk
2011-11-10 22:13:52 +04:00
parent 89b4faa6fe
commit 25d26fe6fd
4 changed files with 75 additions and 14 deletions
@@ -185,7 +185,7 @@ fun testFunctionLiterals() {
val endsWithReAssignment = { () : Int =>
var x = 1
<!EXPECTED_TYPE_MISMATCH!>x += 333<!>
<!ASSIGNMENT_TYPE_MISMATCH!>x += 333<!>
}
val endsWithFunDeclaration : fun() : String = {
@@ -0,0 +1,49 @@
//KT-235 Illegal assignment return type
namespace kt235
fun main(args: Array<String>) {
val array = MyArray()
val f = { (): String =>
<!EXPECTED_TYPE_MISMATCH!>array[2] = 23<!> //error: Type mismatch: inferred type is Int (!!!) but String was expected
}
val g = {(): String =>
var x = 1
<!EXPECTED_TYPE_MISMATCH!>x += 2<!> //no error, but it should be here
}
val h = {(): String =>
var x = 1
<!EXPECTED_TYPE_MISMATCH!>x = 2<!> //the same
}
val array1 = MyArray1()
val x = { (): String =>
<!EXPECTED_TYPE_MISMATCH!>array1[2] = 23<!>
}
val fi = { (): Int =>
<!ASSIGNMENT_TYPE_MISMATCH!>array[2] = 23<!>
}
val gi = {(): Int =>
var x = 1
<!ASSIGNMENT_TYPE_MISMATCH!>x += 21<!>
}
var m: MyNumber = MyNumber()
val a = { (): MyNumber =>
m++
}
}
class MyArray() {
fun get(i: Int): Int = 1
fun set(i: Int, value: Int): Int = 1
}
class MyArray1() {
fun get(i: Int): Int = 1
fun set(i: Int, value: Int) {}
}
class MyNumber() {
fun inc(): MyNumber = MyNumber()
}