summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/pending/pos/bug796.scala26
-rw-r--r--test/pending/pos/unapply.scala27
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)
+ }
+ }
+}