ceylon/ceylon-spec — Issue #134: variance checking and member classes
Author: gavinking
Created: 2012-01-19 03:02:28+00:00
State: open
Labels: bug, high priority

Bug spotted by Ross:

```
abstract class Co(T t) {
shared class Foo() {
shared T get() { return t; }
}
shared void bar(Foo foo) {
T t = foo.get();
}
}
```

is a short form of:

```
abstract class Co(T t) {
shared class Foo() {
shared T get() { return t; }
}
shared void bar(Co.Foo foo) {
T t = foo.get();
}
}
```

In either case, the compiler should detect the use of `T` in a contravariant location (implicitly or explicitly).