summaryrefslogtreecommitdiff
path: root/test/files/run/patmat-seqs.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-05-12 21:17:29 +0000
committerPaul Phillips <paulp@improving.org>2010-05-12 21:17:29 +0000
commit016d815104b1d44b2b899c68804dde500963fbcd (patch)
treee223ac275ad0321f9e5d51e847f30ab11e7a234f /test/files/run/patmat-seqs.scala
parent0ed53d4d686db74a54315cd5ccf79bda3690b036 (diff)
downloadscala-016d815104b1d44b2b899c68804dde500963fbcd.tar.gz
scala-016d815104b1d44b2b899c68804dde500963fbcd.tar.bz2
scala-016d815104b1d44b2b899c68804dde500963fbcd.zip
Overhauled sequence length logic in the pattern...
Overhauled sequence length logic in the pattern matcher. Removes unnecessary boxing and a few varieties of wrongness. Closes #3395, #3150, #2958, #2945, #2187. No review.
Diffstat (limited to 'test/files/run/patmat-seqs.scala')
-rw-r--r--test/files/run/patmat-seqs.scala42
1 files changed, 42 insertions, 0 deletions
diff --git a/test/files/run/patmat-seqs.scala b/test/files/run/patmat-seqs.scala
new file mode 100644
index 0000000000..b5c47b4b4b
--- /dev/null
+++ b/test/files/run/patmat-seqs.scala
@@ -0,0 +1,42 @@
+object Test {
+ def f1(x: Any) = x match {
+ case Seq(1, 2, 3) => "s3"
+ case Seq(4, 5) => "s2"
+ case Seq(7) => "s1"
+ case Nil => "s0"
+ case Seq(_, _, _, _, _, x: String) => "ss6"
+ case _ => "d"
+ }
+
+ def f2(x: Any) = x match {
+ case Seq("a", "b", _*) => "s2"
+ case Seq(1, _*) => "s1"
+ case Seq(5, 6, 7, _*) => "s3"
+ case _ => "d"
+ }
+
+ def main(args: Array[String]): Unit = {
+ val xs1 = List(
+ List(1,2,3),
+ List(4,5),
+ Vector(7),
+ Seq(),
+ Seq(1, 2, 3, 4, 5, "abcd"),
+ "abc"
+ ) map f1
+
+ xs1 foreach println
+
+ val xs2 = List(
+ Seq(5, 6, 7),
+ Seq(5, 6, 7, 8, 9),
+ Seq("a"),
+ Seq(1, 6, 7),
+ List(5, 6, 7),
+ Nil,
+ 5
+ ) map f2
+
+ xs2 foreach println
+ }
+}