summaryrefslogtreecommitdiff
path: root/test/files/pos/t1381-new.scala
blob: 57e0f31fba57e912e67468e8a6d35496925dd2df (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
import scala.reflect.runtime.universe._

class D[V <: Variable]

class ID[V<:IV] extends D[V] {
  type E = V#ValueType
  def index(value:E) : Int = 0
  // Comment this out to eliminate crash.  Or see below
  def index(values:E*) : Iterable[Int] = null
}

abstract class Variable {
  type VT <: Variable
  def d : D[VT] = null
}

abstract class PV[T](initval:T) extends Variable  {
  type VT <: PV[T]
  type ValueType = T
}

trait IV extends Variable  {
  type ValueType
}

abstract class EV[T](initval:T) extends PV[T](initval) with IV {
  type VT <: EV[T]
  override def d : ID[VT] = null
  // Comment this out to eliminate crash
  protected var indx = d.index(initval)
}