diff options
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<n<=arity, otherwise null + * Returns the n-th projection of this product if 0<=n<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 <= i < k</code> + /** for a case class <code>A(x_1,...,x_k))</code>, returns <code>x_(i+1)</code> + * for <code>0 <= i < 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); |