| Index: dart/frog/leg/scanner/parser.dart
|
| diff --git a/dart/frog/leg/scanner/parser.dart b/dart/frog/leg/scanner/parser.dart
|
| index b276a970ce9003ee0f1544c93313e62e40485f48..77f853a49926e44e39b771749b34b19f849ca28c 100644
|
| --- a/dart/frog/leg/scanner/parser.dart
|
| +++ b/dart/frog/leg/scanner/parser.dart
|
| @@ -305,12 +305,18 @@ class Parser<L extends Listener> {
|
| }
|
| token = parseIdentifier(previous);
|
| bool isField;
|
| - if (optional('(', token)) {
|
| - isField = false;
|
| - } else if (optional('=', token) || optional(';', token)) {
|
| - isField = true;
|
| - } else {
|
| - token = listener.unexpected(token);
|
| + while (true) {
|
| + // Loop to allow the listener to rewrite the token stream to
|
| + // make the parser happy.
|
| + if (optional('(', token)) {
|
| + isField = false;
|
| + break;
|
| + } else if (optional('=', token) || optional(';', token)) {
|
| + isField = true;
|
| + break;
|
| + } else {
|
| + token = listener.unexpected(token);
|
| + }
|
| }
|
| while (token !== null &&
|
| token.kind !== LBRACE_TOKEN &&
|
|
|