summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2006-11-28 16:27:16 +0000
committerBurak Emir <emir@epfl.ch>2006-11-28 16:27:16 +0000
commit6c468e8927ab8277207b6d21ebe13171509213a8 (patch)
tree8ecfa442d51147595831a1a5518c256b2a355a63
parentc5e9360725ed37e444b3836185be895bc69e5687 (diff)
downloadscala-6c468e8927ab8277207b6d21ebe13171509213a8.tar.gz
scala-6c468e8927ab8277207b6d21ebe13171509213a8.tar.bz2
scala-6c468e8927ab8277207b6d21ebe13171509213a8.zip
more fun with positions, and updated doc
-rw-r--r--src/build/genprod.scala11
-rw-r--r--src/compiler/scala/tools/nsc/transform/LiftCode.scala2
-rw-r--r--src/library/scala/Function0.scala2
-rw-r--r--src/library/scala/Function1.scala2
-rw-r--r--src/library/scala/Function2.scala2
-rw-r--r--src/library/scala/Function3.scala2
-rw-r--r--src/library/scala/Function4.scala2
-rw-r--r--src/library/scala/Function5.scala2
-rw-r--r--src/library/scala/Function6.scala2
-rw-r--r--src/library/scala/Function7.scala2
-rw-r--r--src/library/scala/Function8.scala2
-rw-r--r--src/library/scala/Product.scala4
-rw-r--r--src/library/scala/Product0.scala7
-rw-r--r--src/library/scala/Product1.scala7
-rw-r--r--src/library/scala/Product10.scala7
-rw-r--r--src/library/scala/Product11.scala7
-rw-r--r--src/library/scala/Product12.scala7
-rw-r--r--src/library/scala/Product13.scala7
-rw-r--r--src/library/scala/Product14.scala7
-rw-r--r--src/library/scala/Product15.scala7
-rw-r--r--src/library/scala/Product16.scala7
-rw-r--r--src/library/scala/Product17.scala7
-rw-r--r--src/library/scala/Product18.scala7
-rw-r--r--src/library/scala/Product19.scala7
-rw-r--r--src/library/scala/Product2.scala7
-rw-r--r--src/library/scala/Product20.scala7
-rw-r--r--src/library/scala/Product21.scala7
-rw-r--r--src/library/scala/Product22.scala7
-rw-r--r--src/library/scala/Product3.scala7
-rw-r--r--src/library/scala/Product4.scala7
-rw-r--r--src/library/scala/Product5.scala7
-rw-r--r--src/library/scala/Product6.scala7
-rw-r--r--src/library/scala/Product7.scala7
-rw-r--r--src/library/scala/Product8.scala7
-rw-r--r--src/library/scala/Product9.scala7
-rw-r--r--src/library/scala/Tuple1.scala2
-rw-r--r--src/library/scala/Tuple2.scala2
-rw-r--r--src/library/scala/Tuple3.scala2
-rw-r--r--src/library/scala/Tuple4.scala2
-rw-r--r--src/library/scala/Tuple5.scala2
-rw-r--r--src/library/scala/Tuple6.scala2
-rw-r--r--src/library/scala/Tuple7.scala2
-rw-r--r--src/library/scala/Tuple8.scala2
-rw-r--r--test/files/run/misc.scala6
44 files changed, 170 insertions, 48 deletions
diff --git a/src/build/genprod.scala b/src/build/genprod.scala
index 21c1a8c662..ee5137fc33 100644
--- a/src/build/genprod.scala
+++ b/src/build/genprod.scala
@@ -225,6 +225,7 @@ object ProductFile {
import genprod._
def make(i:Int) = {
val __typeArgs__ = if(i==0) Nil else covariantArgs(i).mkString("[",", ","]")
+ val __refArgs__ = if(i==0) Nil else targs(i).mkString("[",", ","]")
<file name={productFilename(i)}>
/* __ *\
** ________ ___ / / ___ Scala API **
@@ -239,6 +240,11 @@ package scala
import Predef._
+object {productClassname(i)} {{
+ def unapply{__refArgs__}(x:Any): Option[{productClassname(i)}{__refArgs__}] =
+ if(x.isInstanceOf[{productClassname(i)}{__refArgs__}]) Some(x.asInstanceOf[{productClassname(i)}{__refArgs__}]) else None
+}}
+
/** {productClassname(i)} is a cartesian product of {i} components
*/
trait {productClassname(i)} {__typeArgs__} extends Product {{
@@ -250,12 +256,13 @@ trait {productClassname(i)} {__typeArgs__} extends Product {{
override def arity = {i}
/**
- * Returns the n-th projection of this product if 0&lt;n&lt;=arity, otherwise null
+ * Returns the n-th projection of this product if 0&lt;=n&lt;arity, otherwise null
* @param n number of the projection to be returned
+ * @return same as _(n+1)
* @throws IndexOutOfBoundsException
*/
override def element(n: Int) = n match {{
- {for(val Tuple2(m,j) <- mdefs(i).zip(List.range(1,i+1)))
+ {for(val Tuple2(m,j) <- mdefs(i).zip(List.range(0,i)))
yield "case "+j+" => "+m+"\n "}case _ => throw new IndexOutOfBoundsException(n.toString())
}}
diff --git a/src/compiler/scala/tools/nsc/transform/LiftCode.scala b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
index 581d115071..b197146f74 100644
--- a/src/compiler/scala/tools/nsc/transform/LiftCode.scala
+++ b/src/compiler/scala/tools/nsc/transform/LiftCode.scala
@@ -254,7 +254,7 @@ abstract class LiftCode extends Transform {
val name = className(c);
if (name.length() == 0) throw new Error("don't know how to inject " + value);
val injectedArgs = new ListBuffer[Tree];
- for (val i <- 1 until c.arity+1 /*caseArity*/)
+ for (val i <- 0 until c.arity /*caseArity*/)
injectedArgs += inject(c.element(i));
New(Ident(definitions.getClass(name)), List(injectedArgs.toList))
}
diff --git a/src/library/scala/Function0.scala b/src/library/scala/Function0.scala
index e7fb1a1e60..38edc7e252 100644
--- a/src/library/scala/Function0.scala
+++ b/src/library/scala/Function0.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006 (with fancy comment)
+// generated on Tue Nov 28 17:25:56 CET 2006 (with fancy comment)
// $Id$
package scala
diff --git a/src/library/scala/Function1.scala b/src/library/scala/Function1.scala
index 18285c0a93..1b6cb917da 100644
--- a/src/library/scala/Function1.scala
+++ b/src/library/scala/Function1.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006 (with fancy comment) (with extra methods)
+// generated on Tue Nov 28 17:25:56 CET 2006 (with fancy comment) (with extra methods)
// $Id$
package scala
diff --git a/src/library/scala/Function2.scala b/src/library/scala/Function2.scala
index d1d0bfac6b..27cefc1bbe 100644
--- a/src/library/scala/Function2.scala
+++ b/src/library/scala/Function2.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006 (with fancy comment)
+// generated on Tue Nov 28 17:25:56 CET 2006 (with fancy comment)
// $Id$
package scala
diff --git a/src/library/scala/Function3.scala b/src/library/scala/Function3.scala
index df67b32679..79852aaa05 100644
--- a/src/library/scala/Function3.scala
+++ b/src/library/scala/Function3.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
// $Id$
package scala
diff --git a/src/library/scala/Function4.scala b/src/library/scala/Function4.scala
index 62a83841d8..7423e6aacf 100644
--- a/src/library/scala/Function4.scala
+++ b/src/library/scala/Function4.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
// $Id$
package scala
diff --git a/src/library/scala/Function5.scala b/src/library/scala/Function5.scala
index 3c56cb48bd..494b4ac62b 100644
--- a/src/library/scala/Function5.scala
+++ b/src/library/scala/Function5.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
// $Id$
package scala
diff --git a/src/library/scala/Function6.scala b/src/library/scala/Function6.scala
index cbfe47c2ef..430f9366cc 100644
--- a/src/library/scala/Function6.scala
+++ b/src/library/scala/Function6.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
// $Id$
package scala
diff --git a/src/library/scala/Function7.scala b/src/library/scala/Function7.scala
index b7d6155ae8..4b8ff20d78 100644
--- a/src/library/scala/Function7.scala
+++ b/src/library/scala/Function7.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
// $Id$
package scala
diff --git a/src/library/scala/Function8.scala b/src/library/scala/Function8.scala
index 0a328a76a8..bb19442a85 100644
--- a/src/library/scala/Function8.scala
+++ b/src/library/scala/Function8.scala
@@ -7,7 +7,7 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
// $Id$
package scala
diff --git a/src/library/scala/Product.scala b/src/library/scala/Product.scala
index 929f6c2591..75ffa84378 100644
--- a/src/library/scala/Product.scala
+++ b/src/library/scala/Product.scala
@@ -19,8 +19,8 @@ package scala
*/
trait Product extends AnyRef {
- /** for a case class <code>A(x_1,...,x_k))</code>, returns <code>x_i</code>
- * for <code>1 &lt;= i &lt; k</code>
+ /** for a case class <code>A(x_1,...,x_k))</code>, returns <code>x_(i+1)</code>
+ * for <code>0 &lt;= i &lt; k</code>
*
* @param n the position of the n-th element
* @throws IndexOutOfBoundsException
diff --git a/src/library/scala/Product0.scala b/src/library/scala/Product0.scala
index a0ed75138d..77d27ccb66 100644
--- a/src/library/scala/Product0.scala
+++ b/src/library/scala/Product0.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product0 {
+ def unapply(x:Any): Option[Product0] =
+ if(x.isInstanceOf[Product0]) Some(x.asInstanceOf[Product0]) else None
+}
+
/** Product0 is a cartesian product of 0 components
*/
trait Product0 extends Product {
diff --git a/src/library/scala/Product1.scala b/src/library/scala/Product1.scala
index 09f6c15694..22544ff9fb 100644
--- a/src/library/scala/Product1.scala
+++ b/src/library/scala/Product1.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product1 {
+ def unapply[T1](x:Any): Option[Product1[T1]] =
+ if(x.isInstanceOf[Product1[T1]]) Some(x.asInstanceOf[Product1[T1]]) else None
+}
+
/** Product1 is a cartesian product of 1 components
*/
trait Product1 [+T1] extends Product {
diff --git a/src/library/scala/Product10.scala b/src/library/scala/Product10.scala
index 323c6c891a..8ec9ec4bdf 100644
--- a/src/library/scala/Product10.scala
+++ b/src/library/scala/Product10.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product10 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10](x:Any): Option[Product10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]] =
+ if(x.isInstanceOf[Product10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]) Some(x.asInstanceOf[Product10[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]]) else None
+}
+
/** Product10 is a cartesian product of 10 components
*/
trait Product10 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10] extends Product {
diff --git a/src/library/scala/Product11.scala b/src/library/scala/Product11.scala
index 31c39adcb6..0a75a3c80a 100644
--- a/src/library/scala/Product11.scala
+++ b/src/library/scala/Product11.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product11 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11](x:Any): Option[Product11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]] =
+ if(x.isInstanceOf[Product11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]]) Some(x.asInstanceOf[Product11[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]]) else None
+}
+
/** Product11 is a cartesian product of 11 components
*/
trait Product11 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11] extends Product {
diff --git a/src/library/scala/Product12.scala b/src/library/scala/Product12.scala
index ffdbe1efc9..aaecd92e6b 100644
--- a/src/library/scala/Product12.scala
+++ b/src/library/scala/Product12.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product12 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12](x:Any): Option[Product12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]] =
+ if(x.isInstanceOf[Product12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]]) Some(x.asInstanceOf[Product12[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]]) else None
+}
+
/** Product12 is a cartesian product of 12 components
*/
trait Product12 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12] extends Product {
diff --git a/src/library/scala/Product13.scala b/src/library/scala/Product13.scala
index c5df827fa0..775cb704bb 100644
--- a/src/library/scala/Product13.scala
+++ b/src/library/scala/Product13.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product13 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13](x:Any): Option[Product13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]] =
+ if(x.isInstanceOf[Product13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]]) Some(x.asInstanceOf[Product13[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]]) else None
+}
+
/** Product13 is a cartesian product of 13 components
*/
trait Product13 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13] extends Product {
diff --git a/src/library/scala/Product14.scala b/src/library/scala/Product14.scala
index f2792ae390..5d4794ebf3 100644
--- a/src/library/scala/Product14.scala
+++ b/src/library/scala/Product14.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product14 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14](x:Any): Option[Product14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]] =
+ if(x.isInstanceOf[Product14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]]) Some(x.asInstanceOf[Product14[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]]) else None
+}
+
/** Product14 is a cartesian product of 14 components
*/
trait Product14 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14] extends Product {
diff --git a/src/library/scala/Product15.scala b/src/library/scala/Product15.scala
index 198ff20469..afd34997eb 100644
--- a/src/library/scala/Product15.scala
+++ b/src/library/scala/Product15.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product15 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15](x:Any): Option[Product15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]] =
+ if(x.isInstanceOf[Product15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]]) Some(x.asInstanceOf[Product15[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]]) else None
+}
+
/** Product15 is a cartesian product of 15 components
*/
trait Product15 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15] extends Product {
diff --git a/src/library/scala/Product16.scala b/src/library/scala/Product16.scala
index e80d2905d8..d3de407ada 100644
--- a/src/library/scala/Product16.scala
+++ b/src/library/scala/Product16.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product16 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16](x:Any): Option[Product16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]] =
+ if(x.isInstanceOf[Product16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]]) Some(x.asInstanceOf[Product16[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]]) else None
+}
+
/** Product16 is a cartesian product of 16 components
*/
trait Product16 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16] extends Product {
diff --git a/src/library/scala/Product17.scala b/src/library/scala/Product17.scala
index 315d10efac..db75ede671 100644
--- a/src/library/scala/Product17.scala
+++ b/src/library/scala/Product17.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product17 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17](x:Any): Option[Product17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]] =
+ if(x.isInstanceOf[Product17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]]) Some(x.asInstanceOf[Product17[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]]) else None
+}
+
/** Product17 is a cartesian product of 17 components
*/
trait Product17 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17] extends Product {
diff --git a/src/library/scala/Product18.scala b/src/library/scala/Product18.scala
index cb83b8b08e..2be9e802fb 100644
--- a/src/library/scala/Product18.scala
+++ b/src/library/scala/Product18.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product18 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18](x:Any): Option[Product18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]] =
+ if(x.isInstanceOf[Product18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]]) Some(x.asInstanceOf[Product18[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]]) else None
+}
+
/** Product18 is a cartesian product of 18 components
*/
trait Product18 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18] extends Product {
diff --git a/src/library/scala/Product19.scala b/src/library/scala/Product19.scala
index c597ba7661..b0d0bc0a0f 100644
--- a/src/library/scala/Product19.scala
+++ b/src/library/scala/Product19.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product19 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19](x:Any): Option[Product19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]] =
+ if(x.isInstanceOf[Product19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]]) Some(x.asInstanceOf[Product19[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]]) else None
+}
+
/** Product19 is a cartesian product of 19 components
*/
trait Product19 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19] extends Product {
diff --git a/src/library/scala/Product2.scala b/src/library/scala/Product2.scala
index 208c98d836..8b78c485a7 100644
--- a/src/library/scala/Product2.scala
+++ b/src/library/scala/Product2.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product2 {
+ def unapply[T1, T2](x:Any): Option[Product2[T1, T2]] =
+ if(x.isInstanceOf[Product2[T1, T2]]) Some(x.asInstanceOf[Product2[T1, T2]]) else None
+}
+
/** Product2 is a cartesian product of 2 components
*/
trait Product2 [+T1, +T2] extends Product {
diff --git a/src/library/scala/Product20.scala b/src/library/scala/Product20.scala
index 51bdf7057c..73218da8ff 100644
--- a/src/library/scala/Product20.scala
+++ b/src/library/scala/Product20.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product20 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20](x:Any): Option[Product20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]] =
+ if(x.isInstanceOf[Product20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]]) Some(x.asInstanceOf[Product20[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]]) else None
+}
+
/** Product20 is a cartesian product of 20 components
*/
trait Product20 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20] extends Product {
diff --git a/src/library/scala/Product21.scala b/src/library/scala/Product21.scala
index 697b05ad73..378c3584aa 100644
--- a/src/library/scala/Product21.scala
+++ b/src/library/scala/Product21.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product21 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21](x:Any): Option[Product21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]] =
+ if(x.isInstanceOf[Product21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]]) Some(x.asInstanceOf[Product21[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]]) else None
+}
+
/** Product21 is a cartesian product of 21 components
*/
trait Product21 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21] extends Product {
diff --git a/src/library/scala/Product22.scala b/src/library/scala/Product22.scala
index 699aaf5bd6..af7029be46 100644
--- a/src/library/scala/Product22.scala
+++ b/src/library/scala/Product22.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product22 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22](x:Any): Option[Product22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]] =
+ if(x.isInstanceOf[Product22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]]) Some(x.asInstanceOf[Product22[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22]]) else None
+}
+
/** Product22 is a cartesian product of 22 components
*/
trait Product22 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9, +T10, +T11, +T12, +T13, +T14, +T15, +T16, +T17, +T18, +T19, +T20, +T21, +T22] extends Product {
diff --git a/src/library/scala/Product3.scala b/src/library/scala/Product3.scala
index 737c1c8fbc..50a3cf9522 100644
--- a/src/library/scala/Product3.scala
+++ b/src/library/scala/Product3.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product3 {
+ def unapply[T1, T2, T3](x:Any): Option[Product3[T1, T2, T3]] =
+ if(x.isInstanceOf[Product3[T1, T2, T3]]) Some(x.asInstanceOf[Product3[T1, T2, T3]]) else None
+}
+
/** Product3 is a cartesian product of 3 components
*/
trait Product3 [+T1, +T2, +T3] extends Product {
diff --git a/src/library/scala/Product4.scala b/src/library/scala/Product4.scala
index d8cd8b4d9a..1ff8b8c179 100644
--- a/src/library/scala/Product4.scala
+++ b/src/library/scala/Product4.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product4 {
+ def unapply[T1, T2, T3, T4](x:Any): Option[Product4[T1, T2, T3, T4]] =
+ if(x.isInstanceOf[Product4[T1, T2, T3, T4]]) Some(x.asInstanceOf[Product4[T1, T2, T3, T4]]) else None
+}
+
/** Product4 is a cartesian product of 4 components
*/
trait Product4 [+T1, +T2, +T3, +T4] extends Product {
diff --git a/src/library/scala/Product5.scala b/src/library/scala/Product5.scala
index 8b63ee6114..164f853028 100644
--- a/src/library/scala/Product5.scala
+++ b/src/library/scala/Product5.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product5 {
+ def unapply[T1, T2, T3, T4, T5](x:Any): Option[Product5[T1, T2, T3, T4, T5]] =
+ if(x.isInstanceOf[Product5[T1, T2, T3, T4, T5]]) Some(x.asInstanceOf[Product5[T1, T2, T3, T4, T5]]) else None
+}
+
/** Product5 is a cartesian product of 5 components
*/
trait Product5 [+T1, +T2, +T3, +T4, +T5] extends Product {
diff --git a/src/library/scala/Product6.scala b/src/library/scala/Product6.scala
index 6e309c1c9e..9b951d0a4d 100644
--- a/src/library/scala/Product6.scala
+++ b/src/library/scala/Product6.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product6 {
+ def unapply[T1, T2, T3, T4, T5, T6](x:Any): Option[Product6[T1, T2, T3, T4, T5, T6]] =
+ if(x.isInstanceOf[Product6[T1, T2, T3, T4, T5, T6]]) Some(x.asInstanceOf[Product6[T1, T2, T3, T4, T5, T6]]) else None
+}
+
/** Product6 is a cartesian product of 6 components
*/
trait Product6 [+T1, +T2, +T3, +T4, +T5, +T6] extends Product {
diff --git a/src/library/scala/Product7.scala b/src/library/scala/Product7.scala
index a9ac46bbb4..b6d6ce09db 100644
--- a/src/library/scala/Product7.scala
+++ b/src/library/scala/Product7.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product7 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7](x:Any): Option[Product7[T1, T2, T3, T4, T5, T6, T7]] =
+ if(x.isInstanceOf[Product7[T1, T2, T3, T4, T5, T6, T7]]) Some(x.asInstanceOf[Product7[T1, T2, T3, T4, T5, T6, T7]]) else None
+}
+
/** Product7 is a cartesian product of 7 components
*/
trait Product7 [+T1, +T2, +T3, +T4, +T5, +T6, +T7] extends Product {
diff --git a/src/library/scala/Product8.scala b/src/library/scala/Product8.scala
index 0bed89d5f5..7d9ffd0340 100644
--- a/src/library/scala/Product8.scala
+++ b/src/library/scala/Product8.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product8 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8](x:Any): Option[Product8[T1, T2, T3, T4, T5, T6, T7, T8]] =
+ if(x.isInstanceOf[Product8[T1, T2, T3, T4, T5, T6, T7, T8]]) Some(x.asInstanceOf[Product8[T1, T2, T3, T4, T5, T6, T7, T8]]) else None
+}
+
/** Product8 is a cartesian product of 8 components
*/
trait Product8 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8] extends Product {
diff --git a/src/library/scala/Product9.scala b/src/library/scala/Product9.scala
index a07157ba6b..14538e3c42 100644
--- a/src/library/scala/Product9.scala
+++ b/src/library/scala/Product9.scala
@@ -7,11 +7,16 @@
** |/ **
\* */
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala
import Predef._
+object Product9 {
+ def unapply[T1, T2, T3, T4, T5, T6, T7, T8, T9](x:Any): Option[Product9[T1, T2, T3, T4, T5, T6, T7, T8, T9]] =
+ if(x.isInstanceOf[Product9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]) Some(x.asInstanceOf[Product9[T1, T2, T3, T4, T5, T6, T7, T8, T9]]) else None
+}
+
/** Product9 is a cartesian product of 9 components
*/
trait Product9 [+T1, +T2, +T3, +T4, +T5, +T6, +T7, +T8, +T9] extends Product {
diff --git a/src/library/scala/Tuple1.scala b/src/library/scala/Tuple1.scala
index 7e5c91c34a..9bd87e1798 100644
--- a/src/library/scala/Tuple1.scala
+++ b/src/library/scala/Tuple1.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple1 is the canonical representation of a @see Product1 */
diff --git a/src/library/scala/Tuple2.scala b/src/library/scala/Tuple2.scala
index 1f983a378b..7021587d3f 100644
--- a/src/library/scala/Tuple2.scala
+++ b/src/library/scala/Tuple2.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple2 is the canonical representation of a @see Product2 */
diff --git a/src/library/scala/Tuple3.scala b/src/library/scala/Tuple3.scala
index 029ee32b9b..5fea64bb8b 100644
--- a/src/library/scala/Tuple3.scala
+++ b/src/library/scala/Tuple3.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple3 is the canonical representation of a @see Product3 */
diff --git a/src/library/scala/Tuple4.scala b/src/library/scala/Tuple4.scala
index 396bbdbd2f..1ef6b8a04f 100644
--- a/src/library/scala/Tuple4.scala
+++ b/src/library/scala/Tuple4.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple4 is the canonical representation of a @see Product4 */
diff --git a/src/library/scala/Tuple5.scala b/src/library/scala/Tuple5.scala
index 356c239738..dc9fb37ffc 100644
--- a/src/library/scala/Tuple5.scala
+++ b/src/library/scala/Tuple5.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple5 is the canonical representation of a @see Product5 */
diff --git a/src/library/scala/Tuple6.scala b/src/library/scala/Tuple6.scala
index fd3f7590c1..d4faf96b41 100644
--- a/src/library/scala/Tuple6.scala
+++ b/src/library/scala/Tuple6.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple6 is the canonical representation of a @see Product6 */
diff --git a/src/library/scala/Tuple7.scala b/src/library/scala/Tuple7.scala
index ec0ae60c22..e4dae669bb 100644
--- a/src/library/scala/Tuple7.scala
+++ b/src/library/scala/Tuple7.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple7 is the canonical representation of a @see Product7 */
diff --git a/src/library/scala/Tuple8.scala b/src/library/scala/Tuple8.scala
index f0065f0a21..7776285288 100644
--- a/src/library/scala/Tuple8.scala
+++ b/src/library/scala/Tuple8.scala
@@ -9,7 +9,7 @@
// $Id$
-// generated on Tue Nov 28 14:03:53 CET 2006
+// generated on Tue Nov 28 17:25:56 CET 2006
package scala;
/** Tuple8 is the canonical representation of a @see Product8 */
diff --git a/test/files/run/misc.scala b/test/files/run/misc.scala
index b705606342..4ae0f37007 100644
--- a/test/files/run/misc.scala
+++ b/test/files/run/misc.scala
@@ -222,9 +222,9 @@ Console.println;
Console.println(
true // Foo(3,'a',Bar()).caseElement( -1 ) == null // throws Exception now
- && Foo(3,'a',Bar()).element( 1 ) == 3
- && Foo(3,'a',Bar()).element( 2 ) == 'a'
- && Foo(3,'a',Bar()).element( 3 ) == Bar()
+ && Foo(3,'a',Bar()).element( 0 ) == 3
+ && Foo(3,'a',Bar()).element( 1 ) == 'a'
+ && Foo(3,'a',Bar()).element( 2 ) == Bar()
&& true // Foo(3,'a',Bar()).caseElement( 3 ) == null // throws Exception now
&& Bar().arity == 0
&& Foo(3,'a',Bar()).arity == 3);