From 8f7c2f82925948dd073d6819e3b53e9ce30f4841 Mon Sep 17 00:00:00 2001 From: Linus Groh Date: Thu, 26 Jan 2023 14:43:42 +0000 Subject: [PATCH] LibJS: Port get_difference_settings() to String Also make balance_duration() take a StringView as part of this, it only does equality checks. --- Userland/Libraries/LibJS/Console.cpp | 4 ++-- .../Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp | 6 +++--- .../Libraries/LibJS/Runtime/Temporal/AbstractOperations.h | 6 +++--- Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp | 2 +- Userland/Libraries/LibJS/Runtime/Temporal/Duration.h | 4 ++-- Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp | 2 +- .../Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp | 2 +- Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp | 2 +- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/Userland/Libraries/LibJS/Console.cpp b/Userland/Libraries/LibJS/Console.cpp index b266734a81..16e6b03ca0 100644 --- a/Userland/Libraries/LibJS/Console.cpp +++ b/Userland/Libraries/LibJS/Console.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2020, Emanuele Torre - * Copyright (c) 2020-2022, Linus Groh + * Copyright (c) 2020-2023, Linus Groh * Copyright (c) 2021-2022, Sam Atkins * * SPDX-License-Identifier: BSD-2-Clause @@ -474,7 +474,7 @@ ThrowCompletionOr Console::format_time_since(Core::ElapsedTime auto& vm = realm().vm(); auto elapsed_ms = timer.elapsed_time().to_milliseconds(); - auto duration = TRY(Temporal::balance_duration(vm, 0, 0, 0, 0, elapsed_ms, 0, "0"_sbigint, "year")); + auto duration = TRY(Temporal::balance_duration(vm, 0, 0, 0, 0, elapsed_ms, 0, "0"_sbigint, "year"sv)); auto append = [&](StringBuilder& builder, auto format, auto... number) { if (!builder.is_empty()) diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp index 2a93a47c23..c3b0bbd40a 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.cpp @@ -1863,9 +1863,9 @@ ThrowCompletionOr get_difference_settings(VM& vm, Difference // 13. Return the Record { [[SmallestUnit]]: smallestUnit, [[LargestUnit]]: largestUnit, [[RoundingMode]]: roundingMode, [[RoundingIncrement]]: roundingIncrement, [[Options]]: options }. return DifferenceSettings { - .smallest_unit = smallest_unit->to_deprecated_string(), - .largest_unit = largest_unit->to_deprecated_string(), - .rounding_mode = rounding_mode.to_deprecated_string(), + .smallest_unit = smallest_unit.release_value(), + .largest_unit = largest_unit.release_value(), + .rounding_mode = move(rounding_mode), .rounding_increment = rounding_increment, .options = *options, }; diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h index f64a544fc1..c9e5853b58 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h +++ b/Userland/Libraries/LibJS/Runtime/Temporal/AbstractOperations.h @@ -118,9 +118,9 @@ struct SecondsStringPrecision { }; struct DifferenceSettings { - DeprecatedString smallest_unit; - DeprecatedString largest_unit; - DeprecatedString rounding_mode; + String smallest_unit; + String largest_unit; + String rounding_mode; u64 rounding_increment; Object& options; }; diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp index 648320da1a..e8b67a84f1 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.cpp @@ -481,7 +481,7 @@ Crypto::SignedBigInteger total_duration_nanoseconds(double days, double hours, d } // 7.5.18 BalanceDuration ( days, hours, minutes, seconds, milliseconds, microseconds, nanoseconds, largestUnit [ , relativeTo ] ), https://tc39.es/proposal-temporal/#sec-temporal-balanceduration -ThrowCompletionOr balance_duration(VM& vm, double days, double hours, double minutes, double seconds, double milliseconds, double microseconds, Crypto::SignedBigInteger const& nanoseconds, DeprecatedString const& largest_unit, Object* relative_to) +ThrowCompletionOr balance_duration(VM& vm, double days, double hours, double minutes, double seconds, double milliseconds, double microseconds, Crypto::SignedBigInteger const& nanoseconds, StringView largest_unit, Object* relative_to) { // 1. If relativeTo is not present, set relativeTo to undefined. diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h index a647045b56..def098a11f 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h +++ b/Userland/Libraries/LibJS/Runtime/Temporal/Duration.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2021-2022, Linus Groh + * Copyright (c) 2021-2023, Linus Groh * * SPDX-License-Identifier: BSD-2-Clause */ @@ -132,7 +132,7 @@ ThrowCompletionOr create_temporal_duration(VM&, double years, double Duration* create_negated_temporal_duration(VM&, Duration const& duration); ThrowCompletionOr calculate_offset_shift(VM&, Value relative_to_value, double years, double months, double weeks, double days); Crypto::SignedBigInteger total_duration_nanoseconds(double days, double hours, double minutes, double seconds, double milliseconds, double microseconds, Crypto::SignedBigInteger const& nanoseconds, double offset_shift); -ThrowCompletionOr balance_duration(VM&, double days, double hours, double minutes, double seconds, double milliseconds, double microseconds, Crypto::SignedBigInteger const& nanoseconds, DeprecatedString const& largest_unit, Object* relative_to = nullptr); +ThrowCompletionOr balance_duration(VM&, double days, double hours, double minutes, double seconds, double milliseconds, double microseconds, Crypto::SignedBigInteger const& nanoseconds, StringView largest_unit, Object* relative_to = nullptr); ThrowCompletionOr unbalance_duration_relative(VM&, double years, double months, double weeks, double days, DeprecatedString const& largest_unit, Value relative_to); ThrowCompletionOr balance_duration_relative(VM&, double years, double months, double weeks, double days, DeprecatedString const& largest_unit, Value relative_to); ThrowCompletionOr add_duration(VM&, double years1, double months1, double weeks1, double days1, double hours1, double minutes1, double seconds1, double milliseconds1, double microseconds1, double nanoseconds1, double years2, double months2, double weeks2, double days2, double hours2, double minutes2, double seconds2, double milliseconds2, double microseconds2, double nanoseconds2, Value relative_to_value); diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp index 571ce27dfd..b2af52e179 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainDate.cpp @@ -510,7 +510,7 @@ ThrowCompletionOr difference_temporal_plain_date(VM& vm, DifferenceOp auto settings = TRY(get_difference_settings(vm, operation, options_value, UnitGroup::Date, {}, { "day"sv }, "day"sv)); // 5. Let untilOptions be ? MergeLargestUnitOption(settings.[[Options]], settings.[[LargestUnit]]). - auto* until_options = TRY(merge_largest_unit_option(vm, settings.options, TRY_OR_THROW_OOM(vm, String::from_deprecated_string(settings.largest_unit)))); + auto* until_options = TRY(merge_largest_unit_option(vm, settings.options, move(settings.largest_unit))); // 6. Let result be ? CalendarDateUntil(temporalDate.[[Calendar]], temporalDate, other, untilOptions). auto* duration = TRY(calendar_date_until(vm, temporal_date.calendar(), &temporal_date, other, *until_options)); diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp index e5961d6396..6a2c70146f 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/PlainYearMonth.cpp @@ -270,7 +270,7 @@ ThrowCompletionOr difference_temporal_plain_year_month(VM& vm, Differ auto* this_date = TRY(calendar_date_from_fields(vm, calendar, *this_fields)); // 13. Let untilOptions be ? MergeLargestUnitOption(settings.[[Options]], settings.[[LargestUnit]]). - auto* until_options = TRY(merge_largest_unit_option(vm, settings.options, TRY_OR_THROW_OOM(vm, String::from_deprecated_string(settings.largest_unit)))); + auto* until_options = TRY(merge_largest_unit_option(vm, settings.options, move(settings.largest_unit))); // 14. Let result be ? CalendarDateUntil(calendar, thisDate, otherDate, untilOptions). auto* duration = TRY(calendar_date_until(vm, calendar, this_date, other_date, *until_options)); diff --git a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp index 330029dcc7..9332efff61 100644 --- a/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp +++ b/Userland/Libraries/LibJS/Runtime/Temporal/ZonedDateTime.cpp @@ -604,7 +604,7 @@ ThrowCompletionOr difference_temporal_zoned_date_time(VM& vm, Differe } // 7. Let untilOptions be ? MergeLargestUnitOption(settings.[[Options]], settings.[[LargestUnit]]). - auto* until_options = TRY(merge_largest_unit_option(vm, settings.options, TRY_OR_THROW_OOM(vm, String::from_deprecated_string(settings.largest_unit)))); + auto* until_options = TRY(merge_largest_unit_option(vm, settings.options, settings.largest_unit)); // 8. Let difference be ? DifferenceZonedDateTime(zonedDateTime.[[Nanoseconds]], other.[[Nanoseconds]], zonedDateTime.[[TimeZone]], zonedDateTime.[[Calendar]], settings.[[LargestUnit]], untilOptions). auto difference = TRY(difference_zoned_date_time(vm, zoned_date_time.nanoseconds(), other->nanoseconds(), zoned_date_time.time_zone(), zoned_date_time.calendar(), settings.largest_unit, *until_options));