aboutsummaryrefslogtreecommitdiff
path: root/tests/run/i1099.scala
blob: 15a428cc302b2bcd07eacb58a8c0f37e0cf70649 (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
import scala.reflect.ClassTag
object Test {
  def foo[T: ClassTag](x: Any) =
    x match {
      case t: T => true
      case _   => false
    }
  // This is what `foo` expands to
  def foo2[T](x: Any)(implicit ev: ClassTag[T]) =
    x match {
      case t @ ev(_) => true
      case _   => false
    }
  def main(args: Array[String]): Unit = {
    assert(foo[String]("a"))
    assert(!foo[String](new Integer(1)))
    assert(foo[Int](1))
    assert(!foo[Int](true))

    assert(foo2[String]("a"))
    assert(!foo2[String](new Integer(1)))
    assert(foo2[Int](1))
    assert(!foo2[Int](true))
  }
}