summaryrefslogtreecommitdiff
path: root/test/files/run/reflect-overload.scala
blob: af82a1948d474a180428968d877e3dcea450a001 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
object Test extends App {
  import reflect.mirror._

  val s = "hello world"
  val sc = symbolOfInstance(s)
  val st = sc.asType
  val m = st member newTermName("indexOf")
  val IntType = definitions.IntClass.asType
  val indexOf = m resolveOverloaded(actuals = List(IntType))
  assert(invoke(s, indexOf)('w') == 6)
  assert((invoke(s, indexOf)('w') match { case x: Int => x }) == 6)

  val m2 = st member newTermName("substring")
  val substring = m2 resolveOverloaded(actuals = List(IntType, IntType))
  assert(invoke(s, substring)(2, 6) == "llo ")
}