return time_clip(tv);
}
+static double set_date_fields_checked(double fields[minimum_length(7)], int is_local)
+{
+ int i;
+ double a;
+ for(i = 0; i < 7; i++) {
+ a = fields[i];
+ if (!isfinite(a))
+ return NAN;
+ fields[i] = trunc(a);
+ if (i == 0 && fields[0] >= 0 && fields[0] < 100)
+ fields[0] += 1900;
+ }
+ return set_date_fields(fields, is_local);
+}
+
static JSValue get_date_field(JSContext *ctx, JSValueConst this_val,
int argc, JSValueConst *argv, int magic)
{
// Date(y, mon, d, h, m, s, ms)
JSValue rv;
int i, n;
- double a, val;
+ double val;
if (JS_IsUndefined(new_target)) {
/* invoked as function */
if (n > 7)
n = 7;
for(i = 0; i < n; i++) {
- if (JS_ToFloat64(ctx, &a, argv[i]))
+ if (JS_ToFloat64(ctx, &fields[i], argv[i]))
return JS_EXCEPTION;
- if (!isfinite(a))
- break;
- fields[i] = trunc(a);
- if (i == 0 && fields[0] >= 0 && fields[0] < 100)
- fields[0] += 1900;
}
- val = (i == n) ? set_date_fields(fields, 1) : NAN;
+ val = set_date_fields_checked(fields, 1);
}
has_val:
#if 0
// UTC(y, mon, d, h, m, s, ms)
double fields[] = { 0, 0, 1, 0, 0, 0, 0 };
int i, n;
- double a;
n = argc;
if (n == 0)
if (n > 7)
n = 7;
for(i = 0; i < n; i++) {
- if (JS_ToFloat64(ctx, &a, argv[i]))
+ if (JS_ToFloat64(ctx, &fields[i], argv[i]))
return JS_EXCEPTION;
- if (!isfinite(a))
- return JS_NAN;
- fields[i] = trunc(a);
- if (i == 0 && fields[0] >= 0 && fields[0] < 100)
- fields[0] += 1900;
}
- return JS_NewFloat64(ctx, set_date_fields(fields, 0));
+ return JS_NewFloat64(ctx, set_date_fields_checked(fields, 0));
}
/* Date string parsing */
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/UTC-convert-all-arguments.js:13: Test262Error: index 1: expected 42, got Error: didn't throw Expected SameValue(«Error: didn't throw», «42») to be true
-test262/test/staging/sm/Date/UTC-convert-all-arguments.js:13: strict mode: Test262Error: index 1: expected 42, got Error: didn't throw Expected SameValue(«Error: didn't throw», «42») to be true
-test262/test/staging/sm/Date/constructor-convert-all-arguments.js:13: Test262Error: index undefined: expected 42, got Error: didn't throw Expected SameValue(«Error: didn't throw», «42») to be true
-test262/test/staging/sm/Date/constructor-convert-all-arguments.js:13: strict mode: Test262Error: index undefined: expected 42, got Error: didn't throw Expected SameValue(«Error: didn't throw», «42») to be true
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