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
29
|
object Test {
case class K(i: Int)
def main(args: Array[String]) {
val k = new K(9)
val is = List(1,2,3)
is match {
case List(1, _*,) => // bad use of _* (a sequence pattern must be the last pattern)
// illegal start of simple pattern
case List(1, _*3,) => // illegal start of simple pattern
//case List(1, _*3:) => // poor recovery by parens
case List(1, x*) => // use _* to match a sequence
case List(x*, 1) => // trailing * is not a valid pattern
case (1, x*) => // trailing * is not a valid pattern
case (1, x@_*) => // bad use of _* (sequence pattern not allowed)
}
// good syntax, bad semantics, detected by typer
//gowild.scala:14: error: star patterns must correspond with varargs parameters
val K(is @ _*) = k
val K(ns @ _*, x) = k // bad use of _* (a sequence pattern must be the last pattern)
val (b, _ * ) = Pair(5,6) // bad use of _* (sequence pattern not allowed)
// no longer complains
//bad-and-wild.scala:15: error: ')' expected but '}' found.
}
}
|