aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/bounds.scala
blob: 625359f74819063a52d50833f2dd5b18f0cff8af (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
trait Map[A, +C] {
  def ++ [B1 >: C] (kvs: Iterable[Tuple2[A, B1]]): Map[A, B1] = this
  def ++ [B1 >: C] (kvs: Iterator[Tuple2[A, B1]]): Map[A, B1] = this
}

class ListMap[A, +B] extends Map[A, B] {}

object ListMap {
  def empty[X, Y] = new ListMap[X, Y]
  def apply[A1, B2](elems: Tuple2[A1, B2]*): Map[A1, B2] = empty[A1,B2].++(elems.iterator)
}

class Test[A] {

  def f[B >: A <: AnyRef](x: A): AnyRef = (x: B)
  def g[B >: String <: Int](x: B): Int = x

}