From bfea9f20d231bc6b7fb75edbce277d883265b89d Mon Sep 17 00:00:00 2001 From: Burak Emir Date: Tue, 2 Jan 2007 16:51:29 +0000 Subject: * TupleN extends ProductN, again (genprod updated) * better comments and parameter names in scala.xml.MetaData typechecker * now handles special cases (n=0, n=1) for unapply correctly * * even if one returns a Option[Product1[T]] * typechecker now handles unapply return types correctly * * e.g. when returning Option[{A,B}] instead of Option[Product2[A,B]] --- src/build/genprod.scala | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'src/build') diff --git a/src/build/genprod.scala b/src/build/genprod.scala index 5ea86232db..229ef1ae7a 100644 --- a/src/build/genprod.scala +++ b/src/build/genprod.scala @@ -129,7 +129,7 @@ object FunctionFile { ** |/ ** \* */ -// $Id$ +// {"$Id$"} // generated by genprod on {new java.util.Date().toString()} {if(descriptiveComment(i).length > 0) "(with fancy comment)" else ""} {if(moreMethods(i).length > 0) "(with extra methods)" else ""} @@ -224,7 +224,8 @@ zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz */ object TupleFile { import genprod._ def make(i: Int) = { - val __typeArgs__ = covariantArgs(i).mkString("[",", ","]") + val __typeArgs__ = covariantArgs(i).mkString("[",", ","]") + val __typeArgRefs__ = targs(i).mkString("[",", ","]") val __fields__ = fields(i) /* __ *\ @@ -235,14 +236,15 @@ object TupleFile { ** |/ ** \* */ -// $Id$ +// {"$Id$"} // generated by genprod on {new java.util.Date().toString()} package scala /** {tupleClassname(i)} is the canonical representation of a @see {productClassname(i)} */ -case class {tupleClassname(i)}{__typeArgs__}({ __fields__ }) {{ +case class {tupleClassname(i)}{__typeArgs__}({ __fields__ }) + extends {productClassname(i)}{__typeArgRefs__} {{ override def toString() = {{ val sb = new compat.StringBuilder @@ -280,7 +282,7 @@ object ProductFile { ** |/ ** \* */ -// $Id$ +// {"$Id$"} // generated by genprod on {new java.util.Date().toString()} @@ -289,11 +291,8 @@ 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 + def unapply{__refArgs__}(x: {productClassname(i)}{__refArgs__}): Some[{productClassname(i)}{__refArgs__}] = + Some(x) }} /** {productClassname(i)} is a cartesian product of {i} components -- cgit v1.2.3