Skip to content

Commit cba21e4

Browse files
authored
Fix issues with from_partial method implementations (#200)
See boa-dev/boa#4167 for reference on fixes
1 parent 28f24a9 commit cba21e4

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

src/builtins/core/date.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ impl PlainDate {
358358
partial.year.is_some() || (partial.era.is_some() && partial.era_year.is_some());
359359
let month_check = partial.month.is_some() || partial.month_code.is_some();
360360
if !year_check || !month_check || partial.day.is_none() {
361-
return Err(TemporalError::range().with_message("Invalid PlainDate fields provided."));
361+
return Err(TemporalError::r#type().with_message("Invalid PlainDate fields provided."));
362362
}
363363

364364
let overflow = overflow.unwrap_or_default();

src/builtins/core/datetime.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -318,9 +318,12 @@ impl PlainDateTime {
318318
partial: PartialDateTime,
319319
overflow: Option<ArithmeticOverflow>,
320320
) -> TemporalResult<Self> {
321+
if partial.date.is_empty() && partial.time.is_empty() {
322+
return Err(TemporalError::r#type().with_message("PartialDateTime cannot be empty."));
323+
}
321324
let date = PlainDate::from_partial(partial.date, overflow)?;
322-
let time = PlainTime::from_partial(partial.time, overflow)?;
323-
Self::from_date_and_time(date, time)
325+
let iso_time = IsoTime::default().with(partial.time, overflow.unwrap_or_default())?;
326+
Self::from_date_and_time(date, PlainTime::new_unchecked(iso_time))
324327
}
325328

326329
/// Creates a new `DateTime` with the fields of a `PartialDateTime`.

0 commit comments

Comments
 (0)