Unify skipFormals and skipFormalParameters

Change-Id: I495b33b283aec848b6089619ad5632632e1df60d
Reviewed-on: https://dart-review.googlesource.com/30881
Reviewed-by: Dan Rubel <danrubel@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
This commit is contained in:
Brian Wilkerson 2017-12-20 16:56:13 +00:00 committed by commit-bot@chromium.org
parent 0eea09056d
commit 55d13097e0
2 changed files with 12 additions and 27 deletions

View file

@ -1042,10 +1042,19 @@ class Parser {
}
Token skipFormalParameters(Token token, MemberKind kind) {
Token lastConsumed = token;
token = token.next;
assert(optional('(', token));
// TODO(ahe): Shouldn't this be `beginFormalParameters`?
listener.beginOptionalFormalParameters(token);
if (!optional('(', token)) {
if (optional(';', token)) {
reportRecoverableError(token, fasta.messageExpectedOpenParens);
listener.endFormalParameters(0, token, token, kind);
return lastConsumed;
}
listener.endFormalParameters(0, token, token, kind);
return reportUnexpectedToken(token);
}
Token closeBrace = closeBraceTokenFor(token);
listener.endFormalParameters(0, token, closeBrace, kind);
return closeBrace;

View file

@ -6,37 +6,13 @@ library fasta.diet_parser;
import '../../scanner/token.dart' show Token;
import '../fasta_codes.dart' show messageExpectedOpenParens;
import '../parser.dart'
show ClassMemberParser, Listener, MemberKind, closeBraceTokenFor, optional;
import '../parser.dart' show ClassMemberParser, Listener, MemberKind;
// TODO(ahe): Move this to parser package.
class DietParser extends ClassMemberParser {
DietParser(Listener listener) : super(listener);
Token parseFormalParameters(Token token, MemberKind kind) {
return skipFormals(token, kind);
}
// TODO(brianwilkerson): Move this method to Parser, and, if possible, merge
// it with skipFormalParameters.
Token skipFormals(Token token, MemberKind kind) {
token = token.next;
listener.beginOptionalFormalParameters(token);
if (!optional('(', token)) {
if (optional(';', token)) {
reportRecoverableError(token, messageExpectedOpenParens);
listener.endFormalParameters(0, token, token, kind);
// TODO(brianwilkerson): Until this method accepts the last consumed
// token, this returns the wrong token (it should be the token before
// `token`).
return token;
}
return reportUnexpectedToken(token);
}
Token closeBrace = closeBraceTokenFor(token);
listener.endFormalParameters(0, token, closeBrace, kind);
return closeBrace;
return skipFormalParameters(token, kind);
}
}