{
.entry = { njs_str("implements") },
.type = NJS_TOKEN_IMPLEMENTS,
- .reserved = 0
+ .reserved = 1
},
{
{
.entry = { njs_str("interface") },
.type = NJS_TOKEN_INTERFACE,
- .reserved = 0
+ .reserved = 1
},
{
.entry = { njs_str("let") },
.type = NJS_TOKEN_LET,
- .reserved = 0
+ .reserved = 1
},
{
{
.entry = { njs_str("package") },
.type = NJS_TOKEN_PACKAGE,
- .reserved = 0
+ .reserved = 1
},
{
.entry = { njs_str("private") },
.type = NJS_TOKEN_PRIVATE,
- .reserved = 0
+ .reserved = 1
},
{
.entry = { njs_str("protected") },
.type = NJS_TOKEN_PROTECTED,
- .reserved = 0
+ .reserved = 1
},
{
.entry = { njs_str("public") },
.type = NJS_TOKEN_PUBLIC,
- .reserved = 0
+ .reserved = 1
},
{
{
.entry = { njs_str("static") },
.type = NJS_TOKEN_STATIC,
- .reserved = 0
+ .reserved = 1
},
{
break;
default:
+ if (njs_lexer_token_is_reserved(token)) {
+ njs_lexer_consume_token(parser->lexer, 1);
+ njs_parser_next(parser, njs_parser_failed_state);
+ return NJS_OK;
+ }
+
if (njs_lexer_token_is_binding_identifier(token)) {
njs_parser_next(parser, njs_parser_lexical_declaration);
break;
{ njs_str("function f(){} typeof(f)"),
njs_str("function") },
+ { njs_str("function let() {}"),
+ njs_str("SyntaxError: Unexpected token \"let\" in 1") },
+
+ { njs_str("function static() {}"),
+ njs_str("SyntaxError: Unexpected token \"static\" in 1") },
+
/* Recursive factorial. */
{ njs_str("function f(a) {"
{ njs_str("var let = 123;"
"let"),
- njs_str("123") },
+ njs_str("SyntaxError: Unexpected token \"let\" in 1") },
{ njs_str("var const = 123"),
njs_str("SyntaxError: Unexpected token \"const\" in 1") },