Mercurial > njs
changeset 155:e6e192a55774
A return statement has been disabled outside of function.
| author | Igor Sysoev <igor@sysoev.ru> |
|---|---|
| date | Mon, 15 Aug 2016 11:33:37 +0300 |
| parents | 0c9a771b7664 |
| children | dcd8a105b5e7 |
| files | njs/njs_parser.c njs/test/njs_unit_test.c |
| diffstat | 2 files changed, 10 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/njs/njs_parser.c Thu Aug 11 13:57:36 2016 +0300 +++ b/njs/njs_parser.c Mon Aug 15 11:33:37 2016 +0300 @@ -584,6 +584,13 @@ 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;
--- a/njs/test/njs_unit_test.c Thu Aug 11 13:57:36 2016 +0300 +++ b/njs/test/njs_unit_test.c Mon Aug 15 11:33:37 2016 +0300 @@ -3290,6 +3290,9 @@ /* Functions. */ + { nxt_string("return"), + nxt_string("SyntaxError: Illegal return statement in 1") }, + { nxt_string("function () { } f()"), nxt_string("SyntaxError: Unexpected token \"(\" in 1") },
