KT-3150 Kotlin m4 don't recognize function literals

#KT-3150 fixed

 added check for PLACEHOLDER_FUNCTION_TYPE to constraint system
This commit is contained in:
Svetlana Isakova
2012-12-19 19:50:44 +04:00
parent b467638633
commit 972b234db6
8 changed files with 54 additions and 14 deletions
@@ -8,7 +8,7 @@ public inline fun <T: Closeable, R> T.use1(block: (T)-> R) : R {
}
fun main(args: Array<String>) {
C().<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>use1<!> {
C().use1 {
w -> // ERROR here
<!UNRESOLVED_REFERENCE!>x<!>
}
@@ -11,8 +11,8 @@ public inline fun <T: Closeable, R> T.use(block: (t: T)-> R) : R {
}
fun test() {
C().<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>use<!> {
C().use {
it.close()
<!UNRESOLVED_REFERENCE!>x<!>
}
}
}
@@ -11,9 +11,9 @@ public inline fun <T: Closeable, R> use(t: T, block: T.(T)-> R) : R {
}
fun test() {
<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>use<!>(C()) {
use(C()) {
this.close()
it.close()
<!UNRESOLVED_REFERENCE!>xx<!>
}
}
}
@@ -11,8 +11,8 @@ public inline fun <T: Closeable, R> T.use(block: T.()-> R) : R {
}
fun test() {
C().<!TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>use<!> {
C().use {
this.close()
<!UNRESOLVED_REFERENCE!>x<!>
}
}
}
@@ -0,0 +1,24 @@
package aa
class Some<T>
class SomeTemplate {
fun <T> query(some: Class<T>) = some
// Uncomment this to get CANNOT_COMPLETE_RESOLVE error
fun <T> query1(some: Class<T>) = some
fun <T> query1(some: Some<T>) = some
}
fun SomeTemplate.query(f: (i: Int) -> Unit) = f
fun SomeTemplate.query1(f: (i: Int) -> Unit) = f
fun test() {
val mapperFunction = {(i: Int)-> }
SomeTemplate().query(mapperFunction)
// TYPE_MISMATCH: Required Class<[ERROR: CANT_INFER]>, Found (jet.Int) -> Unit
SomeTemplate().query {(i: Int)-> }
SomeTemplate().query1 {(i: Int)-> }
}