diff options
author | Martin Odersky <odersky@gmail.com> | 2005-02-21 17:19:28 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-02-21 17:19:28 +0000 |
commit | a50c72311952db8e6273a4048deee806db36110a (patch) | |
tree | 203bdce52f0552f79c904a0203cc4875be3d94eb /sources/scala/tools/nsc/symtab/Definitions.scala | |
parent | 1b7d5dbc1f4a36b3099b5cb376c1dd6f8f747295 (diff) | |
download | scala-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-x | sources/scala/tools/nsc/symtab/Definitions.scala | 26 |
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, "==") |