diff options
author | Martin Odersky <odersky@gmail.com> | 2004-01-09 18:04:18 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2004-01-09 18:04:18 +0000 |
commit | 74a2351508b63734acd86f1b247696b093730e0e (patch) | |
tree | 97c5fb40c88cff5de3deda83a1e2ae47c8bf07a5 /sources/scalac/ast | |
parent | 6a29f17c212f5980dea3e8973a024804b446ccdb (diff) | |
download | scala-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.java | 4 | ||||
-rw-r--r-- | sources/scalac/ast/parser/Parser.java | 24 |
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); } } |