Closed
Description
As minimized by @nicolasstucki:
object HelloWorld extends js.JSApp {
def assertEquals(expect: Int, actual: Int, field: String): Unit =
assert(expect == actual, s"Expected $field to be <$expect> but was <$actual>")
def main() {
val b = new B { }
val y = new b.Y
val z = new y.Z
assertEquals(1, b.a, "b.a")
assertEquals(1, z.z1, "z.z1")
assertEquals(2, y.y, "y.y")
assertEquals(2, z.z2, "z.z2")
// assertEquals(2, z.z3, "z.z3") // for variant
}
}
trait A {
val a: Int = 1
class X {
def x: Int = a
}
}
trait B extends A {
class Y {
def y: Int = 2
class Z extends X {
def z1: Int = a
def z2: Int = x
}
}
}
//// Variant that also fails
//trait B extends A {
// class Y {
// def y: Int = 2
// class Z extends X {
// def z1: Int = a
// def z3: Int = y
// }
// }
//}