summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/symtab/Definitions.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-05-11 13:26:06 +0000
committerMartin Odersky <odersky@gmail.com>2005-05-11 13:26:06 +0000
commit88a54be387762d1fdf96a8a128c84e95e613873c (patch)
treebfa66bd637aa0d44e40631403a4b879ccb6e98d4 /sources/scala/tools/nsc/symtab/Definitions.scala
parentcb6e13ecc4c8f011709d971519ac8aec57b7497a (diff)
downloadscala-88a54be387762d1fdf96a8a128c84e95e613873c.tar.gz
scala-88a54be387762d1fdf96a8a128c84e95e613873c.tar.bz2
scala-88a54be387762d1fdf96a8a128c84e95e613873c.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/symtab/Definitions.scala')
-rwxr-xr-xsources/scala/tools/nsc/symtab/Definitions.scala27
1 files changed, 17 insertions, 10 deletions
diff --git a/sources/scala/tools/nsc/symtab/Definitions.scala b/sources/scala/tools/nsc/symtab/Definitions.scala
index bc78fb2ad8..9b51dfe620 100755
--- a/sources/scala/tools/nsc/symtab/Definitions.scala
+++ b/sources/scala/tools/nsc/symtab/Definitions.scala
@@ -62,7 +62,10 @@ abstract class Definitions: SymbolTable {
var NilModule: Symbol = _;
var ConsClass: Symbol = _;
var RepeatedParamClass: Symbol = _;
+ var ByNameParamClass: Symbol = _;
+ val MaxTupleArity = 9;
+ val MaxFunctionArity = 9;
def TupleClass(i: int): Symbol = getClass("scala.Tuple" + i);
def FunctionClass(i: int): Symbol = getClass("scala.Function" + i);
@@ -128,6 +131,15 @@ abstract class Definitions: SymbolTable {
clazz
}
+ private def newCovariantPolyClass(owner: Symbol, name: Name, parent: Symbol => Type): Symbol = {
+ val clazz = newClass(owner, name, List());
+ val tparam = newTypeParam(clazz, 0) setFlag COVARIANT;
+ clazz.setInfo(
+ PolyType(
+ List(tparam),
+ ClassInfoType(List(parent(tparam)), new Scope(), clazz)))
+ }
+
private def newAlias(owner: Symbol, name: Name, alias: Type): Symbol = {
val tpsym = owner.newAliasType(Position.NOPOS, name.toTypeName);
tpsym.setInfo(alias);
@@ -212,16 +224,11 @@ abstract class Definitions: SymbolTable {
MatchErrorModule = getModule("scala.MatchError");
NilModule = getModule("scala.Nil");
ConsClass = getClass("scala.$colon$colon");
- RepeatedParamClass = newClass(ScalaPackageClass, nme.REPEATED_PARAM_CLASS_NAME, List());
- { val tparam = newTypeParam(RepeatedParamClass, 0);
- RepeatedParamClass.setInfo(
- PolyType(
- List(tparam),
- ClassInfoType(
- List(typeRef(SeqClass.typeConstructor.prefix, SeqClass, List(tparam.typeConstructor))),
- new Scope(),
- RepeatedParamClass)))
- }
+ RepeatedParamClass = newCovariantPolyClass(
+ ScalaPackageClass, nme.REPEATED_PARAM_CLASS_NAME,
+ tparam => typeRef(SeqClass.typeConstructor.prefix, SeqClass, List(tparam.typeConstructor)));
+ ByNameParamClass = newCovariantPolyClass(
+ ScalaPackageClass, nme.BYNAME_PARAM_CLASS_NAME, tparam => AnyClass.typeConstructor);
// members of class scala.Any
Any_== = newMethod(