summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/pending/pos/unapply.scala28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/pending/pos/unapply.scala b/test/pending/pos/unapply.scala
new file mode 100644
index 0000000000..ee33845d81
--- /dev/null
+++ b/test/pending/pos/unapply.scala
@@ -0,0 +1,28 @@
+case class MyTuple2[A,B](val _1:A, val _2:B)
+
+object Foo {
+ def unapply(x:Any): Option[Product2[Int,String]] = {
+ if(x.isInstanceOf[Bar]) {
+ val y = x.asInstanceOf[Bar]
+ Some(MyTuple2(y.size, y.name))
+ } else None
+ }
+
+ def main(args:Array[String]) = {
+ val b = new Bar
+ b match {
+ case Foo(s:Int,n:String) => Console.println("size "+s+" name "+n)
+ }
+ b.size = 54
+ b.name = "large"
+ b match {
+ case Foo(s:Int,n:String) => Console.println("size "+s+" name "+n)
+ }
+ }
+}
+
+class Bar {
+ var size: Int = 50
+ var name: String = "medium"
+}
+