Type checking procedure simplified (dramatically!)

This commit is contained in:
Andrey Breslav
2011-11-09 15:22:25 +03:00
parent a4768eda98
commit df79fa2f3d
2 changed files with 134 additions and 122 deletions
@@ -0,0 +1,21 @@
class Point() {
}
class G<T>() {}
fun f<T>(expression : T) : G<out T> = G<T>
fun foo() : G<Point> {
val p = Point()
return <!TYPE_MISMATCH!>f<Point>(p)<!>
}
class Out<out T>() {}
fun fout<T>(expression : T) : Out<out T> = Out<T>
fun fooout() : Out<Point> {
val p = Point();
return fout<Point>(p);
}