diff options
author | Burak Emir <emir@epfl.ch> | 2006-11-06 18:13:23 +0000 |
---|---|---|
committer | Burak Emir <emir@epfl.ch> | 2006-11-06 18:13:23 +0000 |
commit | 63d618b20c238f5963c034afd96cb0bd34a73d14 (patch) | |
tree | 24e1b7881de009084fcaa3af12bf36e8c933d153 /test/pending/pos | |
parent | 7632c7172daad811f37eb972dc1e836ad8f68181 (diff) | |
download | scala-63d618b20c238f5963c034afd96cb0bd34a73d14.tar.gz scala-63d618b20c238f5963c034afd96cb0bd34a73d14.tar.bz2 scala-63d618b20c238f5963c034afd96cb0bd34a73d14.zip |
test cases for unapply
Diffstat (limited to 'test/pending/pos')
-rw-r--r-- | test/pending/pos/bug796.scala | 26 | ||||
-rw-r--r-- | test/pending/pos/unapply.scala | 27 |
2 files changed, 52 insertions, 1 deletions
diff --git a/test/pending/pos/bug796.scala b/test/pending/pos/bug796.scala new file mode 100644 index 0000000000..756c103e7c --- /dev/null +++ b/test/pending/pos/bug796.scala @@ -0,0 +1,26 @@ +/** I know what I am doing is wrong -- since I am about to look into + * this bug, I add a test in pending/pos... however, I am afraid that + * once this bug is fixed, this test case might go into test/pos + * there it adds to the huge number of tiny little test cases. + * + * Ideally, an option in the bugtracking system would automatically + * handle "pos" bugs. + */ +object Test extends Application { + + object Twice { + def apply(x: int) = x * 2 + def unapply(x: int): Option[Tuple1[int]] = + if (x % 2 == 0) Some(Tuple1(x / 2)) + else None + } + + def test(x: int) = x match { + case Twice(y) => "x is two times "+y + case _ => "x is odd" + } + + Console.println(test(3)) + Console.println(test(4)) + +} diff --git a/test/pending/pos/unapply.scala b/test/pending/pos/unapply.scala index 70e4a1d913..4ddc93120b 100644 --- a/test/pending/pos/unapply.scala +++ b/test/pending/pos/unapply.scala @@ -1,3 +1,9 @@ +object Test { + def main(args:Array[String]) = { + Foo.run + Mas.run + } +} object Foo { def unapply(x: Any): Option[Product2[Int, String]] = x match { case y: Bar => Some(Tuple(y.size, y.name)) @@ -8,7 +14,7 @@ object Foo { case y: Bar => Some(Tuple(y.name)) case _ => None }*/ - def main(args:Array[String]): Unit = { + def run: Unit = { val b = new Bar b match { case Foo(s:Int, n:String) => Console.println("size "+s+" name "+n) @@ -28,3 +34,22 @@ class Bar { var size: Int = 50 var name: String = "medium" } + +object Mas { + object Gaz { + def unapply(x: Any): Option[Product2[Int, String]] = x match { + case y: Baz => Some(Tuple(y.size, y.name)) + case _ => None + } + } + class Baz { + var size: Int = 60 + var name: String = "too large" + } + def run: Unit = { + val b = new Baz + b match { + case Gaz(s:Int, n:String) => Console.println("size "+s+" name "+n) + } + } +} |