diff options
Diffstat (limited to 'test/pending/pos/unapply.scala')
-rw-r--r-- | test/pending/pos/unapply.scala | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/test/pending/pos/unapply.scala b/test/pending/pos/unapply.scala index e784299ad8..70e4a1d913 100644 --- a/test/pending/pos/unapply.scala +++ b/test/pending/pos/unapply.scala @@ -1,23 +1,26 @@ -case class MyTuple2[A,B](val _1:A, val snd:B) -class Foo 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]) = { + def unapply(x: Any): Option[Product2[Int, String]] = x match { + case y: Bar => Some(Tuple(y.size, y.name)) + case _ => None + }/* + // ERROR: test/pending/pos/unapply.scala:6 error: method unapply is defined twice + def unapply(x: Any): Option[Product1[String]] = x match { + case y: Bar => Some(Tuple(y.name)) + case _ => None + }*/ + def main(args:Array[String]): Unit = { val b = new Bar b match { - case Foo(s:Int,n:String) => Console.println("size "+s+" name "+n) + 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) - } + case Foo(s:Int, n:String) => Console.println("size "+s+" name "+n) + }/* + b match { + case Foo(n) => Console.println("name " + n) + }*/ } } @@ -25,4 +28,3 @@ class Bar { var size: Int = 50 var name: String = "medium" } - |