diff options
author | Martin Odersky <odersky@gmail.com> | 2003-08-15 12:54:18 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2003-08-15 12:54:18 +0000 |
commit | 5fdf691280325593178fb60c1eee97255dcddf8a (patch) | |
tree | b577b7a9c9b5cc5fafef1f03686331905bd71e48 /sources/scalac/ast/parser | |
parent | cce804c34f58e904cdc66889ba9990b3edd827f5 (diff) | |
download | scala-5fdf691280325593178fb60c1eee97255dcddf8a.tar.gz scala-5fdf691280325593178fb60c1eee97255dcddf8a.tar.bz2 scala-5fdf691280325593178fb60c1eee97255dcddf8a.zip |
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast/parser')
-rw-r--r-- | sources/scalac/ast/parser/Parser.java | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java index 7212745657..3bcb1c4045 100644 --- a/sources/scalac/ast/parser/Parser.java +++ b/sources/scalac/ast/parser/Parser.java @@ -526,7 +526,8 @@ public class Parser implements Tokens { if (!thisOK || s.token == DOT) t = selectors(accept(DOT), t, typeOK); } else if (s.token == SUPER) { - t = make.Super(s.skipToken(), TypeNames.EMPTY); + t = make.Super( + s.skipToken(), TypeNames.EMPTY, mixinQualifierOpt()); t = make.Select(accept(DOT), t, ident()); if (s.token == DOT) t = selectors(s.skipToken(), t, typeOK); @@ -542,7 +543,8 @@ public class Parser implements Tokens { t = selectors(accept(DOT), t, typeOK); } else if (s.token == SUPER) { s.nextToken(); - t = make.Super(i.pos, i.name.toTypeName()); + t = make.Super( + i.pos, i.name.toTypeName(), mixinQualifierOpt()); t = make.Select(accept(DOT), t, ident()); if (s.token == DOT) t = selectors(s.skipToken(), t, typeOK); @@ -567,9 +569,22 @@ public class Parser implements Tokens { } } + /** MixinQualifier ::= `(' Id `)' + */ + Name mixinQualifierOpt() { + if (s.token == LBRACKET) { + s.nextToken(); + Name name = ident().toTypeName(); + accept(RBRACKET); + return name; + } else { + return TypeNames.EMPTY; + } + } + /** StableId ::= Id * | StableRef `.' Id - * | [Ident '.'] super `.' Id + * | [Id '.'] super [MixinQualifier] ` `.' Id */ Tree stableId() { return stableRef(false, false); @@ -937,7 +952,6 @@ public class Parser implements Tokens { * | BlockExpr * | new Template * | SimpleExpr `.' Id - * | Id `#' Id * | SimpleExpr TypeArgs * | SimpleExpr ArgumentExprs */ @@ -999,16 +1013,6 @@ public class Parser implements Tokens { case DOT: t = make.Select(s.skipToken(), t, ident()); break; - case HASH: - switch (t) { - case Ident(Name name): - t = make.SelectFromType( - s.skipToken(), convertToTypeId(t), ident()); - break; - default: - return t; - } - break; case LBRACKET: switch (t) { case Ident(_): |