]> git.kaiwu.me - quickjs.git/commitdiff
new keyword cannot be used with an optional chain
authorFabrice Bellard <fabrice@bellard.org>
Sat, 24 May 2025 11:01:50 +0000 (13:01 +0200)
committerFabrice Bellard <fabrice@bellard.org>
Sat, 24 May 2025 11:01:50 +0000 (13:01 +0200)
quickjs.c
test262_errors.txt

index ac4f2aaec1c45b59d56864d6f3262f547d3cad04..42c8d4ea8d253947f9759f19a8f4d4484f64d5f2 100644 (file)
--- a/quickjs.c
+++ b/quickjs.c
@@ -25660,6 +25660,8 @@ static __exception int js_parse_postfix_expr(JSParseState *s, int parse_flags)
         BOOL has_optional_chain = FALSE;
 
         if (s->token.val == TOK_QUESTION_MARK_DOT) {
+            if ((parse_flags & PF_POSTFIX_CALL) == 0)
+                return js_parse_error(s, "new keyword cannot be used with an optional chain");
             op_token_ptr = s->token.ptr;
             /* optional chaining */
             if (next_token(s))
index 6cac22d3d78003160c7763d4a9e5df845e30698b..7e086f64609d71773d50f4acf91441fb060b844b 100644 (file)
@@ -30,7 +30,6 @@ test262/test/staging/sm/class/boundFunctionSubclassing.js:12: Test262Error: Expe
 test262/test/staging/sm/class/compPropNames.js:26: Error: Expected syntax error: ({[1, 2]: 3})
 test262/test/staging/sm/class/strictExecution.js:32: Error: Assertion failed: expected exception TypeError, no exception thrown
 test262/test/staging/sm/class/superPropOrdering.js:83: Error: Assertion failed: expected exception TypeError, no exception thrown
-test262/test/staging/sm/expressions/optional-chain.js:25: Error: Assertion failed: expected exception SyntaxError, no exception thrown
 test262/test/staging/sm/expressions/short-circuit-compound-assignment-const.js:97: TypeError: 'a' is read-only
 test262/test/staging/sm/expressions/short-circuit-compound-assignment-tdz.js:23: Error: Assertion failed: expected exception ReferenceError, got TypeError: 'a' is read-only
 test262/test/staging/sm/extensions/TypedArray-set-object-funky-length-detaches.js:55: RangeError: invalid array length