| Index: dart/frog/leg/scanner/parser.dart
|
| diff --git a/dart/frog/leg/scanner/parser.dart b/dart/frog/leg/scanner/parser.dart
|
| index d71b5c70a32f17ad9e04d14dcdf7c5a563d52ad6..c51a28ba9ac3be9a3854dbb8d2577e3643b9cc71 100644
|
| --- a/dart/frog/leg/scanner/parser.dart
|
| +++ b/dart/frog/leg/scanner/parser.dart
|
| @@ -435,19 +435,28 @@ class Parser {
|
| listener.beginScriptTag(token);
|
| token = parseIdentifier(token.next);
|
| token = expect('(', token);
|
| - token = parseLiteralString(token);
|
| + token = parseLiteralStringOrRecoverExpression(token);
|
| bool hasPrefix = false;
|
| if (optional(',', token)) {
|
| hasPrefix = true;
|
| token = parseIdentifier(token.next);
|
| token = expect(':', token);
|
| - token = parseLiteralString(token);
|
| + token = parseLiteralStringOrRecoverExpression(token);
|
| }
|
| token = expect(')', token);
|
| listener.endScriptTag(hasPrefix, begin, token);
|
| return expectSemicolon(token);
|
| }
|
|
|
| + Token parseLiteralStringOrRecoverExpression(Token token) {
|
| + if (token.kind === STRING_TOKEN) {
|
| + return parseLiteralString(token);
|
| + } else {
|
| + listener.recoverableError("unexpected", token: token);
|
| + return parseExpression(token);
|
| + }
|
| + }
|
| +
|
| Token expectSemicolon(Token token) {
|
| return expect(';', token);
|
| }
|
|
|