aboutsummaryrefslogtreecommitdiff
path: root/tests/untried/neg/t2796.scala
blob: 6e1ac852c3284b581e44785ff243a71b601f97cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
trait Base {
  val abstractVal: String
  final val useAbstractVal = abstractVal
}

trait T1 extends {
  val abstractVal = "T1.abstractVal" // warn
} with Base

trait T2 extends {
  type X = Int                       // warn
} with Base

class C1 extends {
  val abstractVal = "C1.abstractVal" // okay
} with Base

object Test {
  def main(args: Array[String]): Unit = {
    assert(new C1 ().useAbstractVal == "C1.abstractVal")
    // This currently fails. a more ambitious approach to this ticket would add $earlyinit$
    // to traits and call it from the right places in the right order.
    //
    // For now, we'll just issue a warning.
    assert(new T1 {}.useAbstractVal == "T1.abstractVal")
  }
}