I'm trying the following with Scala 2.10.0-M1:
trait Container {
type X
}
class Test[C <: Container](val c: C) {
def foo(x: c.X): C#X = x // this compiles fine
def bar(x: C#X): c.X = x // this does not compile
}
The problem is the same when using this form:
def bar[C <: Container](c: C)(x: C#X): c.X = x
I don't really see why foo
compiles while bar
does not.
I believe that c.X
and C#X
should be the same here.
Also, I don't understand the error message:
[error] found : x.type (with underlying type C#X)
[error] required: Test.this.c.X
[error] possible cause: missing arguments for method or constructor
[error] def bar(x: C#X): c.X = x // this does not compile
Any idea?