summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-11-18 14:22:56 +0000
committerMartin Odersky <odersky@gmail.com>2003-11-18 14:22:56 +0000
commit0d064c5f91d0ba8640785841858881a7e1eb9f82 (patch)
treef5684b40ffc469aee2c617801c44560322cb3e18
parent3b343cbf530a0de5755495a523a23a57846ec572 (diff)
downloadscala-0d064c5f91d0ba8640785841858881a7e1eb9f82.tar.gz
scala-0d064c5f91d0ba8640785841858881a7e1eb9f82.tar.bz2
scala-0d064c5f91d0ba8640785841858881a7e1eb9f82.zip
*** empty log message ***
-rw-r--r--doc/reference/ScalaReference.tex10
-rw-r--r--sources/scala/tools/dtd2scala/DeclToSQL.scala4
-rw-r--r--sources/scala/tools/dtd2scala/DeclToScala.scala10
-rw-r--r--sources/scala/tools/scalac/Main.scala1
-rw-r--r--sources/scala/tools/scalac/ast/TreeList.scala4
-rw-r--r--sources/scala/tools/scalac/ast/parser/Parser.scala11
-rw-r--r--sources/scala/tools/scalac/ast/parser/ParserPhase.scala2
-rw-r--r--sources/scala/tools/scalac/ast/parser/Scanner.scala4
-rw-r--r--sources/scala/tools/scalac/ast/printer/HTMLPrinter.scala2
-rw-r--r--sources/scala/tools/scalac/ast/printer/TextTreePrinter.scala16
-rw-r--r--sources/scala/xml/FactoryAdapter.scala2
-rw-r--r--sources/scala/xml/Utility.scala2
-rw-r--r--sources/scalac/ast/parser/Parser.java11
-rw-r--r--sources/scalac/symtab/Type.java6
-rw-r--r--sources/scalac/typechecker/Infer.java2
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("&lt;");
case '>' => val _ = s.append("&gt;");
case '&' => val _ = s.append("&amp;");
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;