fix parser reserved words

This commit is contained in:
Dmitry Vasilev
2023-12-07 00:44:15 +08:00
parent c6108e5002
commit de40cc9b8a
3 changed files with 13 additions and 10 deletions

View File

@@ -724,7 +724,10 @@ const function_call_or_member_access = nested =>
),
// Adjust identifier to string literal
if_ok(
identifier,
either(
identifier,
by_type('keyword'),
),
iden => ({...iden,
type: 'string_literal',
value: '"' + iden.value + '"',

View File

@@ -3,9 +3,7 @@
export const reserved = [
'break',
'case',
// TODO: fix parser to allow catch be an Object key, as other reserved words.
// Currently we make exception for promise.catch
// 'catch',
'catch',
'class',
'const',
'continue',
@@ -16,9 +14,7 @@ export const reserved = [
'else',
'export',
'extends',
// TODO: fix parser to allow finally be an Object key, as other reserved words.
// Currently we make exception for promise.finally
// 'finally',
'finally',
'for',
'function',
'if',
@@ -36,9 +32,7 @@ export const reserved = [
'var',
'void',
'while',
// TODO: fix parser to allow 'with' be an Object key, as other reserved words.
// Currently we make exception for Array.with
// 'with',
'with',
'yield',
'enum',
'implements',

View File

@@ -32,6 +32,12 @@ import {
export const tests = [
test('reserved words', () => {
const result = do_parse('let catch')
assert_equal(result.ok, false)
assert_equal(result.problems[0].index, 4)
}),
test('invalid token in the beginning', () => {
const result = do_parse('# import')
assert_equal(result, {