details: https://hg.nginx.org/njs/rev/82e673ec5f19 branches: changeset: 2051:82e673ec5f19 user: Vadim Zhestikov <v.zhesti...@f5.com> date: Mon Feb 27 18:39:44 2023 -0800 description: Parser: fixed the detection of await in arguments.
This fixes #619 issue on Github. diffstat: src/njs_parser.c | 9 +++------ src/test/njs_unit_test.c | 3 +++ 2 files changed, 6 insertions(+), 6 deletions(-) diffs (37 lines): diff -r 0f5b52a42f97 -r 82e673ec5f19 src/njs_parser.c --- a/src/njs_parser.c Mon Feb 27 18:16:01 2023 -0800 +++ b/src/njs_parser.c Mon Feb 27 18:39:44 2023 -0800 @@ -3565,17 +3565,14 @@ njs_parser_await(njs_parser_t *parser, n njs_queue_link_t *current) { njs_parser_node_t *node; - njs_parser_scope_t *scope; - - scope = njs_function_scope(parser->scope); - - if (!scope->async) { + + if (!njs_function_scope(parser->scope)->async) { njs_parser_syntax_error(parser, "await is only valid in async functions"); return NJS_ERROR; } - if (scope->in_args) { + if (parser->scope->in_args) { njs_parser_syntax_error(parser, "await in arguments not supported"); return NJS_ERROR; } diff -r 0f5b52a42f97 -r 82e673ec5f19 src/test/njs_unit_test.c --- a/src/test/njs_unit_test.c Mon Feb 27 18:16:01 2023 -0800 +++ b/src/test/njs_unit_test.c Mon Feb 27 18:39:44 2023 -0800 @@ -19824,6 +19824,9 @@ static njs_unit_test_t njs_test[] = "(async function() {f('Number: ' + await 111)})"), njs_str("SyntaxError: await in arguments not supported in 1") }, + { njs_str("async function f1() {try {f(await f1)} catch(e) {}}"), + njs_str("SyntaxError: await in arguments not supported in 1") }, + { njs_str("async function af() {await encrypt({},}"), njs_str("SyntaxError: Unexpected token \"}\" in 1") }, _______________________________________________ nginx-devel mailing list nginx-devel@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx-devel