summaryrefslogtreecommitdiff
path: root/sources/scalac/ast/parser/Parser.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/scalac/ast/parser/Parser.java')
-rw-r--r--sources/scalac/ast/parser/Parser.java20
1 files changed, 12 insertions, 8 deletions
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java
index 8c01c53b41..7212745657 100644
--- a/sources/scalac/ast/parser/Parser.java
+++ b/sources/scalac/ast/parser/Parser.java
@@ -1441,7 +1441,7 @@ public class Parser implements Tokens {
/** TypeParamClauseOpt ::= [`[' TypeParam {`,' TypeParam} `]']
* FunTypeParamClauseOpt ::= [`[' FunTypeParam {`,' FunTypeParam} `]']
*/
- TypeDef[] typeParamClauseOpt(boolean variant) {
+ AbsTypeDef[] typeParamClauseOpt(boolean variant) {
TreeList params = new TreeList();
if (s.token == LBRACKET) {
s.nextToken();
@@ -1452,7 +1452,7 @@ public class Parser implements Tokens {
}
accept(RBRACKET);
}
- return (TypeDef[])params.copyTo(new TypeDef[params.length()]);
+ return (AbsTypeDef[])params.copyTo(new AbsTypeDef[params.length()]);
}
/** TypeParam ::= [`+' | `-'] FunTypeParam
@@ -1491,7 +1491,7 @@ public class Parser implements Tokens {
} else {
hibound = scalaDot(pos, Names.Any.toTypeName());
}
- return make.TypeDef(pos, mods, name.toTypeName(), hibound, lobound);
+ return make.AbsTypeDef(pos, mods, name.toTypeName(), hibound, lobound);
}
//////// DEFS ////////////////////////////////////////////////////////////////
@@ -1726,11 +1726,11 @@ public class Parser implements Tokens {
accept(EQUALS);
return make.DefDef(
pos, mods, Names.this_.toTypeName(),
- Tree.TypeDef_EMPTY_ARRAY, vparams, Tree.Empty,
+ Tree.AbsTypeDef_EMPTY_ARRAY, vparams, Tree.Empty,
convertToSelfConstr(expr()));
} else {
Name name = ident();
- TypeDef[] tparams = typeParamClauseOpt(false);
+ AbsTypeDef[] tparams = typeParamClauseOpt(false);
ValDef[][] vparams = paramClauses();
Tree restype = typedOpt();
if (s.token == EQUALS || restype == Tree.Empty)
@@ -1749,9 +1749,13 @@ public class Parser implements Tokens {
int pos = s.pos;
Name name = ident().toTypeName();
switch (s.token) {
+ case LBRACKET:
+ AbsTypeDef[] tparams = typeParamClauseOpt(true);
+ accept(EQUALS);
+ return make.AliasTypeDef(pos, mods, name, tparams, type());
case EQUALS:
s.nextToken();
- return make.TypeDef(pos, mods, name, type(), Tree.Empty);
+ return make.AliasTypeDef(pos, mods, name, Tree.AbsTypeDef_EMPTY_ARRAY, type());
case SUPERTYPE:
case SUBTYPE:
case SEMI:
@@ -1768,7 +1772,7 @@ public class Parser implements Tokens {
Tree classDef(int mods) {
int pos = s.pos;
Name clazzname = ident().toTypeName();
- TypeDef[] tparams = typeParamClauseOpt(true);
+ AbsTypeDef[] tparams = typeParamClauseOpt(true);
ValDef[][] params = paramClauseOpt();
TreeList result = new TreeList();
return popComment(make.ClassDef(pos, mods, clazzname, tparams, params,
@@ -1830,7 +1834,7 @@ public class Parser implements Tokens {
Tree constr() {
Tree t = convertToConstr(stableId());
if (s.token == LBRACKET)
- t = make.TypeApply(s.pos, t, typeArgs());
+ t = make.AppliedType(s.pos, t, typeArgs());
if (s.token == LPAREN)
t = make.Apply(s.pos, t, argumentExprs());
return applyConstr(t);