Open
Description
Compiler version
3.2.2
Minimized code
case class A() {}
case class B(a: {*} A) {}
case class C(a: {*} A) {
var b: {a} B = null
def setB(b: {a} B): Unit = this.b = b
}
val a: {*} A = new A()
val b: {a} B = new B(a)
val c = new C(a)
c.setB(b) // if change this line to `c.b = b` then the code will pass
Output
[error] -- [E007] Type Mismatch Error: ...
[error] 60 | c.setB(b)
[error] | ^
[error] | Found: (b : {a} B)
[error] | Required: B
[error] |
[error] | longer explanation available when compiling with `-explain`
Expectation
I expect the code to pass.