summaryrefslogtreecommitdiff
path: root/test/files/run/complicatedmatch.scala
diff options
context:
space:
mode:
authorDavid MacIver <david.maciver@gmail.com>2008-10-27 08:30:05 +0000
committerDavid MacIver <david.maciver@gmail.com>2008-10-27 08:30:05 +0000
commit2d6d18662dd2d9fe9e055be9fcbacbdbf018363e (patch)
treed7faec3ec588789fdc716f4e1a42b1a67059e9c3 /test/files/run/complicatedmatch.scala
parentfdab95c6ae6e87b8c6d8a0262bb4077bf2953029 (diff)
downloadscala-2d6d18662dd2d9fe9e055be9fcbacbdbf018363e.tar.gz
scala-2d6d18662dd2d9fe9e055be9fcbacbdbf018363e.tar.bz2
scala-2d6d18662dd2d9fe9e055be9fcbacbdbf018363e.zip
Test to check a few combinations of pattern mat...
Test to check a few combinations of pattern matching features.
Diffstat (limited to 'test/files/run/complicatedmatch.scala')
-rw-r--r--test/files/run/complicatedmatch.scala31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/files/run/complicatedmatch.scala b/test/files/run/complicatedmatch.scala
new file mode 100644
index 0000000000..c837c328b3
--- /dev/null
+++ b/test/files/run/complicatedmatch.scala
@@ -0,0 +1,31 @@
+object Bar{
+ def unapply(x : String) = x == "bar";
+}
+
+object Even{
+ def unapply(x : Int) = if (x % 2 == 0) Some(x / 2) else None;
+}
+
+object Test extends Application{
+ val LongWord = "supercalifragilisticexpialadocious";
+
+ def foo(x : Int, y : String) : Int = (x, y) match {
+ case (Even(i), "bar") => 1
+ case (1 | 2 | 3, "foo") => 42;
+ case (x, y) if y.length < x => 11;
+ case (1 | 2 | 3, Bar()) => 7;
+ case (1 | 2 | 3, "bar") => 8
+ case (Even(Even(3)), Bar()) => 13;
+ case (Even(Even(3)), LongWord) => 13;
+ case _ => 0;
+ }
+
+ List(
+ 2 -> "bar",
+ 2 -> "foo",
+ 3 -> "foo",
+ 7 -> "flob",
+ 3 -> "bar",
+ 12 -> LongWord
+ ).foreach({case (x, y) => println(foo(x, y))});
+}