| Index: dart/lib/compiler/implementation/scanner/parser.dart
|
| diff --git a/dart/lib/compiler/implementation/scanner/parser.dart b/dart/lib/compiler/implementation/scanner/parser.dart
|
| index a7f9fcd07da968f599986e5d8900878fe8e73280..ae182b5474cee0a47db5fc49b0729bc596f3f9f8 100644
|
| --- a/dart/lib/compiler/implementation/scanner/parser.dart
|
| +++ b/dart/lib/compiler/implementation/scanner/parser.dart
|
| @@ -975,21 +975,14 @@ class Parser {
|
| Token factoryKeyword = token;
|
| listener.beginFactoryMethod(factoryKeyword);
|
| token = token.next; // Skip 'factory'.
|
| - token = parseIdentifier(token);
|
| - token = parseQualifiedRestOpt(token);
|
| - token = parseTypeVariablesOpt(token);
|
| - Token period = null;
|
| - if (optional('.', token)) {
|
| - period = token;
|
| - token = parseIdentifier(token.next);
|
| - }
|
| + token = parseConstructorReference(token);
|
| token = parseFormalParameters(token);
|
| if (optional('=', token)) {
|
| token = parseRedirectingFactoryBody(token);
|
| } else {
|
| token = parseFunctionBody(token, false);
|
| }
|
| - listener.endFactoryMethod(start, period, token);
|
| + listener.endFactoryMethod(start, token);
|
| return token.next;
|
| }
|
|
|
| @@ -1650,22 +1643,22 @@ class Parser {
|
| return false;
|
| }
|
|
|
| - Token parseNewExpression(Token token) {
|
| - Token newKeyword = token;
|
| - token = expect('new', token);
|
| - token = parseType(token);
|
| - bool named = false;
|
| - if (optional('.', token)) {
|
| - named = true;
|
| - token = parseIdentifier(token.next);
|
| - }
|
| + Token parseRequiredArguments(Token token) {
|
| if (optional('(', token)) {
|
| token = parseArguments(token);
|
| } else {
|
| listener.handleNoArguments(token);
|
| token = listener.unexpected(token);
|
| }
|
| - listener.handleNewExpression(newKeyword, named);
|
| + return token;
|
| + }
|
| +
|
| + Token parseNewExpression(Token token) {
|
| + Token newKeyword = token;
|
| + token = expect('new', token);
|
| + token = parseConstructorReference(token);
|
| + token = parseRequiredArguments(token);
|
| + listener.handleNewExpression(newKeyword);
|
| return token;
|
| }
|
|
|
| @@ -1679,15 +1672,9 @@ class Parser {
|
| (identical(value, '{'))) {
|
| return parseLiteralListOrMap(constKeyword);
|
| }
|
| - token = parseType(token);
|
| - bool named = false;
|
| - if (optional('.', token)) {
|
| - named = true;
|
| - token = parseIdentifier(token.next);
|
| - }
|
| - expect('(', token);
|
| - token = parseArguments(token);
|
| - listener.handleConstExpression(constKeyword, named);
|
| + token = parseConstructorReference(token);
|
| + token = parseRequiredArguments(token);
|
| + listener.handleConstExpression(constKeyword);
|
| return token;
|
| }
|
|
|
|
|