summaryrefslogtreecommitdiff
path: root/sources/scalac/ast
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2004-01-09 18:04:18 +0000
committerMartin Odersky <odersky@gmail.com>2004-01-09 18:04:18 +0000
commit74a2351508b63734acd86f1b247696b093730e0e (patch)
tree97c5fb40c88cff5de3deda83a1e2ae47c8bf07a5 /sources/scalac/ast
parent6a29f17c212f5980dea3e8973a024804b446ccdb (diff)
downloadscala-74a2351508b63734acd86f1b247696b093730e0e.tar.gz
scala-74a2351508b63734acd86f1b247696b093730e0e.tar.bz2
scala-74a2351508b63734acd86f1b247696b093730e0e.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast')
-rw-r--r--sources/scalac/ast/TreeGen.java4
-rw-r--r--sources/scalac/ast/parser/Parser.java24
2 files changed, 18 insertions, 10 deletions
diff --git a/sources/scalac/ast/TreeGen.java b/sources/scalac/ast/TreeGen.java
index 1c49620c0f..f9c4e9399d 100644
--- a/sources/scalac/ast/TreeGen.java
+++ b/sources/scalac/ast/TreeGen.java
@@ -1165,7 +1165,7 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
argtypes[i] = params[i].type();
}
Type[] parentTypes = {
- definitions.OBJECT_TYPE(),
+ definitions.ANYREF_TYPE(),
definitions.FUNCTION_TYPE(argtypes, restype) };
ClassSymbol clazz = new ClassSymbol(
pos, Names.ANON_CLASS_NAME.toTypeName(), owner, 0);
@@ -1196,7 +1196,7 @@ public class TreeGen implements Kinds, Modifiers, TypeTags {
ClassSymbol clazz = new ClassSymbol(
pos, Names.ANON_CLASS_NAME.toTypeName(), owner, 0);
Type[] parentTypes = {
- definitions.OBJECT_TYPE(),
+ definitions.ANYREF_TYPE(),
definitions.PARTIALFUNCTION_TYPE(pattype, restype)};
clazz.setInfo(Type.compoundType(parentTypes, new Scope(), clazz));
clazz.allConstructors().setInfo(
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java
index 5b698764ad..d98324c970 100644
--- a/sources/scalac/ast/parser/Parser.java
+++ b/sources/scalac/ast/parser/Parser.java
@@ -275,9 +275,14 @@ public class Parser implements Tokens {
return make.Select(pos, scalaXmlDot(pos, Names.nobinding), name);
}
+ Tree scalaAnyRefConstr(int pos) {
+ return make.Apply(
+ pos, scalaDot(pos, Names.AnyRef.toTypeName()), Tree.EMPTY_ARRAY);
+ }
+
Tree scalaObjectConstr(int pos) {
return make.Apply(
- pos, scalaDot(pos, Names.Object.toTypeName()), Tree.EMPTY_ARRAY);
+ pos, scalaDot(pos, Names.ScalaObject.toTypeName()), Tree.EMPTY_ARRAY);
}
/** Create tree for for-comprehension <for (enums) do body> or
@@ -1885,22 +1890,25 @@ public class Parser implements Tokens {
*/
Template classTemplate() {
int pos = s.pos;
+ TreeList parents = new TreeList();
if (s.token == EXTENDS) {
s.nextToken();
- return template();
- } else if (s.token == WITH) {
+ parents.append(constr());
+ } else {
+ parents.append(scalaAnyRefConstr(pos));
+ }
+ parents.append(scalaObjectConstr(pos));
+ if (s.token == WITH) {
s.nextToken();
- TreeList parents = new TreeList();
- parents.append(scalaObjectConstr(pos));
- return template(parents);
+ return template(parents);
} else if (s.token == LBRACE) {
return (Template)make.Template(
- pos, new Tree[]{scalaObjectConstr(pos)}, templateBody());
+ pos, parents.toArray(), templateBody());
} else {
if (!(s.token == SEMI || s.token == COMMA || s.token == RBRACE))
syntaxError("`extends' or `{' expected", true);
return (Template)make.Template(
- pos, new Tree[]{scalaObjectConstr(pos)}, Tree.EMPTY_ARRAY);
+ pos, parents.toArray(), Tree.EMPTY_ARRAY);
}
}