From: Alexander Borisov Date: Tue, 29 Jun 2021 14:08:23 +0000 (+0300) Subject: Fixed rest parameter parsing without binding identifier. X-Git-Tag: 0.6.2~23 X-Git-Url: http://git.kaiwu.me/postgresql/log/contrib/postgres_fdw/static/gitweb.js?a=commitdiff_plain;h=33f3c476be4fc4dc314a83800cb89cd7ce56ef83;p=njs.git Fixed rest parameter parsing without binding identifier. This closes #400 issue on GitHub. --- diff --git a/src/njs_parser.c b/src/njs_parser.c index 7a89f7e7..2d3f18c2 100644 --- a/src/njs_parser.c +++ b/src/njs_parser.c @@ -6791,6 +6791,15 @@ njs_parser_formal_parameters(njs_parser_t *parser, njs_lexer_token_t *token, njs_lexer_consume_token(parser->lexer, 1); + token = njs_lexer_token(parser->lexer, 0); + if (token == NULL) { + return NJS_ERROR; + } + + if (!njs_lexer_token_is_binding_identifier(token)) { + return njs_parser_failed(parser); + } + lambda->rest_parameters = 1; return NJS_OK; diff --git a/src/test/njs_unit_test.c b/src/test/njs_unit_test.c index d9def1f0..c20cf74b 100644 --- a/src/test/njs_unit_test.c +++ b/src/test/njs_unit_test.c @@ -9330,6 +9330,12 @@ static njs_unit_test_t njs_test[] = { njs_str("function f(a,...rest) { }; f.length"), njs_str("1") }, + { njs_str("function f(...) {}"), + njs_str("SyntaxError: Unexpected token \")\" in 1") }, + + { njs_str("(function (...) {})()"), + njs_str("SyntaxError: Unexpected token \")\" in 1") }, + { njs_str("function f(a,b) { }; var ff = f.bind(f, 1); ff.length"), njs_str("1") },