diff options
author | Martin Odersky <odersky@gmail.com> | 2003-11-18 14:22:56 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-11-18 14:22:56 +0000 |
commit | 0d064c5f91d0ba8640785841858881a7e1eb9f82 (patch) | |
tree | f5684b40ffc469aee2c617801c44560322cb3e18 | |
parent | 3b343cbf530a0de5755495a523a23a57846ec572 (diff) | |
download | scala-0d064c5f91d0ba8640785841858881a7e1eb9f82.tar.gz scala-0d064c5f91d0ba8640785841858881a7e1eb9f82.tar.bz2 scala-0d064c5f91d0ba8640785841858881a7e1eb9f82.zip |
*** empty log message ***
-rw-r--r-- | doc/reference/ScalaReference.tex | 10 | ||||
-rw-r--r-- | sources/scala/tools/dtd2scala/DeclToSQL.scala | 4 | ||||
-rw-r--r-- | sources/scala/tools/dtd2scala/DeclToScala.scala | 10 | ||||
-rw-r--r-- | sources/scala/tools/scalac/Main.scala | 1 | ||||
-rw-r--r-- | sources/scala/tools/scalac/ast/TreeList.scala | 4 | ||||
-rw-r--r-- | sources/scala/tools/scalac/ast/parser/Parser.scala | 11 | ||||
-rw-r--r-- | sources/scala/tools/scalac/ast/parser/ParserPhase.scala | 2 | ||||
-rw-r--r-- | sources/scala/tools/scalac/ast/parser/Scanner.scala | 4 | ||||
-rw-r--r-- | sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala | 2 | ||||
-rw-r--r-- | sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala | 16 | ||||
-rw-r--r-- | sources/scala/xml/FactoryAdapter.scala | 2 | ||||
-rw-r--r-- | sources/scala/xml/Utility.scala | 2 | ||||
-rw-r--r-- | sources/scalac/ast/parser/Parser.java | 11 | ||||
-rw-r--r-- | sources/scalac/symtab/Type.java | 6 | ||||
-rw-r--r-- | sources/scalac/typechecker/Infer.java | 2 |
15 files changed, 41 insertions, 46 deletions
diff --git a/doc/reference/ScalaReference.tex b/doc/reference/ScalaReference.tex index 3b908da764..8b57be5ea4 100644 --- a/doc/reference/ScalaReference.tex +++ b/doc/reference/ScalaReference.tex @@ -2951,7 +2951,7 @@ A semicolon preceding the \code{while} symbol of a do loop expression is ignored \section{Comprehensions} \syntax\begin{lstlisting} - Expr ::= for `(' Enumerators `)' (do | yield) Expr + Expr ::= for `(' Enumerators `)' [yield] Expr Enumerator ::= Generator {`;' Enumerator} Enumerator ::= Generator | Expr @@ -2992,7 +2992,7 @@ is translated to \item A for-comprehension -~\lstinline@for (val $p$ <- $e\,$) do $e'$@~ +~\lstinline@for (val $p$ <- $e\,$) $e'$@~ is translated to ~\lstinline@$e$.foreach { case $p$ => $e'$ }@. @@ -3010,13 +3010,13 @@ $e$.flatmap { case $p$ => for (val $p'$ <- $e'; \ldots$) yield $e''$ } . \item A for-comprehension \begin{lstlisting} -for (val $p$ <- $e$; val $p'$ <- $e'; \ldots$) do $e''$ . +for (val $p$ <- $e$; val $p'$ <- $e'; \ldots$) $e''$ . \end{lstlisting} where \lstinline@$\ldots$@ is a (possibly empty) sequence of generators or filters, is translated to \begin{lstlisting} -$e$.foreach { case $p$ => for (val $p'$ <- $e'; \ldots$) do $e''$ } . +$e$.foreach { case $p$ => for (val $p'$ <- $e'; \ldots$) $e''$ } . \end{lstlisting} \end{itemize} @@ -3094,7 +3094,7 @@ Here is a function to compute the scalar product of two vectors: \begin{lstlisting} def scalprod(xs: Array[double], ys: Array[double]) { var acc = 0.0; - for (val Pair(x, y) <- xs zip ys) do acc = acc + x * y; + for (val Pair(x, y) <- xs zip ys) acc = acc + x * y; acc } \end{lstlisting} diff --git a/sources/scala/tools/dtd2scala/DeclToSQL.scala b/sources/scala/tools/dtd2scala/DeclToSQL.scala index fd024270ec..0334a4e27c 100644 --- a/sources/scala/tools/dtd2scala/DeclToSQL.scala +++ b/sources/scala/tools/dtd2scala/DeclToSQL.scala @@ -50,7 +50,7 @@ class DeclToSQL(fOut:PrintWriter,mName:String,elemMap:Map[String,ElemDecl ] ) { case _ => ; } val m = new HashMap[String, Rhs]; - for( val decl <- elemMap.values ) do { + for( val decl <- elemMap.values ) { //System.err.print("[processing element "+decl.name // +" "+decl.contentModel+"]"); val orig = RegExp.parse( decl.contentModel ); @@ -59,7 +59,7 @@ class DeclToSQL(fOut:PrintWriter,mName:String,elemMap:Map[String,ElemDecl ] ) { rhs = new Rhs( decl.name ); singles( orig ); rhs.containsText = decl.containsText; - for( val aname <- decl.attribs.keys ) do rhs.addSingle( Attr( aname )); + for( val aname <- decl.attribs.keys ) rhs.addSingle( Attr( aname )); m.update( decl.name, rhs ); } m diff --git a/sources/scala/tools/dtd2scala/DeclToScala.scala b/sources/scala/tools/dtd2scala/DeclToScala.scala index 26a864891c..048e1bfa58 100644 --- a/sources/scala/tools/dtd2scala/DeclToScala.scala +++ b/sources/scala/tools/dtd2scala/DeclToScala.scala @@ -36,7 +36,7 @@ class DeclToScala(fOut:PrintWriter, n.children.elements.foreach { n => writeNode(n) } } case "elementBinding" => { - for( val decl <- elemMap.values.elements ) do { + for( val decl <- elemMap.values.elements ) { fOut.println(); printIndent(); lookup += "elementName" -> decl.name; @@ -51,7 +51,7 @@ class DeclToScala(fOut:PrintWriter, } case "attributeAssign" => { - for( val aDecl <- curAttribs.keys.elements ) do { + for( val aDecl <- curAttribs.keys.elements ) { lookup += "attributeName" -> aDecl; n.children.elements.foreach{ n => writeNode( n ) } } @@ -59,7 +59,7 @@ class DeclToScala(fOut:PrintWriter, } case "attributeBinding" => { - for( val aDecl <- curAttribs.keys.elements ) do { + for( val aDecl <- curAttribs.keys.elements ) { lookup += "attributeName" -> aDecl; //Console.println("attributeName is "+aDecl+" = "+lookup("attributeName")); n.children.elements.foreach{ n => writeNode( n ) } @@ -125,7 +125,7 @@ class DeclToScala(fOut:PrintWriter, /** Prints the indent. */ def printIndent():Unit = { - for (val i<-List.range(0, fIndent)) do { + for (val i<-List.range(0, fIndent)) { fOut.print(' '); } } @@ -153,7 +153,7 @@ class DeclToScala(fOut:PrintWriter, // /* replace dash, colons with underscore, keywords with appended $ */ private def cooked( ckd:StringBuffer, raw:String, off:int ):String = { - for( val i <- List.range( off, raw.length()) ) do { + for( val i <- List.range( off, raw.length()) ) { val _ = raw.charAt( i ).match { case '-' => ckd.append( '_' ) diff --git a/sources/scala/tools/scalac/Main.scala b/sources/scala/tools/scalac/Main.scala index c0a5a3ed0b..7cb1a3659f 100644 --- a/sources/scala/tools/scalac/Main.scala +++ b/sources/scala/tools/scalac/Main.scala @@ -25,6 +25,7 @@ object Main { System.getProperty("scala.version", "unknown version"); def main(args: Array[String]): unit = { + System.out.println("new scalac"); val reporter = new Reporter(); val command = new CompilerCommand( PRODUCT, VERSION, reporter, new CompilerPhases()); diff --git a/sources/scala/tools/scalac/ast/TreeList.scala b/sources/scala/tools/scalac/ast/TreeList.scala index 0cc2365789..0398ff50a7 100644 --- a/sources/scala/tools/scalac/ast/TreeList.scala +++ b/sources/scala/tools/scalac/ast/TreeList.scala @@ -34,12 +34,12 @@ final class TreeList(ts: Array[Tree]) { } def append(ts: Array[Tree]): unit = { - for (val j <- Iterator.range(0, ts.length)) do + for (val j <- Iterator.range(0, ts.length)) append(ts(j)); } def append(tl: TreeList): unit = { - for (val j <- Iterator.range(0, ts.length)) do + for (val j <- Iterator.range(0, ts.length)) append(tl.trees(j)); } diff --git a/sources/scala/tools/scalac/ast/parser/Parser.scala b/sources/scala/tools/scalac/ast/parser/Parser.scala index e1c1a3cca0..ffc38c8c9d 100644 --- a/sources/scala/tools/scalac/ast/parser/Parser.scala +++ b/sources/scala/tools/scalac/ast/parser/Parser.scala @@ -356,7 +356,7 @@ class Parser(unit: Unit) { */ def convertToParams(ts: Array[Tree]): Array[Tree$ValDef] = { val res = new Array[Tree$ValDef](ts.length); - for (val i <- Iterator.range(0, res.length)) do + for (val i <- Iterator.range(0, res.length)) res(i) = convertToParam(ts(i)); res; } @@ -811,13 +811,10 @@ class Parser(unit: Unit) { accept(LPAREN); val enums = enumerators(); accept(RPAREN); - if (s.token == DO) { - makeFor(s.skipToken(), enums, Names.foreach, Names.foreach, expr()) - } else if (s.token == YIELD) { + if (s.token == YIELD) makeFor(s.skipToken(), enums, Names.map, Names.flatmap, expr()) - } else { - syntaxError("`do' or `yield' expected", true) - } + else + makeFor(s.pos, enums, Names.foreach, Names.foreach, expr()) } else if (s.token == RETURN) { val pos = s.skipToken(); val e = diff --git a/sources/scala/tools/scalac/ast/parser/ParserPhase.scala b/sources/scala/tools/scalac/ast/parser/ParserPhase.scala index af445714c4..8f262a77a7 100644 --- a/sources/scala/tools/scalac/ast/parser/ParserPhase.scala +++ b/sources/scala/tools/scalac/ast/parser/ParserPhase.scala @@ -16,7 +16,7 @@ import scalac.Unit; class ParserPhase(global: Global, descriptor: PhaseDescriptor) extends Phase(global, descriptor) { def apply(units: Array[Unit]): unit = { - for (val i <- Iterator.range(0, units.length)) do { + for (val i <- Iterator.range(0, units.length)) { global.start(); units(i).body = new Parser(units(i)).parse(); global.stop("parsed " + units(i).source); diff --git a/sources/scala/tools/scalac/ast/parser/Scanner.scala b/sources/scala/tools/scalac/ast/parser/Scanner.scala index fd18e6f5a5..4b4c5a8869 100644 --- a/sources/scala/tools/scalac/ast/parser/Scanner.scala +++ b/sources/scala/tools/scalac/ast/parser/Scanner.scala @@ -749,9 +749,9 @@ class Scanner(_unit: Unit) extends TokenData { protected def init() = { initKeywords(); key = new Array[byte](maxKey+1); - for (val i <- Iterator.range(0, maxKey)) do + for (val i <- Iterator.range(0, maxKey)) key(i) = IDENTIFIER; - for (val j <- Iterator.range(0, numToken)) do + for (val j <- Iterator.range(0, numToken)) if (tokenName(j) != null) key(tokenName(j).index) = j.asInstanceOf[byte]; } diff --git a/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala b/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala index 2373c10e8e..c99eaea782 100644 --- a/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala +++ b/sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala @@ -96,7 +96,7 @@ class HTMLTreePrinter(stream: OutputStream) extends TextTreePrinter(stream) { } override protected def printString(str: String): unit = { - for (val i <- Iterator.range(0, str.length())) do { + for (val i <- Iterator.range(0, str.length())) { val c = str.charAt(i); val entity: String = c match { case '<' => "lt"; diff --git a/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala b/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala index 28ff80c93a..fdc1f157cd 100644 --- a/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala +++ b/sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala @@ -122,7 +122,7 @@ class TextTreePrinter(_out: PrintWriter, autoFlush: boolean) with TreePrinter { } protected def print(texts: List[Text]): unit = - for (val text <- texts) do print(text); + for (val text <- texts) print(text); protected final val KW_ABSTRACT = Keyword("abstract"); protected final val KW_CASE = Keyword("case"); @@ -199,7 +199,7 @@ class TextTreePrinter(_out: PrintWriter, autoFlush: boolean) with TreePrinter { def print(unit: Unit): unit = { printUnitHeader(unit); if (unit.body != null) { - for (val i <- Iterator.range(0, unit.body.length)) do { + for (val i <- Iterator.range(0, unit.body.length)) { print(unit.body(i)); print(TXT_BLOCK_SEP); } @@ -389,7 +389,7 @@ class TextTreePrinter(_out: PrintWriter, autoFlush: boolean) with TreePrinter { indent(); print(TXT_BLOCK_BEGIN); - for (val i <- Iterator.range(0, tags.length)) do { + for (val i <- Iterator.range(0, tags.length)) { print(KW_CASE); print(Space); print("" + tags(i)); @@ -501,7 +501,7 @@ class TextTreePrinter(_out: PrintWriter, autoFlush: boolean) with TreePrinter { print(tpe); indent(); print(TXT_LEFT_BRACKET); - for (val i <- Iterator.range(0, args.length)) do { + for (val i <- Iterator.range(0, args.length)) { if (i > 0) print(TXT_COMMA_SP); print(args(i)); } @@ -524,7 +524,7 @@ class TextTreePrinter(_out: PrintWriter, autoFlush: boolean) with TreePrinter { protected def printArray(trees: Array[Tree], open: Text, close: Text, sep: Text): unit = { indent(); print(open); - for (val i <- Iterator.range(0, trees.length)) do { + for (val i <- Iterator.range(0, trees.length)) { if (i > 0) print(sep); print(trees(i)); } @@ -623,7 +623,7 @@ class TextTreePrinter(_out: PrintWriter, autoFlush: boolean) with TreePrinter { protected def printParams(tparams: Array[Tree$AbsTypeDef]): unit = if (tparams.length > 0) { print(TXT_LEFT_BRACKET); - for (val i <- Iterator.range(0, tparams.length)) do { + for (val i <- Iterator.range(0, tparams.length)) { if (i > 0) print(TXT_COMMA_SP); printParam(tparams(i)); } @@ -631,12 +631,12 @@ class TextTreePrinter(_out: PrintWriter, autoFlush: boolean) with TreePrinter { } protected def printParams(vparamss: Array[Array[Tree$ValDef]]): unit = - for (val i <- Iterator.range(0, vparamss.length)) do + for (val i <- Iterator.range(0, vparamss.length)) printParams(vparamss(i)); protected def printParams(vparams: Array[Tree$ValDef]): unit = { print(TXT_LEFT_PAREN); - for (val i <- Iterator.range(0, vparams.length)) do { + for (val i <- Iterator.range(0, vparams.length)) { if (i > 0) print(TXT_COMMA_SP); printParam(vparams(i)); } diff --git a/sources/scala/xml/FactoryAdapter.scala b/sources/scala/xml/FactoryAdapter.scala index 2d6e5464c5..54403fabad 100644 --- a/sources/scala/xml/FactoryAdapter.scala +++ b/sources/scala/xml/FactoryAdapter.scala @@ -160,7 +160,7 @@ abstract class FactoryAdapter else { map = new HashMap[String,String]; - for( val i <- List.range( 0, attributes.getLength() )) do { + for( val i <- List.range( 0, attributes.getLength() )) { val attrLocalName = attributes.getLocalName(i); //String attrQName = attributes.getQName(i); //String attrURI = attributes.getURI(i); diff --git a/sources/scala/xml/Utility.scala b/sources/scala/xml/Utility.scala index 6e65dd104d..0303e0350a 100644 --- a/sources/scala/xml/Utility.scala +++ b/sources/scala/xml/Utility.scala @@ -13,7 +13,7 @@ object Utility { */ def escape( text:String ) = { val s = new StringBuffer(); - for( val c <- new IterableString(text).elements ) do c match { + for( val c <- new IterableString(text).elements ) c match { case '<' => val _ = s.append("<"); case '>' => val _ = s.append(">"); case '&' => val _ = s.append("&"); diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java index 21b2e6e0bf..d6dc8fd37a 100644 --- a/sources/scalac/ast/parser/Parser.java +++ b/sources/scalac/ast/parser/Parser.java @@ -865,14 +865,11 @@ public class Parser implements Tokens { accept(LPAREN); enums = enumerators(); accept(RPAREN); - if (s.token == DO) { - return makeFor(s.skipToken(), enums, Names.foreach, Names.foreach, expr()); - } else if (s.token == YIELD) { + if (s.token == YIELD) return makeFor(s.skipToken(), enums, Names.map, Names.flatmap, expr()); - } else { - return syntaxError("`do' or `yield' expected", true); - } - } else if (s.token == RETURN) { + else + return makeFor(s.pos, enums, Names.foreach, Names.foreach, expr()); + } else if (s.token == RETURN) { int pos = s.skipToken(); Tree e = (isExprIntro()) ? expr() : make.Block(pos, Tree.EMPTY_ARRAY); diff --git a/sources/scalac/symtab/Type.java b/sources/scalac/symtab/Type.java index 632900eea4..e9a220fd55 100644 --- a/sources/scalac/symtab/Type.java +++ b/sources/scalac/symtab/Type.java @@ -1454,14 +1454,14 @@ public class Type implements Modifiers, Kinds, TypeTags, EntryTags { */ public static class SubstTypeMap extends SubstMap { Type[] to; - protected SubstTypeMap(Symbol[] from, Type[] to) { + public SubstTypeMap(Symbol[] from, Type[] to) { super(from); this.to = to; } - protected Type replacement(int i, Type fromtp) { + public Type replacement(int i, Type fromtp) { return to[i]; } - protected SubstMap exclude(Symbol[] newfrom, Symbol[] excluded) { + public SubstMap exclude(Symbol[] newfrom, Symbol[] excluded) { return new SubstTypeMap(newfrom, excludeTypes(from, excluded, to)); } } diff --git a/sources/scalac/typechecker/Infer.java b/sources/scalac/typechecker/Infer.java index d0feffd3ac..ea6cb4ddc4 100644 --- a/sources/scalac/typechecker/Infer.java +++ b/sources/scalac/typechecker/Infer.java @@ -630,8 +630,8 @@ public class Infer implements Modifiers, Kinds { targs[i] = instantiateToBound( tvars[i], variance(tparams[i], params)); } - return targs; } catch (NoInstance ex) { + for (int i = 0; i < tvars.length; i++) targs[i] = Type.AnyType; } } return targs; |