summaryrefslogtreecommitdiff
path: root/test/files/neg/t5589neg.scala
blob: ddd382d8d8836bee0ac880483fdd632f148a35a4 (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
26
27
28
class A {
  // First three compile.
  def f1(x: Either[Int, String])        = x.right map (y => y)
  def f2(x: Either[Int, String])        = for (y <- x.right) yield y
  def f3(x: Either[Int, (String, Int)]) = x.right map { case (y1, y2) => (y1, y2) }
  // Last one fails.
  def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
/**
./a.scala:5: error: constructor cannot be instantiated to expected type;
 found   : (T1, T2)
 required: Either[Nothing,(String, Int)]
  def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
                                               ^
./a.scala:5: error: not found: value y1
  def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
                                                                            ^
./a.scala:5: error: not found: value y2
  def f4(x: Either[Int, (String, Int)]) = for ((y1, y2) <- x.right) yield ((y1, y2))
                                                                                ^
three errors found
**/


  def f5(x: Either[Int, String])        = for ((y1, y2: String) <- x.right) yield ((y1, y2))
  def f6(x: Either[Int, String])        = for ((y1, y2: Any) <- x.right) yield ((y1, y2))
  def f7(x: Either[Int, (String, Int)]) = for (y1 @ Tuple1(y2) <- x.right) yield ((y1, y2))
  def f8(x: Either[Int, (String, Int)]) = for ((y1, y2, y3) <- x.right) yield ((y1, y2))
}