Simplistic type inference:
KT-258 Support equality constraints in type inference KT-399 Type argument inference not implemented for CALL_EXPRESSION
This commit is contained in:
@@ -0,0 +1,10 @@
|
||||
// KT-258 Support equality constraints in type inference
|
||||
|
||||
import java.util.*
|
||||
|
||||
fun test() {
|
||||
val attributes : HashMap<String, String> = HashMap()
|
||||
attributes["href"] = "1" // inference fails, but it shouldn't
|
||||
}
|
||||
|
||||
fun <K, V> java.util.Map<K, V>.set(key : K, value : V) {}//= this.put(key, value)
|
||||
@@ -0,0 +1,18 @@
|
||||
class C<T>() {
|
||||
fun foo() : T <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>{}<!>
|
||||
}
|
||||
|
||||
fun foo(c: C<Int>) {}
|
||||
fun bar<T>() : C<T> <!NO_RETURN_IN_FUNCTION_WITH_BLOCK_BODY!>{}<!>
|
||||
|
||||
fun main(args : Array<String>) {
|
||||
val a : C<Int> = C();
|
||||
val x : C<in String> = C()
|
||||
val y : C<out String> = C()
|
||||
val z : C<*> = C()
|
||||
|
||||
val ba : C<Int> = bar();
|
||||
val bx : C<in String> = bar()
|
||||
val by : C<out String> = bar()
|
||||
val bz : C<*> = bar()
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
// KT-399 Type argument inference not implemented for CALL_EXPRESSION
|
||||
|
||||
fun <T> getSameTypeChecker(obj: T) : Function1<Any,Boolean> {
|
||||
return { (a : Any) => a is T }
|
||||
}
|
||||
|
||||
fun box() : String {
|
||||
if(getSameTypeChecker<String>("lala")(10)) return "fail"
|
||||
if(!getSameTypeChecker<String>("mama")("lala")) return "fail"
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user