| Index: dart/frog/leg/scanner/parser.dart
|
| diff --git a/dart/frog/leg/scanner/parser.dart b/dart/frog/leg/scanner/parser.dart
|
| index ed2dc0ea505111fa50fcc006c3a9712ec29daba2..76f1001b64ec301cc6abad689ee352653b63dca2 100644
|
| --- a/dart/frog/leg/scanner/parser.dart
|
| +++ b/dart/frog/leg/scanner/parser.dart
|
| @@ -65,7 +65,7 @@ class Parser<L extends Listener> {
|
| token = parseReturnTypeOpt(next(token));
|
| token = parseIdentifier(token);
|
| token = parseTypeVariablesOpt(token);
|
| - token = parseParameters(token);
|
| + token = parseFormalParameters(token);
|
| listener.endFunctionTypeAlias(token);
|
| return expect(';', token);
|
| }
|
| @@ -79,16 +79,23 @@ class Parser<L extends Listener> {
|
| }
|
| }
|
|
|
| - Token parseParameters(Token token) {
|
| + Token parseFormalParameters(Token token) {
|
| + Token begin = token;
|
| + listener.beginFormalParameters(begin);
|
| expect('(', token);
|
| - if (optional(')', next(token))) {
|
| - return next(next(token));
|
| + int parameterCount = 0;
|
| + if (optional(')', token.next)) {
|
| + listener.endFormalParameters(parameterCount, begin, token.next);
|
| + return token.next.next;
|
| }
|
| do {
|
| - // TODO(ahe): Handle 'final' and 'var'.
|
| + listener.beginFormalParameter(token);
|
| token = parseTypeOpt(next(token));
|
| token = parseIdentifier(token);
|
| + listener.endFormalParameter(token);
|
| + ++parameterCount;
|
| } while (optional(',', token));
|
| + listener.endFormalParameters(parameterCount, begin, token);
|
| return expect(')', token);
|
| }
|
|
|
| @@ -100,6 +107,7 @@ class Parser<L extends Listener> {
|
| case isIdentifier(token.next):
|
| return parseType(token);
|
| default:
|
| + listener.handleNoType(token);
|
| return token;
|
| }
|
| }
|
| @@ -343,24 +351,6 @@ class BodyParser extends Parser/* <BodyListener> Frog bug #320 */ {
|
| return parseFunctionBody(token);
|
| }
|
|
|
| - Token parseFormalParameters(Token token) {
|
| - Token begin = token;
|
| - listener.beginFormalParameters(begin);
|
| - expect('(', token);
|
| - int parameterCount = 0;
|
| - if (optional(')', token.next)) {
|
| - listener.endFormalParameters(parameterCount, begin, token.next);
|
| - return token.next.next;
|
| - }
|
| - do {
|
| - token = parseType(next(token)); // TODO(ahe): Types are optional.
|
| - token = parseIdentifier(token);
|
| - ++parameterCount;
|
| - } while (optional(',', token));
|
| - listener.endFormalParameters(parameterCount, begin, token);
|
| - return expect(')', token);
|
| - }
|
| -
|
| Token parseFunctionBody(Token token) {
|
| if (optional(';', token)) {
|
| listener.endFunctionBody(0, null, token);
|
|
|