boa-dev / boa

Boa is an embeddable and experimental Javascript engine written in Rust. Currently, it has support for some of the language.
MIT License
5.04k stars 399 forks source link

add some temporal methods #3856

Closed jasonwilliams closed 1 month ago

jasonwilliams commented 4 months ago

Adds methods to yearMonth and monthDay

Relies on https://github.com/boa-dev/temporal/pull/44

github-actions[bot] commented 4 months ago

Test262 conformance changes

Test result main count PR count difference
Total 48,212 48,212 0
Passed 43,264 43,346 +82
Ignored 1,413 1,413 0
Failed 3,535 3,453 -82
Panics 0 0 0
Conformance 89.74% 89.91% +0.17%
Fixed tests (130): ``` test/staging/Temporal/Regex/old/plainyearmonth.js (previously Failed) test/staging/Temporal/Regex/old/plainmonthday.js (previously Failed) test/built-ins/Temporal/Instant/prototype/since/instant-string-multiple-offsets.js (previously Failed) test/built-ins/Temporal/Instant/prototype/since/round-cross-unit-boundary.js (previously Failed) test/built-ins/Temporal/Instant/prototype/since/argument-string-time-separators.js (previously Failed) test/built-ins/Temporal/Instant/prototype/since/options-object.js (previously Failed) test/built-ins/Temporal/Instant/prototype/since/argument-string-calendar-annotation.js (previously Failed) test/built-ins/Temporal/Instant/prototype/since/argument-string-time-zone-annotation.js (previously Failed) test/built-ins/Temporal/Instant/prototype/since/argument-string-unknown-annotation.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-wrong-type.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/argument-string-minus-sign.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/argument-string-calendar-annotation-invalid-key.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/argument-string-multiple-time-zone.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/year-zero.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/observable-get-overflow-argument-string-invalid.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/argument-propertybag-calendar-year-zero.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/name.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/argument-string-multiple-calendar.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/not-a-constructor.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/prop-desc.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/builtin.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/from/argument-string-critical-unknown-annotation.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/day/branding.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/day/prop-desc.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/toString/branding.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/toString/prop-desc.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/monthCode/branding.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/monthCode/prop-desc.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/calendarId/branding.js (previously Failed) test/built-ins/Temporal/PlainMonthDay/prototype/calendarId/prop-desc.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-expand.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-halfCeil.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-undefined.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-halfFloor.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-ceil.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-floor.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-halfTrunc.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-halfEven.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingincrement-minutes.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/roundingmode-halfExpand.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/round/rounding-cross-midnight.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/round-cross-unit-boundary.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/argument-string-time-separators.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/options-object.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/argument-string-calendar-annotation.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/argument-string-time-zone-annotation.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/argument-string-date-with-utc-offset.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/largestunit-plurals-accepted.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/since/argument-string-unknown-annotation.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/until/result-sub-second.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/until/largestunit-plurals-accepted.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/add/argument-object.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/add/options-ignored.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/subtract/argument-object.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/subtract/balance-negative-time-units.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/subtract/subclassing-ignored.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/subtract/argument-duration.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/subtract/argument-string-negative-fractional-units.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/subtract/argument-string-fractional-units-rounding-mode.js (previously Failed) test/built-ins/Temporal/PlainTime/prototype/subtract/options-ignored.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/calendar-string.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/calendar-undefined.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/argument-string-minus-sign.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/argument-string-calendar-annotation-invalid-key.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/argument-string-multiple-time-zone.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/argument-string-trailing-junk.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/year-zero.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/name.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/argument-string-multiple-calendar.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/not-a-constructor.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/options-undefined.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/prop-desc.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/builtin.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/from/argument-string-critical-unknown-annotation.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/monthsInYear/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/monthsInYear/basic.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/month/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/daysInMonth/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/daysInMonth/basic.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/daysInYear/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/daysInYear/basic.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/inLeapYear/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/inLeapYear/basic.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/year/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/add/options-invalid.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/add/overflow-invalid-string.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/add/argument-mixed-sign.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/add/limits.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/add/non-integer-throws-rangeerror.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/calendarname-wrong-type.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/calendarname-never.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/calendarname-auto.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/options-object.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/order-of-operations.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/options-wrong-type.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/prop-desc.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/calendarname-undefined.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/calendarname-invalid-string.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/with/argument-timezone-field.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/with/argument-missing-fields.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/with/argument-calendar-field.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/monthCode/branding.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/subtract/options-invalid.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/subtract/overflow-invalid-string.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/subtract/builtin-calendar-no-array-iteration.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/subtract/argument-mixed-sign.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/subtract/non-integer-throws-rangeerror.js (previously Failed) test/built-ins/Temporal/PlainYearMonth/prototype/calendarId/branding.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/largestunit-default.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/rounding-relative.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/options-object.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/weeks-months.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/smallestunit-undefined.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/largestunit-wrong-type.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/days-in-month.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/largestunit-undefined.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/roundingincrement-undefined.js (previously Failed) test/built-ins/Temporal/PlainDate/prototype/since/days-in-year.js (previously Failed) test/built-ins/Temporal/Duration/prototype/round/largestunit-plurals-accepted.js (previously Failed) test/built-ins/Temporal/Duration/prototype/round/largestunit-smallestunit-combinations.js (previously Failed) test/built-ins/Temporal/Duration/prototype/with/sign-conflict-throws-rangeerror.js (previously Failed) test/built-ins/Temporal/Duration/prototype/negated/subclassing-ignored.js (previously Failed) test/built-ins/Temporal/Duration/prototype/negated/basic.js (previously Failed) test/built-ins/Temporal/PlainDateTime/prototype/until/subseconds.js (previously Failed) test/built-ins/Temporal/PlainDateTime/prototype/add/hour-overflow.js (previously Failed) test/built-ins/Temporal/PlainDateTime/prototype/subtract/hour-overflow.js (previously Failed) test/intl402/Temporal/PlainMonthDay/from/canonicalize-calendar.js (previously Failed) test/intl402/Temporal/PlainMonthDay/prototype/with/fields-missing-properties.js (previously Failed) test/intl402/Temporal/PlainYearMonth/canonicalize-calendar.js (previously Failed) ```
Broken tests (48): ``` test/built-ins/Temporal/Instant/prototype/until/roundingmode-expand.js (previously Passed) test/built-ins/Temporal/Instant/prototype/until/roundingmode-halfCeil.js (previously Passed) test/built-ins/Temporal/Instant/prototype/until/roundingmode-halfFloor.js (previously Passed) test/built-ins/Temporal/Instant/prototype/until/roundingmode-ceil.js (previously Passed) test/built-ins/Temporal/Instant/prototype/until/roundingmode-floor.js (previously Passed) test/built-ins/Temporal/Instant/prototype/until/roundingmode-halfTrunc.js (previously Passed) test/built-ins/Temporal/Instant/prototype/until/roundingmode-halfEven.js (previously Passed) test/built-ins/Temporal/Instant/prototype/until/roundingmode-halfExpand.js (previously Passed) test/built-ins/Temporal/PlainMonthDay/from/fields-missing-properties.js (previously Passed) test/built-ins/Temporal/PlainMonthDay/prototype/toString/length.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-expand.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-halfCeil.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/argument-string-with-time-designator.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/balance-negative-time-units.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-halfFloor.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-ceil.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-floor.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-halfTrunc.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-halfEven.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/roundingmode-halfExpand.js (previously Passed) test/built-ins/Temporal/PlainTime/prototype/until/basic.js (previously Passed) test/built-ins/Temporal/PlainYearMonth/from/fields-missing-properties.js (previously Passed) test/built-ins/Temporal/PlainYearMonth/from/argument-propertybag-calendar-number.js (previously Passed) test/built-ins/Temporal/PlainYearMonth/from/options-invalid.js (previously Passed) test/built-ins/Temporal/PlainYearMonth/prototype/toString/length.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/balance-negative-result.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-expand.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-halfCeil.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/round-negative-result.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/balance-subseconds.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-halfFloor.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-ceil.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-floor.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-halfTrunc.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-halfEven.js (previously Passed) test/built-ins/Temporal/Duration/prototype/round/roundingmode-halfExpand.js (previously Passed) test/built-ins/Temporal/Duration/prototype/add/balance-negative-result.js (previously Passed) test/built-ins/Temporal/Duration/prototype/add/balance-negative-time-units.js (previously Passed) test/built-ins/Temporal/Duration/prototype/add/argument-string-negative-fractional-units.js (previously Passed) test/built-ins/Temporal/Duration/prototype/add/argument-string-fractional-units-rounding-mode.js (previously Passed) test/built-ins/Temporal/Duration/prototype/subtract/balance-negative-result.js (previously Passed) test/built-ins/Temporal/Duration/prototype/subtract/balance-negative-time-units.js (previously Passed) test/built-ins/Temporal/Duration/prototype/subtract/argument-string-fractional-units-rounding-mode.js (previously Passed) test/built-ins/Temporal/PlainDateTime/prototype/until/balance-negative-time-units.js (previously Passed) test/built-ins/Temporal/PlainDateTime/prototype/until/balance-negative-duration.js (previously Passed) test/intl402/Temporal/PlainMonthDay/from/fields-missing-properties.js (previously Passed) test/intl402/Temporal/PlainMonthDay/from/fields-underspecified.js (previously Passed) test/intl402/Temporal/PlainYearMonth/from/one-of-era-erayear-undefined.js (previously Passed) ```
jasonwilliams commented 4 months ago

linked to https://github.com/boa-dev/temporal/pull/44

nekevss commented 2 months ago

Was double checking this. I think the new revision of temporal_rs needs to be added, and then I think this PR should be just about good to go.