diff options
Diffstat (limited to 'tests/untried/pos/typerep_pos.scala')
-rw-r--r-- | tests/untried/pos/typerep_pos.scala | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/untried/pos/typerep_pos.scala b/tests/untried/pos/typerep_pos.scala new file mode 100644 index 000000000..ebb643d32 --- /dev/null +++ b/tests/untried/pos/typerep_pos.scala @@ -0,0 +1,21 @@ +object typerep extends App { + class TypeRep[T] {} + case object IntRep extends TypeRep[Int] { + override def toString = "Int" + } + case object BooleanRep extends TypeRep[Boolean] { + override def toString = "Boolean" + } + case class ListRep[T](elemrep: TypeRep[T]) extends TypeRep[List[T]] { + override def toString = "List" + } + + implicit def intRep: TypeRep[Int] = IntRep + implicit def booleanRep: TypeRep[Boolean] = BooleanRep + implicit def listRep[T](implicit elemrep: TypeRep[T]): TypeRep[List[T]] = ListRep(elemrep) + + def getType[T](x: T)(implicit rep: TypeRep[T]): TypeRep[T] = rep + + println(getType(1)) + println(getType(List(1))) +} |