summaryrefslogtreecommitdiff
path: root/test/files/run/complicatedmatch.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-02-10 23:46:39 +0000
committerPaul Phillips <paulp@improving.org>2009-02-10 23:46:39 +0000
commit64af689e6659ab170826508f37720ee6e54386fa (patch)
tree0e2e5100426d23f2a734a97863c4eadcc77c38d3 /test/files/run/complicatedmatch.scala
parentf4720669d6b4946653b5b419d85f5ec5a1e95bad (diff)
downloadscala-64af689e6659ab170826508f37720ee6e54386fa.tar.gz
scala-64af689e6659ab170826508f37720ee6e54386fa.tar.bz2
scala-64af689e6659ab170826508f37720ee6e54386fa.zip
moved most of the passing tests from pending to...
moved most of the passing tests from pending to files ; reunited inner.scala with inner.check
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))});
+}