diff options
Diffstat (limited to 'test/pending')
-rw-r--r-- | test/pending/pos/t1260.scala | 17 | ||||
-rw-r--r-- | test/pending/pos/t1480.scala | 6 | ||||
-rw-r--r-- | test/pending/run/complicatedmatch.check | 6 | ||||
-rw-r--r-- | test/pending/run/complicatedmatch.scala | 31 |
4 files changed, 54 insertions, 6 deletions
diff --git a/test/pending/pos/t1260.scala b/test/pending/pos/t1260.scala new file mode 100644 index 0000000000..b05259998e --- /dev/null +++ b/test/pending/pos/t1260.scala @@ -0,0 +1,17 @@ +case class Foo(a: String, b: String) + +object Bar { + def unapply(s: String): Option[Long] = + try { Some(s.toLong) } catch { case _ => None } +} + +object Test { + def main(args: Array[String]) { + val f = Foo("1", "2") + f match { + case Foo(Bar(1), Bar(2)) => () + case Foo(Bar(i), Bar(j)) if i >= 0 => () + } + } +} + diff --git a/test/pending/pos/t1480.scala b/test/pending/pos/t1480.scala deleted file mode 100644 index 1d9f94d2e9..0000000000 --- a/test/pending/pos/t1480.scala +++ /dev/null @@ -1,6 +0,0 @@ -class Foo{ - def compare(newP : Any, oldP : Any) : Boolean = (newP,oldP) match { - case (newP : AnyRef, oldP : AnyRef) if newP == oldP => newP == oldP - case (newS : Symbol, oldS: Symbol) if newS == oldS => newS == oldS - } -} diff --git a/test/pending/run/complicatedmatch.check b/test/pending/run/complicatedmatch.check new file mode 100644 index 0000000000..501b7a32d6 --- /dev/null +++ b/test/pending/run/complicatedmatch.check @@ -0,0 +1,6 @@ +1 +42 +42 +11 +7 +13 diff --git a/test/pending/run/complicatedmatch.scala b/test/pending/run/complicatedmatch.scala new file mode 100644 index 0000000000..c837c328b3 --- /dev/null +++ b/test/pending/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))}); +} |