Skip to content

Commit 0ea61f1

Browse files
authored
Remove UnitGroup addition (#171)
This removes `UnitGroup` which doesn't actually need to asserted when determining the difference setting.
1 parent cb10eec commit 0ea61f1

File tree

6 files changed

+8
-35
lines changed

6 files changed

+8
-35
lines changed

src/components/date.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::{
55
iso::{IsoDate, IsoDateTime, IsoTime},
66
options::{
77
ArithmeticOverflow, DifferenceOperation, DifferenceSettings, DisplayCalendar,
8-
ResolvedRoundingOptions, TemporalUnit, UnitGroup,
8+
ResolvedRoundingOptions, TemporalUnit,
99
},
1010
parsers::{parse_date_time, IxdtfStringBuilder},
1111
primitive::FiniteF64,
@@ -263,7 +263,6 @@ impl PlainDate {
263263
let resolved = ResolvedRoundingOptions::from_diff_settings(
264264
settings,
265265
op,
266-
UnitGroup::Date,
267266
TemporalUnit::Day,
268267
TemporalUnit::Day,
269268
)?;

src/components/datetime.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::{
55
iso::{IsoDate, IsoDateTime, IsoTime},
66
options::{
77
ArithmeticOverflow, DifferenceOperation, DifferenceSettings, DisplayCalendar,
8-
ResolvedRoundingOptions, RoundingOptions, TemporalUnit, ToStringRoundingOptions, UnitGroup,
8+
ResolvedRoundingOptions, RoundingOptions, TemporalUnit, ToStringRoundingOptions,
99
},
1010
parsers::{parse_date_time, IxdtfStringBuilder},
1111
temporal_assert, TemporalError, TemporalResult, TemporalUnwrap, TimeZone,
@@ -134,7 +134,6 @@ impl PlainDateTime {
134134
let options = ResolvedRoundingOptions::from_diff_settings(
135135
settings,
136136
op,
137-
UnitGroup::DateTime,
138137
TemporalUnit::Day,
139138
TemporalUnit::Nanosecond,
140139
)?;

src/components/instant.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use crate::{
1010
iso::{IsoDate, IsoDateTime, IsoTime},
1111
options::{
1212
ArithmeticOverflow, DifferenceOperation, DifferenceSettings, DisplayOffset,
13-
ResolvedRoundingOptions, RoundingOptions, TemporalUnit, ToStringRoundingOptions, UnitGroup,
13+
ResolvedRoundingOptions, RoundingOptions, TemporalUnit, ToStringRoundingOptions,
1414
},
1515
parsers::{parse_instant, IxdtfStringBuilder},
1616
primitive::FiniteF64,
@@ -123,7 +123,6 @@ impl Instant {
123123
let resolved_options = ResolvedRoundingOptions::from_diff_settings(
124124
options,
125125
op,
126-
UnitGroup::Time,
127126
TemporalUnit::Second,
128127
TemporalUnit::Nanosecond,
129128
)?;

src/components/time.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use crate::{
55
iso::IsoTime,
66
options::{
77
ArithmeticOverflow, DifferenceOperation, DifferenceSettings, ResolvedRoundingOptions,
8-
RoundingIncrement, TemporalRoundingMode, TemporalUnit, ToStringRoundingOptions, UnitGroup,
8+
RoundingIncrement, TemporalRoundingMode, TemporalUnit, ToStringRoundingOptions,
99
},
1010
parsers::{parse_time, IxdtfStringBuilder},
1111
primitive::FiniteF64,
@@ -127,7 +127,6 @@ impl PlainTime {
127127
let resolved = ResolvedRoundingOptions::from_diff_settings(
128128
settings,
129129
op,
130-
UnitGroup::Time,
131130
TemporalUnit::Hour,
132131
TemporalUnit::Nanosecond,
133132
)?;

src/components/zoneddatetime.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use crate::{
1616
ArithmeticOverflow, DifferenceOperation, DifferenceSettings, Disambiguation,
1717
DisplayCalendar, DisplayOffset, DisplayTimeZone, OffsetDisambiguation,
1818
ResolvedRoundingOptions, RoundingIncrement, TemporalRoundingMode, TemporalUnit,
19-
ToStringRoundingOptions, UnitGroup,
19+
ToStringRoundingOptions,
2020
},
2121
parsers::{self, IxdtfStringBuilder},
2222
partial::{PartialDate, PartialTime},
@@ -271,7 +271,6 @@ impl ZonedDateTime {
271271
let resolved_options = ResolvedRoundingOptions::from_diff_settings(
272272
options,
273273
op,
274-
UnitGroup::DateTime,
275274
TemporalUnit::Hour,
276275
TemporalUnit::Nanosecond,
277276
)?;

src/options.rs

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -177,15 +177,10 @@ impl ResolvedRoundingOptions {
177177
pub(crate) fn from_diff_settings(
178178
options: DifferenceSettings,
179179
operation: DifferenceOperation,
180-
unit_group: UnitGroup,
181180
fallback_largest: TemporalUnit,
182181
fallback_smallest: TemporalUnit,
183182
) -> TemporalResult<Self> {
184183
// 4. Let resolvedOptions be ? SnapshotOwnProperties(? GetOptionsObject(options), null).
185-
let largest_unit = options
186-
.largest_unit
187-
.map(|unit| unit.assert_unit_group(unit_group))
188-
.transpose()?;
189184
// 5. Let settings be ? GetDifferenceSettings(operation, resolvedOptions, DATE, « », "day", "day").
190185
let increment = options.increment.unwrap_or_default();
191186
let rounding_mode = match operation {
@@ -199,7 +194,9 @@ impl ResolvedRoundingOptions {
199194
};
200195
let smallest_unit = options.smallest_unit.unwrap_or(fallback_smallest);
201196
// Use the defaultlargestunit which is max smallestlargestdefault and smallestunit
202-
let largest_unit = largest_unit.unwrap_or(smallest_unit.max(fallback_largest));
197+
let largest_unit = options
198+
.largest_unit
199+
.unwrap_or(smallest_unit.max(fallback_largest));
203200

204201
// 11. If LargerOfTwoTemporalUnits(largestUnit, smallestUnit) is not largestUnit, throw a RangeError exception.
205202
// 12. Let maximum be MaximumTemporalDurationRoundingIncrement(smallestUnit).
@@ -344,12 +341,6 @@ impl ResolvedRoundingOptions {
344341

345342
// ==== Options enums and methods ====
346343

347-
pub enum UnitGroup {
348-
Date,
349-
Time,
350-
DateTime,
351-
}
352-
353344
/// The relevant unit that should be used for the operation that
354345
/// this option is provided as a value.
355346
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
@@ -442,19 +433,6 @@ impl TemporalUnit {
442433
Hour | Minute | Second | Millisecond | Microsecond | Nanosecond
443434
)
444435
}
445-
446-
#[inline]
447-
pub fn assert_unit_group(self, group: UnitGroup) -> TemporalResult<Self> {
448-
match group {
449-
UnitGroup::Date if !self.is_calendar_unit() || self != TemporalUnit::Day => {
450-
Err(TemporalError::range().with_message("Unit must be a date unit."))
451-
}
452-
UnitGroup::Time if !self.is_time_unit() => {
453-
Err(TemporalError::range().with_message("Unit must be a time unit."))
454-
}
455-
_ => Ok(self),
456-
}
457-
}
458436
}
459437

460438
impl From<usize> for TemporalUnit {

0 commit comments

Comments
 (0)