]> git.kaiwu.me - quickjs.git/commitdiff
stricter year parsing in Date
authorFabrice Bellard <fabrice@bellard.org>
Mon, 13 Oct 2025 12:51:37 +0000 (14:51 +0200)
committerFabrice Bellard <fabrice@bellard.org>
Mon, 13 Oct 2025 12:51:37 +0000 (14:51 +0200)
TODO
quickjs.c
test262_errors.txt

diff --git a/TODO b/TODO
index d6618cfa08da2a2c62c22687655ba829178b513e..af96fb8d6f50cec567c2e084d1594258e471201f 100644 (file)
--- a/TODO
+++ b/TODO
@@ -63,4 +63,4 @@ Test262o:   0/11262 errors, 463 excluded
 Test262o commit: 7da91bceb9ce7613f87db47ddd1292a2dda58b42 (es5-tests branch)
 
 Test262:
-Result: 63/83149 errors, 1645 excluded, 5538 skipped
+Result: 61/83149 errors, 1645 excluded, 5538 skipped
index 3c28cf70e0f64ecf20528914244e067de8e3e71c..9d416d35345508931564cba994004e318ea3ced8 100644 (file)
--- a/quickjs.c
+++ b/quickjs.c
@@ -53839,11 +53839,11 @@ static BOOL js_date_parse_otherstring(const uint8_t *sp,
                     *is_local = FALSE;
                 }
             } else {
-                if (p - p_start > 2) {
+                if (p - p_start > 2 && !has_year) {
                     fields[0] = val;
                     has_year = TRUE;
                 } else
-                if (val < 1 || val > 31) {
+                if ((val < 1 || val > 31) && !has_year) {
                     fields[0] = val + (val < 100) * 1900 + (val < 50) * 100;
                     has_year = TRUE;
                 } else {
index df0e8fefd12b1c2e4f592ad27d65c54a972317f3..ec3df0f3e8d47ddb53c22ad16002f4e37cd705e6 100644 (file)
@@ -7,8 +7,6 @@ test262/test/annexB/language/expressions/assignmenttargettype/callexpression.js:
 test262/test/annexB/language/expressions/assignmenttargettype/cover-callexpression-and-asyncarrowhead.js:20: SyntaxError: invalid assignment left-hand side
 test262/test/language/identifier-resolution/assign-to-global-undefined.js:20: strict mode: expected error
 test262/test/language/module-code/top-level-await/rejection-order.js:20: TypeError: $DONE() not called
-test262/test/staging/sm/Date/two-digit-years.js:26: Test262Error: Expected SameValue(«915177600000», «NaN») to be true
-test262/test/staging/sm/Date/two-digit-years.js:26: strict mode: Test262Error: Expected SameValue(«915177600000», «NaN») to be true
 test262/test/staging/sm/Function/arguments-parameter-shadowing.js:14: Test262Error: Expected SameValue(«true», «false») to be true
 test262/test/staging/sm/Function/constructor-binding.js:11: Test262Error: Expected SameValue(«"function"», «"undefined"») to be true
 test262/test/staging/sm/Function/constructor-binding.js:11: strict mode: Test262Error: Expected SameValue(«"function"», «"undefined"») to be true