summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/Predef.scala1
-rw-r--r--test/pending/pos/unapply.scala30
2 files changed, 17 insertions, 14 deletions
diff --git a/src/library/scala/Predef.scala b/src/library/scala/Predef.scala
index b0206ae9f5..932f45c5c9 100644
--- a/src/library/scala/Predef.scala
+++ b/src/library/scala/Predef.scala
@@ -53,6 +53,7 @@ object Predef {
type Triple[+a, +b, +c] = Tuple3[a, b, c]
def Triple[a, b, c](x: a, y: b, z: c) = Tuple3(x, y, z)
+ def Tuple[a1](x1: a1) = Tuple1(x1)
def Tuple[a1, a2](x1: a1, x2: a2) = Tuple2(x1, x2)
def Tuple[a1, a2, a3](x1: a1, x2: a2, x3: a3) = Tuple3(x1, x2, x3)
def Tuple[a1, a2, a3, a4](x1: a1, x2: a2, x3: a3, x4: a4) = Tuple4(x1, x2, x3, x4)
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"
}
-