diff options
Diffstat (limited to 'sources/scalac/ast/parser/Parser.java')
-rw-r--r-- | sources/scalac/ast/parser/Parser.java | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/sources/scalac/ast/parser/Parser.java b/sources/scalac/ast/parser/Parser.java index 9fa2e92dda..0f5a0b6a1f 100644 --- a/sources/scalac/ast/parser/Parser.java +++ b/sources/scalac/ast/parser/Parser.java @@ -642,22 +642,15 @@ public class Parser implements Tokens { t = make.Ident(s.pos, Names.null_); break; case SYMBOLLIT: + int pos = s.pos; Tree symt = scalaDot(s.pos, Names.Symbol); if (isPattern) symt = convertToTypeId(symt); - t = make.Apply(s.pos, - symt, - new Tree[]{make.Literal(s.pos, s.name.toString())}); - s.nextToken(); - if (s.token == LPAREN || s.token == LBRACE) { - Tree labt = scalaXmlNoBindingDot(s.pos, Names.Element); - if (isPattern) labt = convertToTypeId(labt); - Tree listt = isPattern ? scalaDot(s.pos, Names.List.toTypeName()) - : make.Select(s.pos, scalaDot(s.pos, Names.Predef), Names.List); - t = make.Apply(s.pos, - labt, - new Tree[]{t, make.Apply(s.pos, listt, argumentExprs())}); - } - return t; + TreeList ts = new TreeList(); + ts.append(make.Literal(s.pos, s.name.toString())); + s.nextToken(); + if (s.token == LPAREN || s.token == LBRACE) + ts.append(argumentExprs()); + return make.Apply(pos, symt, ts.toArray()); default: return syntaxError("illegal literal", true); } @@ -2087,4 +2080,3 @@ public class Parser implements Tokens { } } } - |