diff options
author | Martin Odersky <odersky@gmail.com> | 2005-02-14 16:53:48 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2005-02-14 16:53:48 +0000 |
commit | 4f59c83f138487121c611cd904e4d910157b99a9 (patch) | |
tree | 68b10dc51db4baa6d40f1288234a14878746e721 /sources | |
parent | 5dfd488748730f70934d98b747ffbab0159c6eda (diff) | |
download | scala-4f59c83f138487121c611cd904e4d910157b99a9.tar.gz scala-4f59c83f138487121c611cd904e4d910157b99a9.tar.bz2 scala-4f59c83f138487121c611cd904e4d910157b99a9.zip |
*** empty log message ***
Diffstat (limited to 'sources')
8 files changed, 45 insertions, 49 deletions
diff --git a/sources/scala/Predef.scala b/sources/scala/Predef.scala index c8eec04235..938b27a59b 100644 --- a/sources/scala/Predef.scala +++ b/sources/scala/Predef.scala @@ -53,13 +53,14 @@ object Predef { * @param xs the elements to put in the array * @return the array containing elements xs. */ - def Array[A](xs: A*): Array[A] = { +/* + def Array[A](xs: A*): Array[A] = { val array = new Array[A](xs.length); var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } -/* +*/ def Array[A <: AnyRef](xs: A*): Array[A] = { val array = new Array[A](xs.length); var i = 0; @@ -67,63 +68,61 @@ object Predef { array; } - def Array(x: boolean, xs: boolean*): Array[boolean] = { - val array = new Array[boolean](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: boolean*): Array[boolean] = { + val array = new Array[boolean](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } - def Array(x: byte, xs: byte*): Array[byte] = { - val array = new Array[byte](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: byte*): Array[byte] = { + val array = new Array[byte](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } - def Array(x: short, xs: short*): Array[short] = { - val array = new Array[short](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: short*): Array[short] = { + val array = new Array[short](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } - def Array(x: char, xs: char*): Array[char] = { - val array = new Array[char](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: char*): Array[char] = { + val array = new Array[char](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } - def Array(x: int, xs: int*): Array[int] = { - val array = new Array[int](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: int*): Array[int] = { + val array = new Array[int](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } - def Array(x: long, xs: long*): Array[long] = { - val array = new Array[long](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: long*): Array[long] = { + val array = new Array[long](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } - def Array(x: float, xs: float*): Array[float] = { - val array = new Array[float](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: float*): Array[float] = { + val array = new Array[float](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } - def Array(x: double, xs: double*): Array[double] = { - val array = new Array[double](xs.length + 1); - array(0) = x; - var i = 1; + def Array(xs: double*): Array[double] = { + val array = new Array[double](xs.length); + var i = 0; for (val x <- xs.elements) { array(i) = x; i = i + 1; } array; } -*/ + def Array(xs: unit*): Array[unit] = { + val array = new Array[unit](xs.length); + var i = 0; + for (val x <- xs.elements) { array(i) = x; i = i + 1; } + array; + } + // errors and asserts ------------------------------------------------- def error(message: String): All = throw new Error(message); diff --git a/sources/scala/tools/nsc/ast/parser/Lexical.scala b/sources/scala/tools/nsc/ast/parser/Lexical.scala index b3d12948c5..0daa68febe 100644 --- a/sources/scala/tools/nsc/ast/parser/Lexical.scala +++ b/sources/scala/tools/nsc/ast/parser/Lexical.scala @@ -753,7 +753,6 @@ abstract class Lexical: ParserPhase { enterKeyword("<-", LARROW); enterKeyword("<:", SUBTYPE); enterKeyword(">:", SUPERTYPE); - enterKeyword("<%", VIEWBOUND); enterKeyword("#", HASH); enterKeyword("@", AT); diff --git a/sources/scala/tools/nsc/ast/parser/Tokens.scala b/sources/scala/tools/nsc/ast/parser/Tokens.scala index 8f3247acd3..682e12581d 100644 --- a/sources/scala/tools/nsc/ast/parser/Tokens.scala +++ b/sources/scala/tools/nsc/ast/parser/Tokens.scala @@ -73,7 +73,6 @@ object Tokens { val SUPERTYPE = 70; val HASH = 71; val AT = 72; - val VIEWBOUND = 73; /** parenthesis */ val LPAREN = 90; diff --git a/sources/scala/tools/nsc/symtab/Definitions.scala b/sources/scala/tools/nsc/symtab/Definitions.scala index 205ada1bf4..f9b4be936e 100755 --- a/sources/scala/tools/nsc/symtab/Definitions.scala +++ b/sources/scala/tools/nsc/symtab/Definitions.scala @@ -122,7 +122,7 @@ abstract class Definitions: SymbolTable { private def newTypeParam(owner: Symbol, index: int): Symbol = owner.newTypeParameter(Position.NOPOS, "T" + index) - .setInfo(TypeBounds(AllClass.tpe, AnyClass.tpe, AnyClass.tpe)); + .setInfo(TypeBounds(AllClass.tpe, AnyClass.tpe)); def init = { RootClass = diff --git a/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala b/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala index 3964a18427..08a909c781 100755 --- a/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala +++ b/sources/scala/tools/nsc/symtab/classfile/ClassfileParser.scala @@ -367,8 +367,8 @@ abstract class ClassfileParser { private def getScope(flags: int): Scope = if ((flags & JAVA_ACC_STATIC) != 0) staticMembers else classMembers; - private def transFlags(flags: int): int = { - var res = 0; + private def transFlags(flags: int): long = { + var res = 0l; if ((flags & JAVA_ACC_PRIVATE) != 0) res = res | PRIVATE else if ((flags & JAVA_ACC_PROTECTED) != 0) @@ -380,7 +380,7 @@ abstract class ClassfileParser { if ((flags & JAVA_ACC_FINAL) != 0) res = res | FINAL; if ((flags & JAVA_ACC_INTERFACE) != 0) - res = res | TRAIT | ABSTRACT; + res = res | TRAIT | INTERFACE | ABSTRACT; if ((flags & JAVA_ACC_SYNTHETIC) != 0) res = res | SYNTHETIC; res | JAVA; diff --git a/sources/scala/tools/nsc/symtab/classfile/MetaParser.scala b/sources/scala/tools/nsc/symtab/classfile/MetaParser.scala index dfa8804bf7..861fa7d853 100755 --- a/sources/scala/tools/nsc/symtab/classfile/MetaParser.scala +++ b/sources/scala/tools/nsc/symtab/classfile/MetaParser.scala @@ -66,7 +66,6 @@ abstract class MetaParser{ .setFlag(vflag) .setInfo(TypeBounds( definitions.AllClass.tpe, - definitions.AnyClass.tpe, definitions.AnyClass.tpe)); locals enter sym; nextToken(); diff --git a/sources/scala/tools/scalac/ast/parser/MarkupParser.scala b/sources/scala/tools/scalac/ast/parser/MarkupParser.scala index e5b721577c..f46d0d7a3c 100644 --- a/sources/scala/tools/scalac/ast/parser/MarkupParser.scala +++ b/sources/scala/tools/scalac/ast/parser/MarkupParser.scala @@ -197,7 +197,7 @@ class MarkupParser(unit: CompilationUnit, s: Scanner, p: Parser, presWS: boolean } nextch; } - new String( Predef.Array[char]( i.asInstanceOf[char] )) + new String(Predef.Array(i.asInstanceOf[char])) } /** Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->' * diff --git a/sources/scala/tools/scalac/typechecker/RefCheck.scala b/sources/scala/tools/scalac/typechecker/RefCheck.scala index dbb7b83d21..52733ed965 100755 --- a/sources/scala/tools/scalac/typechecker/RefCheck.scala +++ b/sources/scala/tools/scalac/typechecker/RefCheck.scala @@ -968,12 +968,12 @@ class RefCheck(globl: scalac.Global) extends Transformer(globl) { if (tree.isType()) { val resultType = tree.getType().deconst(); val resultArgs = resultType.typeArgs(); - if (resultType.symbol() == defs.ARRAY_CLASS && - resultArgs.length == 1 && - resultArgs(0).symbol() == defs.ANY_CLASS) - { - //unit.warning(tree.pos, "Array[Any] not supported"); - } + if (resultType.symbol() == defs.ARRAY_CLASS && resultArgs.length == 1) { + if (resultArgs(0).symbol() == defs.ANY_CLASS) + unit.error(tree.pos, "Array[Any] not supported"); + else if (resultArgs(0).symbol() == defs.ANYVAL_CLASS) + unit.error(tree.pos, "Array[AnyVal] not supported"); + } gen.mkType(tree.pos, resultType); } else tree; |