From 68d7c12bd3d4e449dae8e4bf15609ec7e1bba066 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Tue, 14 Oct 2025 16:54:23 -0700 Subject: [PATCH 1/2] Fix shift left with overflow panic for Hijri --- components/calendar/tests/reference_year.rs | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/components/calendar/tests/reference_year.rs b/components/calendar/tests/reference_year.rs index a9566fe3721..0fdef9a93cb 100644 --- a/components/calendar/tests/reference_year.rs +++ b/components/calendar/tests/reference_year.rs @@ -320,3 +320,18 @@ fn test_reference_year_persian() { fn test_reference_year_roc() { test_reference_year_impl(Roc, gregorian_md_condition) } + +/// +#[test] +fn test_constrained_month_regression_7032() { + let mut fields = DateFields::default(); + fields.era = Some("ah"); + fields.era_year = Some(1600); + fields.day = Some(12.try_into().unwrap()); + fields.ordinal_month = Some(30.try_into().unwrap()); + let mut options = DateFromFieldsOptions::default(); + options.overflow = Some(Overflow::Constrain); + options.missing_fields_strategy = Some(MissingFieldsStrategy::Ecma); + let uaq = Hijri::new_umm_al_qura(); + let _ = uaq.from_fields(fields, options).unwrap(); +} From 428f40fb112d573b2a7d217cfdfe3355ca99ed9d Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Wed, 15 Oct 2025 08:32:20 -0700 Subject: [PATCH 2/2] Move test to calendar_arithmetic since the regression was in that code --- components/calendar/src/calendar_arithmetic.rs | 18 ++++++++++++++++++ components/calendar/tests/reference_year.rs | 15 --------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/components/calendar/src/calendar_arithmetic.rs b/components/calendar/src/calendar_arithmetic.rs index 84ced09ac8b..49bd6e9d284 100644 --- a/components/calendar/src/calendar_arithmetic.rs +++ b/components/calendar/src/calendar_arithmetic.rs @@ -830,4 +830,22 @@ mod tests { Date::try_new_iso(2024, 1, 0).unwrap_err(); Date::try_new_iso(2024, 0, 0).unwrap_err(); } + + /// + #[test] + fn test_constrained_month_regression_7032() { + let fields = DateFields { + era: Some("ah"), + era_year: Some(1600), + day: Some(12.try_into().unwrap()), + ordinal_month: Some(30.try_into().unwrap()), + ..Default::default() + }; + let options = DateFromFieldsOptions { + overflow: Some(Overflow::Constrain), + missing_fields_strategy: Some(MissingFieldsStrategy::Ecma), + }; + let uaq = crate::cal::Hijri::new_umm_al_qura(); + let _ = uaq.from_fields(fields, options).unwrap(); + } } diff --git a/components/calendar/tests/reference_year.rs b/components/calendar/tests/reference_year.rs index 0fdef9a93cb..a9566fe3721 100644 --- a/components/calendar/tests/reference_year.rs +++ b/components/calendar/tests/reference_year.rs @@ -320,18 +320,3 @@ fn test_reference_year_persian() { fn test_reference_year_roc() { test_reference_year_impl(Roc, gregorian_md_condition) } - -/// -#[test] -fn test_constrained_month_regression_7032() { - let mut fields = DateFields::default(); - fields.era = Some("ah"); - fields.era_year = Some(1600); - fields.day = Some(12.try_into().unwrap()); - fields.ordinal_month = Some(30.try_into().unwrap()); - let mut options = DateFromFieldsOptions::default(); - options.overflow = Some(Overflow::Constrain); - options.missing_fields_strategy = Some(MissingFieldsStrategy::Ecma); - let uaq = Hijri::new_umm_al_qura(); - let _ = uaq.from_fields(fields, options).unwrap(); -}