aboutsummaryrefslogtreecommitdiff
path: root/tests/run/traitParams.scala
blob: 82c176461c24050e7288b6150b6e6eb8f8a0bb18 (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
28
29
30
31
32
object State {
  var s: Int = 0
}

trait T(x: Int, val y: Int) {
  def f = x
}

trait U extends T {
  State.s += 1
  override def f = super.f + y
}
trait U2(a: Any) extends T {
  def d = a // okay
  val v = a // okay
  a // used to crash
}

import State._
class C(x: Int) extends U with T(x, x * x + s)
class C2(x: Int) extends T(x, x * x + s) with U

class D extends C(10) with T
class D2 extends C2(10) with T

object Test {
  def main(args: Array[String]): Unit = {
    assert(new D().f == 110)
    assert(new D2().f == 111)
  }
}