aboutsummaryrefslogtreecommitdiff
path: root/tests/run/generic/Enum.scala
blob: dbdbfe8ebe021a457f7baf98c098b0102bf77c9d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package generic

import Shapes.Singleton

trait Enum {
  def enumTag: Int
}

trait FiniteEnum extends Enum

abstract class EnumValues[E <: Enum](numVals: Int) {
  private var myValues = new Array[AnyRef](numVals)

  def registerEnumValue(v: E) =
    myValues(v.enumTag) = v

  def value: IndexedSeq[E] = (myValues: IndexedSeq[AnyRef]).asInstanceOf[IndexedSeq[E]]
}