summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-11-14 16:55:21 +0000
committerMartin Odersky <odersky@gmail.com>2003-11-14 16:55:21 +0000
commit1ce2b54384639ff358071e8965a5cf39a5a43882 (patch)
tree4b17bb9ca078870b163db66db8f3ba77849ade00
parentd71d7bb6f1f6924cb27662b73fdcbf2b37bfd3ae (diff)
downloadscala-1ce2b54384639ff358071e8965a5cf39a5a43882.tar.gz
scala-1ce2b54384639ff358071e8965a5cf39a5a43882.tar.bz2
scala-1ce2b54384639ff358071e8965a5cf39a5a43882.zip
*** empty log message ***
-rw-r--r--sources/scala/Predef.scala4
-rw-r--r--sources/scala/tools/scalac/ast/parser/Parser.scala123
-rw-r--r--sources/scala/tools/scalac/ast/parser/Scanner.scala2
-rw-r--r--sources/scala/tools/scalai/ExpressionCompiler.java4
-rw-r--r--sources/scalac/Global.java2
-rw-r--r--sources/scalac/ast/Tree.java.tmpl4
-rw-r--r--sources/scalac/ast/TreeCloner.java2
-rw-r--r--sources/scalac/ast/TreeGen.java18
-rw-r--r--sources/scalac/symtab/Symbol.java6
-rw-r--r--sources/scalac/transformer/AddConstructors.java2
-rw-r--r--sources/scalac/transformer/AddInterfaces.java4
-rw-r--r--sources/scalac/transformer/Erasure.java36
-rw-r--r--sources/scalac/transformer/ExplicitOuterClassesPhase.java4
-rw-r--r--sources/scalac/transformer/TailCall.java8
-rw-r--r--sources/scalac/transformer/matching/CodeFactory.java6
-rw-r--r--sources/scalac/transformer/matching/Label.java4
-rw-r--r--sources/scalac/transformer/matching/LeftTracerInScala.java6
-rw-r--r--sources/scalac/transformer/matching/PatternMatcher.java16
-rw-r--r--sources/scalac/transformer/matching/SequenceMatcher.java4
-rw-r--r--sources/scalac/transformer/matching/TracerInScala.java2
-rwxr-xr-xtest/bin/scala-test19
21 files changed, 126 insertions, 150 deletions
diff --git a/sources/scala/Predef.scala b/sources/scala/Predef.scala
index fdea7c5b78..e97b60ae87 100644
--- a/sources/scala/Predef.scala
+++ b/sources/scala/Predef.scala
@@ -40,9 +40,9 @@ object Predef {
if (!assertion)
throw new Error("assertion failed");
}
- def assert(assertion: Boolean, message: String): Unit = {
+ def assert(assertion: Boolean, message: Any): Unit = {
if (!assertion)
- throw new Error(message);
+ throw new Error("assertion failed: " + message);
}
type Pair[+p, +q] = Tuple2[p, q];
diff --git a/sources/scala/tools/scalac/ast/parser/Parser.scala b/sources/scala/tools/scalac/ast/parser/Parser.scala
index 4d7435ea70..e1c1a3cca0 100644
--- a/sources/scala/tools/scalac/ast/parser/Parser.scala
+++ b/sources/scala/tools/scalac/ast/parser/Parser.scala
@@ -20,6 +20,7 @@ import scalac.ast._;
import Tree._;
import java.lang.{Integer, Long, Float, Double};
import scala.Iterator;
+import scala.tools.scalac.util.NewArray;
/** A recursive descent parser for the programming language Scala.
*
@@ -55,53 +56,6 @@ class Parser(unit: Unit) {
ts
}
-/////// HELPER FUNCTIONS ////////////////////////////////////////////////////
-
- def newTreeArray(trees: Tree*): Array[Tree] = {
- val arr = new Array[Tree](trees.length);
- var i = 0;
- for (val t <- trees.elements) do {
- arr(i) = t; i = i + 1;
- }
- arr
- }
-
- def newValDefArray(trees: Tree$ValDef*): Array[Tree$ValDef] = {
- val arr = new Array[Tree$ValDef](trees.length);
- var i = 0;
- for (val t <- trees.elements) do {
- arr(i) = t; i = i + 1;
- }
- arr
- }
-
- def newValDefArrayArray(trees: Array[Tree$ValDef]*): Array[Array[Tree$ValDef]] = {
- val arr = new Array[Array[Tree$ValDef]](trees.length);
- var i = 0;
- for (val t <- trees.elements) do {
- arr(i) = t; i = i + 1;
- }
- arr
- }
-
- def newCaseDefArray(trees: Tree$CaseDef*): Array[Tree$CaseDef] = {
- val arr = new Array[Tree$CaseDef](trees.length);
- var i = 0;
- for (val t <- trees.elements) do {
- arr(i) = t; i = i + 1;
- }
- arr
- }
-
- def newNameArray(trees: Name*): Array[Name] = {
- val arr = new Array[Name](trees.length);
- var i = 0;
- for (val t <- trees.elements) do {
- arr(i) = t; i = i + 1;
- }
- arr
- }
-
/////// ERROR HANDLING //////////////////////////////////////////////////////
private def skip(): unit = {
@@ -124,6 +78,7 @@ class Parser(unit: Unit) {
nparens = nparens + 1;
case LBRACE =>
nbraces = nbraces + 1;
+ case _ =>
}
s.nextToken();
}
@@ -245,23 +200,23 @@ class Parser(unit: Unit) {
make.Apply(
pos,
make.Select(pos, left, NameTransformer.encode(op)),
- newTreeArray(right));
+ NewArray.Tree(right));
} else {
val x: Name = fresh();
make.Block(
pos,
- newTreeArray(
+ NewArray.Tree(
make.ValDef(pos, 0, x, Tree.Empty, left),
make.Apply(
pos,
make.Select(pos, right, NameTransformer.encode(op)),
- newTreeArray(make.Ident(left.pos, x)))));
+ NewArray.Tree(make.Ident(left.pos, x)))));
}
} else {
make.Apply(
pos,
make.Ident(pos, NameTransformer.encode(op).toTypeName()),
- newTreeArray(left, right));
+ NewArray.Tree(left, right));
}
def scalaDot(pos: int, name: Name): Tree =
@@ -289,7 +244,7 @@ class Parser(unit: Unit) {
def makeFor1(pos: int, name: Name, pat: Tree, rhs: Tree, body: Tree): Tree =
make.Apply(
pos, make.Select(pos, rhs, name),
- newTreeArray(makeForCont(pos, pat, body)));
+ NewArray.Tree(makeForCont(pos, pat, body)));
def makeForCont(pos: int, pat: Tree, body: Tree): Tree = {
pat match {
@@ -297,12 +252,13 @@ class Parser(unit: Unit) {
if (name1.isVariable())
make.Function(
pos,
- newValDefArray(
+ NewArray.ValDef(
make.ValDef(
pat.pos, Modifiers.PARAM, name1, Tree.Empty, Tree.Empty)),
body);
+ case _ =>
}
- make.Visitor(pos, newCaseDefArray(
+ make.Visitor(pos, NewArray.CaseDef(
make.CaseDef(pos, pat, Tree.Empty, body)));
}
@@ -339,18 +295,18 @@ class Parser(unit: Unit) {
make.Select(
pos,
make.Apply(
- pos, ScalaRunTimeDot(pos, Names.Try), newTreeArray(t)),
+ pos, ScalaRunTimeDot(pos, Names.Try), NewArray.Tree(t)),
Names.Catch),
- newTreeArray(catcher));
+ NewArray.Tree(catcher));
if (finalizer != Tree.Empty)
t = make.Apply(
pos,
make.Select(
pos,
make.Apply(
- pos, ScalaRunTimeDot(pos, Names.Try), newTreeArray(t)),
+ pos, ScalaRunTimeDot(pos, Names.Try), NewArray.Tree(t)),
Names.Finally),
- newTreeArray(finalizer));
+ NewArray.Tree(finalizer));
t
}
@@ -360,7 +316,7 @@ class Parser(unit: Unit) {
val rhs = make.If(
pos,
cond,
- make.Block(body.pos, newTreeArray(body, continu)),
+ make.Block(body.pos, NewArray.Tree(body, continu)),
make.Block(pos, Tree.EMPTY_ARRAY));
make.LabelDef(pos, lname, new Array[Tree$Ident](0), rhs);
}
@@ -370,7 +326,7 @@ class Parser(unit: Unit) {
pos, make.Ident(pos, lname), Tree.EMPTY_ARRAY);
val rhs = make.Block(
body.pos,
- newTreeArray(
+ NewArray.Tree(
body,
make.If(
cond.pos,
@@ -387,9 +343,10 @@ class Parser(unit: Unit) {
case Tree$Function(params, Tree.Empty) =>
params
case Tree$Ident(_) | Tree$Typed(Tree$Ident(_), _) =>
- newValDefArray(convertToParam(t));
+ NewArray.ValDef(convertToParam(t));
case Tree$Block(stats) =>
if (stats.length == 0) Tree.ValDef_EMPTY_ARRAY;
+ case _ =>
}
syntaxError(t.pos, "malformed formal parameter list", false);
Tree.ValDef_EMPTY_ARRAY;
@@ -620,7 +577,7 @@ class Parser(unit: Unit) {
var symt = scalaDot(s.pos, Names.Symbol);
if (isPattern) symt = convertToTypeId(symt);
make.Apply(
- s.pos, symt, newTreeArray(make.Literal(s.pos, s.name.toString())));
+ s.pos, symt, NewArray.Tree(make.Literal(s.pos, s.name.toString())));
case _ =>
syntaxError("illegal literal", true)
}
@@ -634,7 +591,7 @@ class Parser(unit: Unit) {
val listt = if (isPattern) scalaDot(s.pos, Names.List.toTypeName())
else make.Select(s.pos, scalaDot(s.pos, Names.Predef), Names.List);
make.Apply(
- s.pos, labt, newTreeArray(t, make.Apply(s.pos, listt, argumentExprs())));
+ s.pos, labt, NewArray.Tree(t, make.Apply(s.pos, listt, argumentExprs())));
}
t
}
@@ -702,7 +659,7 @@ class Parser(unit: Unit) {
} else {
val t = type1();
if (s.token == ARROW)
- make.FunType(s.skipToken(), newTreeArray(t), typ())
+ make.FunType(s.skipToken(), NewArray.Tree(t), typ())
else
t
}
@@ -876,6 +833,7 @@ class Parser(unit: Unit) {
t match {
case Tree$Ident(_) | Tree$Select(_, _) | Tree$Apply(_, _) =>
t = make.Assign(s.skipToken(), t, expr());
+ case _ =>
}
} else if (s.token == COLON) {
val pos = s.skipToken();
@@ -1012,7 +970,7 @@ class Parser(unit: Unit) {
def argumentExprs(): Array[Tree] = {
var ts = Tree.EMPTY_ARRAY;
if (s.token == LBRACE) {
- ts = newTreeArray(blockExpr());
+ ts = NewArray.Tree(blockExpr());
} else {
accept(LPAREN);
if (s.token != RPAREN)
@@ -1090,10 +1048,10 @@ class Parser(unit: Unit) {
rhs = make.Apply(
rhs.pos,
make.Select(rhs.pos, rhs, Names.filter),
- newTreeArray(
+ NewArray.Tree(
make.Visitor(
rhs.pos,
- newCaseDefArray(
+ NewArray.CaseDef(
make.CaseDef(
rhs.pos, pat.duplicate(),
Tree.Empty, make.Literal(s.pos, java.lang.Boolean.TRUE)),
@@ -1181,6 +1139,7 @@ class Parser(unit: Unit) {
p match {
case Tree$Ident(name) =>
if (name == Names.PATTERN_WILDCARD) return pattern3()
+ case _ =>
}
make.Bind(s.skipToken(), p.asInstanceOf[Tree$Ident].name, pattern3());
} else {
@@ -1202,9 +1161,9 @@ class Parser(unit: Unit) {
return make.Bind(
s.pos, zname,
pN.flattenAlternative(
- make.Alternative(s.pos, newTreeArray(
+ make.Alternative(s.pos, NewArray.Tree(
make.Sequence(s.pos, Tree.EMPTY_ARRAY),
- pN.flattenSequence(make.Sequence(s.pos, newTreeArray(
+ pN.flattenSequence(make.Sequence(s.pos, NewArray.Tree(
top, zvar)))))));
} else if (s.name == PLUS) { /* p+ becomes z@(p,(z| )) */
s.nextToken();
@@ -1212,13 +1171,13 @@ class Parser(unit: Unit) {
val zvar = make.Ident(s.pos, zname);
return make.Bind(
s.pos, zname,
- pN.flattenSequence(make.Sequence(s.pos, newTreeArray(
+ pN.flattenSequence(make.Sequence(s.pos, NewArray.Tree(
top,
- pN.flattenAlternative(make.Alternative(s.pos, newTreeArray(
+ pN.flattenAlternative(make.Alternative(s.pos, NewArray.Tree(
zvar, make.Sequence(s.pos, Tree.EMPTY_ARRAY))))))));
} else if (s.name == OPT) { /* p? becomes (p| ) */
s.nextToken();
- return pN.flattenAlternative(make.Alternative(s.pos, newTreeArray(
+ return pN.flattenAlternative(make.Alternative(s.pos, NewArray.Tree(
top,
make.Sequence(s.pos, Tree.EMPTY_ARRAY))));
}
@@ -1362,7 +1321,7 @@ class Parser(unit: Unit) {
/** ParamClauseOpt ::= [ParamClause]
*/
def paramClauseOpt(): Array[Array[Tree$ValDef]] =
- if (s.token == LPAREN) newValDefArrayArray(paramClause())
+ if (s.token == LPAREN) NewArray.ValDefArray(paramClause())
else Tree.ValDef_EMPTY_ARRAY_ARRAY;
/** ParamClause ::= `(' [Param {`,' Param}] `)'
@@ -1400,7 +1359,7 @@ class Parser(unit: Unit) {
tp = make.AppliedType(
tp.pos,
scalaDot(tp.pos, Names.Seq.toTypeName()),
- newTreeArray(tp));
+ NewArray.Tree(tp));
}
make.ValDef(pos, mods, name, tp, Tree.Empty)
}
@@ -1492,7 +1451,7 @@ class Parser(unit: Unit) {
while (true) {
if (s.token == USCORE) {
s.nextToken();
- return make.Import(startpos, t, newNameArray(Names.IMPORT_WILDCARD));
+ return make.Import(startpos, t, NewArray.Name(Names.IMPORT_WILDCARD));
} else if (s.token == LBRACE) {
return make.Import(startpos, t, importSelectors());
} else {
@@ -1501,7 +1460,7 @@ class Parser(unit: Unit) {
t = make.Select(pos, t, name);
pos = accept(DOT);
} else {
- return make.Import(startpos, t, newNameArray(name, name));
+ return make.Import(startpos, t, NewArray.Name(name, name));
}
}
}
@@ -1614,7 +1573,7 @@ class Parser(unit: Unit) {
} while (s.token == COMMA);
ts.toArray()
case _ =>
- newTreeArray(syntaxError("illegal start of definition", true))
+ NewArray.Tree(syntaxError("illegal start of definition", true))
}
}
@@ -1664,7 +1623,7 @@ class Parser(unit: Unit) {
val pos = s.pos;
if (s.token == THIS) {
s.nextToken();
- val vparams = newValDefArrayArray{paramClause()};
+ val vparams = NewArray.ValDefArray(paramClause());
accept(EQUALS);
make.DefDef(
pos, mods, Names.CONSTRUCTOR,
@@ -1763,12 +1722,12 @@ class Parser(unit: Unit) {
template(parents)
} else if (s.token == LBRACE) {
make.Template(
- pos, newTreeArray(scalaObjectConstr(pos)), templateBody());
+ pos, NewArray.Tree(scalaObjectConstr(pos)), templateBody());
} else {
if (!(s.token == SEMI || s.token == COMMA || s.token == RBRACE))
syntaxError("`extends' or `{' expected", true);
make.Template(
- pos, newTreeArray(scalaObjectConstr(pos)), Tree.EMPTY_ARRAY);
+ pos, NewArray.Tree(scalaObjectConstr(pos)), Tree.EMPTY_ARRAY);
}
}
@@ -1808,7 +1767,7 @@ class Parser(unit: Unit) {
accept(LBRACE);
var body = templateStatSeq();
if (body.length == 0)
- body = newTreeArray(Tree.Empty);
+ body = NewArray.Tree(Tree.Empty);
accept(RBRACE);
body
}
@@ -1949,7 +1908,7 @@ class Parser(unit: Unit) {
val pkg = qualId();
if (s.token == SEMI) {
s.nextToken();
- newTreeArray(
+ NewArray.Tree(
make.PackageDef(
pos, pkg, make.Template(pos, Tree.EMPTY_ARRAY, topStatSeq())));
} else {
diff --git a/sources/scala/tools/scalac/ast/parser/Scanner.scala b/sources/scala/tools/scalac/ast/parser/Scanner.scala
index ac3adb4d8b..fd18e6f5a5 100644
--- a/sources/scala/tools/scalac/ast/parser/Scanner.scala
+++ b/sources/scala/tools/scalac/ast/parser/Scanner.scala
@@ -693,7 +693,7 @@ class Scanner(_unit: Unit) extends TokenData {
case ERROR =>
"something"
case SEMI =>
- "''"
+ "';'"
case COMMA =>
"','"
case CASECLASS =>
diff --git a/sources/scala/tools/scalai/ExpressionCompiler.java b/sources/scala/tools/scalai/ExpressionCompiler.java
index b084737a7f..e8a3a88a7c 100644
--- a/sources/scala/tools/scalai/ExpressionCompiler.java
+++ b/sources/scala/tools/scalai/ExpressionCompiler.java
@@ -136,7 +136,7 @@ public class ExpressionCompiler {
Symbol symbol = new scalac.symtab.TermSymbol(tree.pos, Name.fromString("new"), Symbol.NONE, 0); // !!!
Variable variable = Variable.Local(context.push());
Code code = compute(bases[0]);
- switch (context.lookupTemplate(tree.type().symbol())) {
+ switch (context.lookupTemplate(tree.getType().symbol())) {
case Global(ScalaTemplate template):
assert code instanceof Code.Invoke : Debug.show(code);
Code.Invoke invoke = (Code.Invoke)code;
@@ -200,7 +200,7 @@ public class ExpressionCompiler {
if (symbol == definitions.ANY_IS) {
assert trees.length == 1 : Debug.show(trees);
//assert trees[0].hasSymbol() : trees[0];
- Symbol expect = trees[0].type().symbol();
+ Symbol expect = trees[0].getType().symbol();
// !!! BUG: expect is null for .is[Int]
assert expect != null : trees[0];
// !!! System.out.println("!!! IS " + expect);
diff --git a/sources/scalac/Global.java b/sources/scalac/Global.java
index eeba341b3f..772cddb2e7 100644
--- a/sources/scalac/Global.java
+++ b/sources/scalac/Global.java
@@ -445,7 +445,7 @@ public class Global {
new Tree[] {
last,
make.Literal(last.pos,
- show(last.type())).setType(
+ show(last.getType())).setType(
definitions.JAVA_STRING_TYPE())});
}
TreeList body = new TreeList();
diff --git a/sources/scalac/ast/Tree.java.tmpl b/sources/scalac/ast/Tree.java.tmpl
index e39768b597..dc5c93ed91 100644
--- a/sources/scalac/ast/Tree.java.tmpl
+++ b/sources/scalac/ast/Tree.java.tmpl
@@ -60,7 +60,7 @@ public class Tree {
// Public Methods - tree type
/** Get the type of the node. */
- public Type type() {
+ public Type getType() {
assert type != null : Debug.show(this);
return type;
}
@@ -75,7 +75,7 @@ public class Tree {
/** Get types attached to array of nodes. */
public static Type[] typeOf(Tree[] trees) {
Type[] types = new Type[trees.length];
- for (int i = 0; i < trees.length; i++) types[i] = trees[i].type();
+ for (int i = 0; i < trees.length; i++) types[i] = trees[i].getType();
return types;
}
diff --git a/sources/scalac/ast/TreeCloner.java b/sources/scalac/ast/TreeCloner.java
index 30a63b9255..ff05b4d256 100644
--- a/sources/scalac/ast/TreeCloner.java
+++ b/sources/scalac/ast/TreeCloner.java
@@ -74,7 +74,7 @@ public class TreeCloner extends Transformer {
* type map to the given tree's type.
*/
public Type getTypeFor(Tree tree) {
- return types.apply(tree.type());
+ return types.apply(tree.getType());
}
/** Traverses the given tree and returns a deeply cloned one. */
diff --git a/sources/scalac/ast/TreeGen.java b/sources/scalac/ast/TreeGen.java
index 047a6dfd86..1f18b8a979 100644
--- a/sources/scalac/ast/TreeGen.java
+++ b/sources/scalac/ast/TreeGen.java
@@ -690,9 +690,9 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
/** Builds an If node with given condition and branches. */
public If If(int pos, Tree cond, Tree thenpart, Tree elsepart) {
global.nextPhase();
- Type type = thenpart.type().isSameAs(elsepart.type())
+ Type type = thenpart.getType().isSameAs(elsepart.getType())
? thenpart.type
- : Type.lub(new Type[] {thenpart.type(), elsepart.type()});
+ : Type.lub(new Type[] {thenpart.getType(), elsepart.getType()});
global.prevPhase();
return If(pos, cond, thenpart, elsepart, type);
}
@@ -722,8 +722,8 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
Tree otherwise)
{
Type[] types = new Type[bodies.length + 1];
- for (int i = 0; i < bodies.length; i++) types[i] = bodies[i].type();
- types[bodies.length] = otherwise.type();
+ for (int i = 0; i < bodies.length; i++) types[i] = bodies[i].getType();
+ types[bodies.length] = otherwise.getType();
global.nextPhase();
Type type = Type.lub(types);
global.prevPhase();
@@ -938,7 +938,7 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
/** Builds an CaseDef node with given pattern, guard and body. */
public CaseDef CaseDef(Tree pattern, Tree guard, Tree body) {
CaseDef tree = make.CaseDef(pattern.pos, pattern, guard, body);
- tree.setType(body.type());
+ tree.setType(body.getType());
return tree;
}
@@ -969,9 +969,9 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
/** Asserts type of given tree is a subtype of given type. */
private boolean assertTreeSubTypeOf(Tree tree, Type expected) {
global.nextPhase();
- assert tree.type().isSubType(expected):
+ assert tree.getType().isSubType(expected):
"\ntree : " + tree +
- "\ntype : " + tree.type() +
+ "\ntype : " + tree.getType() +
"\nexpected: " + expected;
global.prevPhase();
return true;
@@ -1134,8 +1134,8 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
}
public Tree Cons(int pos, Type elemtpe, Tree hd, Tree tl) {
- assert hd.type().isSubType(elemtpe): elemtpe + " -- " + hd;
- assert tl.type().isSubType(definitions.LIST_TYPE(elemtpe)):
+ assert hd.getType().isSubType(elemtpe): elemtpe + " -- " + hd;
+ assert tl.getType().isSubType(definitions.LIST_TYPE(elemtpe)):
elemtpe + " -- " + tl;
return New(mkPrimaryConstr(pos,
global.definitions
diff --git a/sources/scalac/symtab/Symbol.java b/sources/scalac/symtab/Symbol.java
index 04843818e2..dbc5666727 100644
--- a/sources/scalac/symtab/Symbol.java
+++ b/sources/scalac/symtab/Symbol.java
@@ -923,6 +923,9 @@ public abstract class Symbol implements Modifiers, Kinds {
public Type type() {
return info();
}
+ public Type getType() {
+ return info();
+ }
/** Get type at start of next phase
*/
@@ -1514,6 +1517,9 @@ public abstract class TypeSymbol extends Symbol {
public Type type() {
return primaryConstructor().type().resultType();
}
+ public Type getType() {
+ return primaryConstructor().type().resultType();
+ }
/**
* Get closure at start of current phase. The closure of a symbol
diff --git a/sources/scalac/transformer/AddConstructors.java b/sources/scalac/transformer/AddConstructors.java
index e89ca6fc79..eada0f3ecc 100644
--- a/sources/scalac/transformer/AddConstructors.java
+++ b/sources/scalac/transformer/AddConstructors.java
@@ -265,7 +265,7 @@ public class AddConstructors extends GenTransformer {
return gen.Ident(tree.pos, symbol);
case TypeTerm():
- return gen.TypeTerm(tree.pos, subst.apply(tree.type()));
+ return gen.TypeTerm(tree.pos, subst.apply(tree.getType()));
default:
return super.transform(tree);
diff --git a/sources/scalac/transformer/AddInterfaces.java b/sources/scalac/transformer/AddInterfaces.java
index d6a4727ef7..dd58d55799 100644
--- a/sources/scalac/transformer/AddInterfaces.java
+++ b/sources/scalac/transformer/AddInterfaces.java
@@ -73,7 +73,7 @@ class AddInterfaces extends Transformer {
public Tree transform(Tree tree) {
// Update tree type, to take into account the new (type)
// symbols of enclosing classes / methods.
- Type newTp = tree.type();
+ Type newTp = tree.getType();
if (typeSubst != null) newTp = typeSubst.apply(newTp);
if (thisTypeSubst != null) newTp = thisTypeSubst.apply(newTp);
tree.setType(newTp);
@@ -201,7 +201,7 @@ class AddInterfaces extends Transformer {
&& owner != defs.ANY_CLASS
&& owner != defs.ANYREF_CLASS
&& owner != defs.JAVA_OBJECT_CLASS) {
- Type qualifierType = qualifier.type().bound();
+ Type qualifierType = qualifier.getType().bound();
if (phase.needInterface(qualifierType.symbol())) {
Type castType = qualifierType.baseType(owner);
qualifier = gen.mkAsInstanceOf(qualifier, castType);
diff --git a/sources/scalac/transformer/Erasure.java b/sources/scalac/transformer/Erasure.java
index be4cb30607..ee09f2c502 100644
--- a/sources/scalac/transformer/Erasure.java
+++ b/sources/scalac/transformer/Erasure.java
@@ -141,11 +141,11 @@ public class Erasure extends GenTransformer implements Modifiers {
case New(Template(Tree[] base, Tree[] body)):
assert base.length == 1 && body.length == 0: tree;
- if (tree.type().symbol() == definitions.ARRAY_CLASS) {
+ if (tree.getType().symbol() == definitions.ARRAY_CLASS) {
switch (base[0]) {
case Apply(_, Tree[] args):
assert args.length == 1: tree;
- Type element = getArrayElementType(tree.type()).erasure();
+ Type element = getArrayElementType(tree.getType()).erasure();
Tree size = transform(args[0]);
return genNewUnboxedArray(tree.pos, element, size);
default:
@@ -160,7 +160,7 @@ public class Erasure extends GenTransformer implements Modifiers {
Symbol symbol = fun.symbol();
if (symbol == definitions.ANY_AS) {
assert targs.length == 1 && vargs.length == 0: tree;
- return coerce(getQualifier(fun), targs[0].type().erasure());
+ return coerce(getQualifier(fun), targs[0].getType().erasure());
}
if (symbol == definitions.ANY_IS) {
assert targs.length == 1 && vargs.length == 0: tree;
@@ -203,7 +203,7 @@ public class Erasure extends GenTransformer implements Modifiers {
qualifier = transform(qualifier);
qualifier = coerce(qualifier, symbol.owner().type().erasure());
// Might end up with "box(unbox(...))". That's needed by backend.
- if (isUnboxedType(qualifier.type())) qualifier = box(qualifier);
+ if (isUnboxedType(qualifier.getType())) qualifier = box(qualifier);
return gen.Select(tree.pos, qualifier, symbol);
case Ident(_):
@@ -214,7 +214,7 @@ public class Erasure extends GenTransformer implements Modifiers {
case Block(_):
case If(_, _, _):
case Switch(_, _, _, _):
- return transform(tree, tree.type().fullErasure());
+ return transform(tree, tree.getType().fullErasure());
default:
return super.transform(tree);
@@ -295,8 +295,8 @@ public class Erasure extends GenTransformer implements Modifiers {
/** Coerces the given tree to the given type. */
private Tree coerce(Tree tree, Type pt) {
- if (isSubType(tree.type(), pt)) return tree;
- if (isUnboxedType(tree.type())) {
+ if (isSubType(tree.getType(), pt)) return tree;
+ if (isUnboxedType(tree.getType())) {
if (!isUnboxedType(pt)) return coerce(box(tree), pt);
} else if (isUnboxedType(pt)) {
if (tree.type.symbol() == definitions.ARRAY_CLASS
@@ -307,9 +307,9 @@ public class Erasure extends GenTransformer implements Modifiers {
/** Boxes the given tree. */
private Tree box(Tree tree) {
- Symbol symbol = primitives.getBoxValueSymbol(tree.type());
+ Symbol symbol = primitives.getBoxValueSymbol(tree.getType());
Tree boxtree = gen.mkRef(tree.pos, symbol);
- return tree.type().equals(UNBOXED_UNIT)
+ return tree.getType().equals(UNBOXED_UNIT)
? gen.Block(new Tree[]{tree, gen.mkApply__(boxtree)})
: gen.mkApply_V(boxtree, new Tree[]{tree});
}
@@ -335,7 +335,7 @@ public class Erasure extends GenTransformer implements Modifiers {
/** Generates an application with given function and arguments. */
private Tree genApply(int pos, Tree fun, Tree[] args) {
- switch (fun.type()) {
+ switch (fun.getType()) {
case MethodType(Symbol[] params, Type result):
Tree[] args1 = args;
for (int i = 0; i < args.length; i++) {
@@ -349,7 +349,7 @@ public class Erasure extends GenTransformer implements Modifiers {
}
return gen.mkApply_V(pos, fun, args1);
default:
- throw Debug.abort("illegal type " + fun.type() + " for " + fun);
+ throw Debug.abort("illegal type " + fun.getType() + " for " + fun);
}
}
@@ -389,16 +389,16 @@ public class Erasure extends GenTransformer implements Modifiers {
/** Generates an unboxed array length operation. */
private Tree genUnboxedArrayLength(int pos, Tree array) {
- assert isUnboxedArrayType(array.type()): array;
- Symbol symbol = primitives.getArrayLengthSymbol(array.type());
+ assert isUnboxedArrayType(array.getType()): array;
+ Symbol symbol = primitives.getArrayLengthSymbol(array.getType());
Tree[] args = { array };
return gen.mkApply_V(gen.mkRef(pos, symbol), args);
}
/** Generates an unboxed array get operation. */
private Tree genUnboxedArrayGet(int pos, Tree array, Tree index) {
- assert isUnboxedArrayType(array.type()): array;
- Symbol symbol = primitives.getArrayGetSymbol(array.type());
+ assert isUnboxedArrayType(array.getType()): array;
+ Symbol symbol = primitives.getArrayGetSymbol(array.getType());
index = coerce(index, UNBOXED_INT);
Tree[] args = { array, index };
return gen.mkApply_V(gen.mkRef(pos, symbol), args);
@@ -406,10 +406,10 @@ public class Erasure extends GenTransformer implements Modifiers {
/** Generates an unboxed array set operation. */
private Tree genUnboxedArraySet(int pos, Tree array,Tree index,Tree value){
- assert isUnboxedArrayType(array.type()): array;
- Symbol symbol = primitives.getArraySetSymbol(array.type());
+ assert isUnboxedArrayType(array.getType()): array;
+ Symbol symbol = primitives.getArraySetSymbol(array.getType());
index = coerce(index, UNBOXED_INT);
- value = coerce(value, getArrayElementType(array.type()));
+ value = coerce(value, getArrayElementType(array.getType()));
Tree[] args = { array, index, value };
return gen.mkApply_V(gen.mkRef(pos, symbol), args);
}
diff --git a/sources/scalac/transformer/ExplicitOuterClassesPhase.java b/sources/scalac/transformer/ExplicitOuterClassesPhase.java
index e357570cf4..828bedbd07 100644
--- a/sources/scalac/transformer/ExplicitOuterClassesPhase.java
+++ b/sources/scalac/transformer/ExplicitOuterClassesPhase.java
@@ -308,7 +308,7 @@ public class ExplicitOuterClassesPhase extends Phase {
return gen.Ident(tree.pos, symbol);
case TypeTerm():
- Type type = typeTransformer.apply(tree.type());
+ Type type = typeTransformer.apply(tree.getType());
if (context != null) type = context.subst.apply(type);
return gen.TypeTerm(tree.pos, type);
@@ -330,7 +330,7 @@ public class ExplicitOuterClassesPhase extends Phase {
vargs = Tree.cloneArray(1, vargs);
vargs[0] = qualifier;
}
- Type[] types = getOuterTypeArgs(qualifier.type(), symbol);
+ Type[] types = getOuterTypeArgs(qualifier.getType(), symbol);
if (types.length != 0) {
targs = Tree.cloneArray(types.length, targs);
for (int i = 0; i < types.length; i++)
diff --git a/sources/scalac/transformer/TailCall.java b/sources/scalac/transformer/TailCall.java
index 39095ac5d6..dca3874d23 100644
--- a/sources/scalac/transformer/TailCall.java
+++ b/sources/scalac/transformer/TailCall.java
@@ -126,7 +126,7 @@ public class TailCall extends Transformer {
// The LabelDef needs identifiers as parameters.
Ident [] args = to_ident(newVparams[0]);
// Create a new LabelDef with the new body of the function as the rhs
- Tree labelDef = new ExtLabelDef(newLabel,args,newRhs).setType(newRhs.type());
+ Tree labelDef = new ExtLabelDef(newLabel,args,newRhs).setType(newRhs.getType());
// Create a new function node with the LabelDef as the rhs.
return copy.DefDef(tree,tree.symbol(), newTparams,
newVparams, newTpe, labelDef);
@@ -156,7 +156,7 @@ public class TailCall extends Transformer {
Tree[] newArgs = tail_transform(args,false);
// Redirect the call to the LabelDef.
- Tree newTarget = new ExtIdent(state.newLabel).setType(fun.type());
+ Tree newTarget = new ExtIdent(state.newLabel).setType(fun.getType());
// Indicate that we have inserted a tail call.
state.needLabelDef = true;
return copy.Apply(tree,newTarget,newArgs);
@@ -348,13 +348,13 @@ public class TailCall extends Transformer {
switch (tree[i]) {
case AbsTypeDef(int mods, Name name, Tree bound, Tree lobound):
Ident arg = new ExtIdent(tree[i].symbol());
- arg.setType(tree[i].type());
+ arg.setType(tree[i].getType());
ids[i]= arg;
break;
case ValDef(int mods, Name name, Tree tpe, Tree.Empty):
Ident arg = new ExtIdent(tree[i].symbol());
- arg.setType(tree[i].type());
+ arg.setType(tree[i].getType());
ids[i]= arg;
break;
diff --git a/sources/scalac/transformer/matching/CodeFactory.java b/sources/scalac/transformer/matching/CodeFactory.java
index 32af74e511..b42354e430 100644
--- a/sources/scalac/transformer/matching/CodeFactory.java
+++ b/sources/scalac/transformer/matching/CodeFactory.java
@@ -65,14 +65,14 @@ class CodeFactory extends PatternTool {
* the parameter needs to have type attribute `Sequence[<elemType>]'
*/
Tree newIterator( Tree seqObj ) {
- return newIterator( seqObj, getElemType_Sequence( seqObj.type() ));
+ return newIterator( seqObj, getElemType_Sequence( seqObj.getType() ));
}
// EXPERIMENTAL
Tree newRef( Tree init ) {
//System.out.println( "hello:"+refSym().type() );
return gen.New(gen.mkPrimaryConstr(pos, defs.REF_CLASS,
- new Type[] { init.type() },
+ new Type[] { init.getType() },
new Tree[] { init } ));
}
@@ -204,7 +204,7 @@ class CodeFactory extends PatternTool {
Tree newPair( Tree left, Tree right ) {
return gen.New(gen.mkPrimaryConstr(pos, defs.TUPLE_CLASS[2],
- new Type[] { left.type(), right.type() },
+ new Type[] { left.getType(), right.getType() },
new Tree[] { left, right }));
}
diff --git a/sources/scalac/transformer/matching/Label.java b/sources/scalac/transformer/matching/Label.java
index cbad3ac3bf..d04991c5d3 100644
--- a/sources/scalac/transformer/matching/Label.java
+++ b/sources/scalac/transformer/matching/Label.java
@@ -32,7 +32,7 @@ public class Label {
case TreeLabel( Tree pat ):
switch( pat ) {
case Apply( Tree fun, Tree[] args ):
- return pat.type().hashCode() + args.hashCode();
+ return pat.getType().hashCode() + args.hashCode();
}
return pat.hashCode();
case TypeLabel( Type type ):
@@ -102,7 +102,7 @@ public class Label {
case SimpleLabel( Literal lit ):
return lit.toString()+":p"+p;
case TreeLabel( Tree pat ):
- return pat.type()+":p"+p;
+ return pat.getType()+":p"+p;
}
}
diff --git a/sources/scalac/transformer/matching/LeftTracerInScala.java b/sources/scalac/transformer/matching/LeftTracerInScala.java
index 8146daa898..ad10599f15 100644
--- a/sources/scalac/transformer/matching/LeftTracerInScala.java
+++ b/sources/scalac/transformer/matching/LeftTracerInScala.java
@@ -67,11 +67,11 @@ public class LeftTracerInScala extends TracerInScala {
cf.fresh.newName(Name.fromString( helpName )),
owner,
0)
- .setType( defs.LIST_TYPE( pat.type() )) ;
+ .setType( defs.LIST_TYPE( pat.getType() )) ;
Tree varDef = gen.ValDef( helpVar,
gen.mkDefaultValue( cf.pos,
- defs.LIST_TYPE( pat.type() ))
+ defs.LIST_TYPE( pat.getType() ))
//cf.ignoreValue( )
);
helpVarDefs.add( varDef );
@@ -231,7 +231,7 @@ public class LeftTracerInScala extends TracerInScala {
Tree run = callFun( new Tree[] {
gen.Ident( pos, emptyAccSym ),
- cf.newIterator( selector, selector.type() ),
+ cf.newIterator( selector, selector.getType() ),
gen.mkIntLit( cf.pos, 0 ) });
run = gen.ValDef( resultSym, run );
diff --git a/sources/scalac/transformer/matching/PatternMatcher.java b/sources/scalac/transformer/matching/PatternMatcher.java
index 793cc83a7e..ebd38020d7 100644
--- a/sources/scalac/transformer/matching/PatternMatcher.java
+++ b/sources/scalac/transformer/matching/PatternMatcher.java
@@ -510,9 +510,9 @@ public class PatternMatcher extends PatternTool {
*/
target.and = curHeader = mk.Header(pat.pos, seqType, t);
} else {
- Symbol ts = ((ClassSymbol) casted.type().symbol())
+ Symbol ts = ((ClassSymbol) casted.getType().symbol())
.caseFieldAccessor(index);
- Type accType = casted.type().memberType(ts);
+ Type accType = casted.getType().memberType(ts);
Tree accTree = gen.Select(gen.Ident(pat.pos, casted), ts);
switch (accType) {
// scala case accessor
@@ -738,7 +738,7 @@ public class PatternMatcher extends PatternTool {
public Tree intSwitchToTree() {
//print();
int ncases = numCases(root.and);
- Tree matchError = cf.ThrowMatchError(selector.pos, resultVar.type());
+ Tree matchError = cf.ThrowMatchError(selector.pos, resultVar.getType());
// without a case, we return a match error if there is no default case
if (ncases == 0)
return defaultBody(root.and, matchError);
@@ -785,9 +785,9 @@ public class PatternMatcher extends PatternTool {
patNode = patNode.next();
}
if (defaultBody == null)
- defaultBody = cf.ThrowMatchError(selector.pos, resultVar.type());
+ defaultBody = cf.ThrowMatchError(selector.pos, resultVar.getType());
if (mappings == null) {
- return gen.Switch(selector, new int[0], new Tree[0], defaultBody, resultVar.type());
+ return gen.Switch(selector, new int[0], new Tree[0], defaultBody, resultVar.getType());
} else {
int n = mappings.length();
int[] tags = new int[n];
@@ -798,7 +798,7 @@ public class PatternMatcher extends PatternTool {
bodies[n++] = mappings.body;
mappings = mappings.next;
}
- return gen.Switch(selector, tags, bodies, defaultBody, resultVar.type());
+ return gen.Switch(selector, tags, bodies, defaultBody, resultVar.getType());
}
default:
throw new ApplicationError();
@@ -821,13 +821,13 @@ public class PatternMatcher extends PatternTool {
public Tree generalSwitchToTree() {
TreeList ts = new TreeList();
ts.append(gen.ValDef(root.symbol(), selector));
- ts.append(gen.ValDef(resultVar, gen.mkDefaultValue(selector.pos, resultVar.type())));
+ ts.append(gen.ValDef(resultVar, gen.mkDefaultValue(selector.pos, resultVar.getType())));
ts.append(
gen.If(
selector.pos,
toTree(root.and),
gen.Ident(selector.pos, resultVar),
- cf.ThrowMatchError(selector.pos, resultVar.type())));
+ cf.ThrowMatchError(selector.pos, resultVar.getType())));
return gen.mkBlock(selector.pos, ts.toArray());
}
diff --git a/sources/scalac/transformer/matching/SequenceMatcher.java b/sources/scalac/transformer/matching/SequenceMatcher.java
index 7dccfedee8..11deaf4764 100644
--- a/sources/scalac/transformer/matching/SequenceMatcher.java
+++ b/sources/scalac/transformer/matching/SequenceMatcher.java
@@ -35,7 +35,7 @@ public class SequenceMatcher extends PatternTool {
*/
Tree addBinderToBody( Tree pat, Tree body ) {
- Type elementType = cf.getElemType_Sequence( pat.type() );
+ Type elementType = cf.getElemType_Sequence( pat.getType() );
BindingBerrySethi build = new BindingBerrySethi();
NondetWordAutom left = build.automatonFrom( pat, new Integer(0) );
@@ -152,7 +152,7 @@ public class SequenceMatcher extends PatternTool {
this.cf = new CodeFactory( unit, _m.pos );
- Type seqType = pat[ 0 ].type();
+ Type seqType = pat[ 0 ].getType();
elementType = cf.getElemType_Sequence( seqType );
diff --git a/sources/scalac/transformer/matching/TracerInScala.java b/sources/scalac/transformer/matching/TracerInScala.java
index b2ed49069c..61a51fa809 100644
--- a/sources/scalac/transformer/matching/TracerInScala.java
+++ b/sources/scalac/transformer/matching/TracerInScala.java
@@ -54,7 +54,7 @@ public class TracerInScala extends Autom2Scala {
else
return gen.ValDef( realVar, hv );
*/
- if( realVar.type().isSameAs( hv.type())) {
+ if( realVar.type().isSameAs( hv.getType())) {
return gen.ValDef( realVar, hv ); // e.g. x @ _*
}
return gen.ValDef( realVar, cf.SeqList_head( hv ));
diff --git a/test/bin/scala-test b/test/bin/scala-test
index a5eb1b7792..c65bf619b5 100755
--- a/test/bin/scala-test
+++ b/test/bin/scala-test
@@ -126,10 +126,13 @@ test_compilation() {
classpath="$SCALA:$output";
if $CYGWIN; then
classpath=`cygpath -w -p "$classpath"`;
+ os_output=`cygpath -w "$output"`;
+ else
+ os_output="$output";
fi;
rm -rf "$output";
mkdir -p "$output" &&
- $SOCOS -d "$output" $TEST_FLAGS $FLAGS "$source" &&
+ $SOCOS -d "$os_output" $TEST_FLAGS $FLAGS "$source" &&
java -classpath "$classpath" Test &&
rm -rf "$output";
}
@@ -143,20 +146,28 @@ test_xml() {
classpath="$SCALA:$output";
if $CYGWIN; then
classpath=`cygpath -w -p "$classpath"`;
+ os_output=`cygpath -w "$output"`;
+ else
+ os_output="$output";
fi;
rm -rf "$output";
mkdir -p "$output" &&
- $DTD2SCALA -d "$output" "$dtdfile" dtd &&
- $SOCOS -d "$output" $TEST_FLAGS $FLAGS "$objfile" "$source" &&
+ $DTD2SCALA -d "$os_output" "$dtdfile" dtd &&
+ $SOCOS -d "$os_output" $TEST_FLAGS $FLAGS "$objfile" "$source" &&
java -classpath "$classpath" Test "$xmlfile" &&
rm -rf "$output";
}
test_compilation_success() {
output="$OBJDIR"/`expr "$source" : "\(.*\)\\.scala"`-$KIND.obj;
+ if $CYGWIN; then
+ os_output=`cygpath -w "$output"`;
+ else
+ os_output="$output";
+ fi;
rm -rf "$output";
mkdir -p "$output" &&
- $SOCOS -d "$output" $TEST_FLAGS $FLAGS "$source" &&
+ $SOCOS -d "$os_output" $TEST_FLAGS $FLAGS "$source" &&
rm -rf "$output";
}