From 326fcc3e12b84a6783efaac833a8d9e813ae1b51 Mon Sep 17 00:00:00 2001 From: Igor Sysoev Date: Mon, 15 Aug 2016 11:33:37 +0300 Subject: [PATCH] A return statement has been disabled outside of function. --- njs/njs_parser.c | 7 +++++++ njs/test/njs_unit_test.c | 3 +++ 2 files changed, 10 insertions(+) diff --git a/njs/njs_parser.c b/njs/njs_parser.c index 87159da3..c5635f66 100644 --- a/njs/njs_parser.c +++ b/njs/njs_parser.c @@ -584,6 +584,13 @@ njs_parser_return_statement(njs_vm_t *vm, njs_parser_t *parser) njs_token_t token; njs_parser_node_t *node; + if (parser->scope == NJS_SCOPE_GLOBAL) { + nxt_alert(&vm->trace, NXT_LEVEL_ERROR, + "SyntaxError: Illegal return statement"); + + return NXT_ERROR; + } + node = njs_parser_node_alloc(vm); if (nxt_slow_path(node == NULL)) { return NJS_TOKEN_ERROR; diff --git a/njs/test/njs_unit_test.c b/njs/test/njs_unit_test.c index 1fae98b5..9ec00ef0 100644 --- a/njs/test/njs_unit_test.c +++ b/njs/test/njs_unit_test.c @@ -3290,6 +3290,9 @@ static njs_unit_test_t njs_test[] = /* Functions. */ + { nxt_string("return"), + nxt_string("SyntaxError: Illegal return statement in 1") }, + { nxt_string("function () { } f()"), nxt_string("SyntaxError: Unexpected token \"(\" in 1") }, -- 2.47.3