]> git.kaiwu.me - njs.git/commitdiff
Fixed for-in unwanted detection of arrow function.
authorVadim Zhestikov <v.zhestikov@f5.com>
Thu, 17 Nov 2022 00:09:47 +0000 (16:09 -0800)
committerVadim Zhestikov <v.zhestikov@f5.com>
Thu, 17 Nov 2022 00:09:47 +0000 (16:09 -0800)
src/njs_parser.c
src/test/njs_unit_test.c

index 21cdf654201dd80e218bca7d0d51f8f979d37bfc..9d902863c35008a61af578651fbe97c61e6b1da9 100644 (file)
@@ -4291,14 +4291,16 @@ njs_parser_assignment_expression(njs_parser_t *parser,
 {
     njs_int_t  ret;
 
-    ret = njs_parser_match_arrow_expression(parser, token);
-    if (ret == NJS_OK) {
-        njs_parser_next(parser, njs_parser_arrow_function);
+    if (!parser->use_lhs) {
+        ret = njs_parser_match_arrow_expression(parser, token);
+        if (ret == NJS_OK) {
+            njs_parser_next(parser, njs_parser_arrow_function);
 
-        return NJS_OK;
+            return NJS_OK;
 
-    } else if (ret == NJS_ERROR) {
-        return NJS_ERROR;
+        } else if (ret == NJS_ERROR) {
+            return NJS_ERROR;
+        }
     }
 
     njs_parser_next(parser, njs_parser_conditional_expression);
index 5ce4d075814899e3c6e3a0a92387212e6988e57b..364fcaa6bbde662f2f93af05356ac38dbf24f293 100644 (file)
@@ -2965,6 +2965,9 @@ static njs_unit_test_t  njs_test[] =
     { njs_str("for(I in``[)8"),
       njs_str("SyntaxError: Unexpected token \")\" in 1") },
 
+    { njs_str("for(9A=>>"),
+      njs_str("SyntaxError: Unexpected token \"A\" in 1") },
+
     /* switch. */
 
     { njs_str("switch"),