summaryrefslogtreecommitdiff
path: root/sources/scalac/ast/parser/Parser.java
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2003-08-15 12:54:18 +0000
committerMartin Odersky <odersky@gmail.com>2003-08-15 12:54:18 +0000
commit5fdf691280325593178fb60c1eee97255dcddf8a (patch)
treeb577b7a9c9b5cc5fafef1f03686331905bd71e48 /sources/scalac/ast/parser/Parser.java
parentcce804c34f58e904cdc66889ba9990b3edd827f5 (diff)
downloadscala-5fdf691280325593178fb60c1eee97255dcddf8a.tar.gz
scala-5fdf691280325593178fb60c1eee97255dcddf8a.tar.bz2
scala-5fdf691280325593178fb60c1eee97255dcddf8a.zip
*** empty log message ***
Diffstat (limited to 'sources/scalac/ast/parser/Parser.java')
-rw-r--r--sources/scalac/ast/parser/Parser.java32
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(_):