As seen here, the following code should be rejected by the typechecker:
class Lizt<out Item>() {
value list = ArrayList<Item>();
shared Item add<in InItem>(InItem i)
given InItem of Item {
list.add(i of Item);
return i of Item;
}
}
class Person() {}
class Customer() extends Person(){}
shared void run2() {
Lizt<Person> people = Lizt<Customer>();
people.add<Person>(Person()); //Oops!!
}
The enumerated bound is a contravariant location!
Note that we do do the right check for upper bounds.
As seen here, the following code should be rejected by the typechecker:
The enumerated bound is a contravariant location!
Note that we do do the right check for upper bounds.