summaryrefslogtreecommitdiff
path: root/sources/scala/tools/nsc/symtab/Definitions.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2005-02-21 17:19:28 +0000
committerMartin Odersky <odersky@gmail.com>2005-02-21 17:19:28 +0000
commita50c72311952db8e6273a4048deee806db36110a (patch)
tree203bdce52f0552f79c904a0203cc4875be3d94eb /sources/scala/tools/nsc/symtab/Definitions.scala
parent1b7d5dbc1f4a36b3099b5cb376c1dd6f8f747295 (diff)
downloadscala-a50c72311952db8e6273a4048deee806db36110a.tar.gz
scala-a50c72311952db8e6273a4048deee806db36110a.tar.bz2
scala-a50c72311952db8e6273a4048deee806db36110a.zip
*** empty log message ***
Diffstat (limited to 'sources/scala/tools/nsc/symtab/Definitions.scala')
-rwxr-xr-xsources/scala/tools/nsc/symtab/Definitions.scala26
1 files changed, 23 insertions, 3 deletions
diff --git a/sources/scala/tools/nsc/symtab/Definitions.scala b/sources/scala/tools/nsc/symtab/Definitions.scala
index 11e4a10684..ea570ae388 100755
--- a/sources/scala/tools/nsc/symtab/Definitions.scala
+++ b/sources/scala/tools/nsc/symtab/Definitions.scala
@@ -63,6 +63,16 @@ abstract class Definitions: SymbolTable {
def TupleClass(i: int): Symbol = getClass("scala.Tuple" + i);
def FunctionClass(i: int): Symbol = getClass("scala.Function" + i);
+ def tupleType(elems: List[Type]) = {
+ val sym = TupleClass(elems.length);
+ typeRef(sym.info.prefix, sym, elems)
+ }
+
+ def functionType(formals: List[Type], restpe: Type) = {
+ val sym = FunctionClass(formals.length);
+ typeRef(sym.info.prefix, sym, formals ::: List(restpe))
+ }
+
// members of class scala.Any
var Any_== : Symbol = _;
var Any_!= : Symbol = _;
@@ -95,8 +105,9 @@ abstract class Definitions: SymbolTable {
i = j + 1;
j = fullname.pos('.', i)
}
- val result = sym.info.nonPrivateMember(fullname.subName(i, j).toTypeName)
- .suchThat(.hasFlag(MODULE));
+ val result =
+ if (module) sym.info.nonPrivateMember(fullname.subName(i, j)).suchThat(.hasFlag(MODULE));
+ else sym.info.nonPrivateMember(fullname.subName(i, j).toTypeName);
if (result == NoSymbol)
throw new FatalError((if (module) "object " else "class ") + fullname + " not found.");
result
@@ -175,7 +186,16 @@ 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(SeqClass.tpe));
+ RepeatedParamClass = newClass(ScalaPackageClass, nme.REPEATED_PARAM_CLASS_NAME, List());
+ { val tparam = newTypeParam(RepeatedParamClass, 0);
+ RepeatedParamClass.setInfo(
+ PolyType(
+ List(tparam),
+ ClassInfoType(
+ List(typeRef(SeqClass.tpe.prefix, SeqClass, List(tparam.typeConstructor))),
+ new Scope(),
+ RepeatedParamClass)))
+ }
// members of class scala.Any
Any_== = newMethod(AnyClass, "==")