diff --git a/dist/meriyah.umd.js b/dist/meriyah.umd.js index dc766b9b..c47058e1 100644 --- a/dist/meriyah.umd.js +++ b/dist/meriyah.umd.js @@ -6314,7 +6314,7 @@ case 67108877: { nextToken(parser, (context | 1073741824 | 8192) ^ 8192); parser.assignable = 1; - const property = parsePropertyOrPrivatePropertyName(parser, context); + const property = parsePropertyOrPrivatePropertyName(parser, context | 65536); expr = finishNode(parser, context, start, line, column, { type: 'MemberExpression', object: expr, diff --git a/src/parser.ts b/src/parser.ts index 4d292f52..deb1efa2 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -4043,7 +4043,7 @@ export function parseMemberOrUpdateExpression( parser.assignable = AssignmentKind.Assignable; - const property = parsePropertyOrPrivatePropertyName(parser, context); + const property = parsePropertyOrPrivatePropertyName(parser, context | Context.TaggedTemplate); expr = finishNode(parser, context, start, line, column, { type: 'MemberExpression', diff --git a/test/parser/expressions/template.ts b/test/parser/expressions/template.ts index fa7a9a96..ce60a7ba 100644 --- a/test/parser/expressions/template.ts +++ b/test/parser/expressions/template.ts @@ -345,7 +345,8 @@ describe('Expressions - Template', () => { "(function tag() { return () => {}; })()`'\\00a0'`", "(function() { return () => {}; })()`'\\00a0'`", "(function tag() {})`'\\00a0'`", - "(function() {})`'\\00a0'`" + "(function() {})`'\\00a0'`", + 'String.raw`{\rtf1adeflang1025ansiansicpg1252\\uc1`;' ]) { it(`${arg}`, () => { t.doesNotThrow(() => { @@ -4126,6 +4127,48 @@ describe('Expressions - Template', () => { sourceType: 'script', type: 'Program' } + ], + [ + 'String.raw`{\rtf1adeflang1025ansiansicpg1252\\uc1`;', + Context.None, + { + body: [ + { + expression: { + quasi: { + expressions: [], + quasis: [ + { + tail: true, + type: 'TemplateElement', + value: { + cooked: undefined, + raw: '{\rtf1adeflang1025ansiansicpg1252\\uc1' + } + } + ], + type: 'TemplateLiteral' + }, + tag: { + computed: false, + object: { + name: 'String', + type: 'Identifier' + }, + property: { + name: 'raw', + type: 'Identifier' + }, + type: 'MemberExpression' + }, + type: 'TaggedTemplateExpression' + }, + type: 'ExpressionStatement' + } + ], + sourceType: 'script', + type: 'Program' + } ] ]); });