Skip to content

Commit edd1e00

Browse files
Replace Date::try_new_from_codes where possible (#7572)
1 parent aa882da commit edd1e00

File tree

6 files changed

+39
-53
lines changed

6 files changed

+39
-53
lines changed

components/calendar/benches/date.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,15 +152,15 @@ fn date_benches(c: &mut Criterion) {
152152
"calendar/chinese_cached",
153153
&fxs,
154154
icu::calendar::cal::ChineseTraditional::new(),
155-
|y, m, d, c| Date::try_new_from_codes(None, y, types::Month::new(m).code(), d, c).unwrap(),
155+
|y, m, d, _| Date::try_new_chinese_traditional(y, types::Month::new(m), d).unwrap(),
156156
);
157157

158158
bench_calendar(
159159
&mut group,
160160
"calendar/dangi_cached",
161161
&fxs,
162162
icu::calendar::cal::KoreanTraditional::new(),
163-
|y, m, d, c| Date::try_new_from_codes(None, y, types::Month::new(m).code(), d, c).unwrap(),
163+
|y, m, d, _| Date::try_new_korean_traditional(y, types::Month::new(m), d).unwrap(),
164164
);
165165

166166
bench_calendar(

components/calendar/src/cal/east_asian_traditional.rs

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,7 @@ impl Date<ChineseTraditional> {
858858
impl<A: AsCalendar<Calendar = ChineseTraditional>> Date<A> {
859859
/// This method uses an ordinal month, which is probably not what you want.
860860
///
861-
/// Use [`Date::try_new_from_codes`]
861+
/// Use [`Date::try_new_chinese_traditional`]
862862
#[deprecated(since = "2.1.0", note = "use `Date::try_new_chinese_traditional`")]
863863
pub fn try_new_chinese_with_calendar(
864864
related_iso_year: i32,
@@ -1343,14 +1343,7 @@ mod test {
13431343
];
13441344

13451345
for case in cases {
1346-
let date = Date::try_new_from_codes(
1347-
None,
1348-
case.year,
1349-
case.month.code(),
1350-
case.day,
1351-
ChineseTraditional::new(),
1352-
)
1353-
.unwrap();
1346+
let date = Date::try_new_chinese_traditional(case.year, case.month, case.day).unwrap();
13541347
#[allow(deprecated)] // should still test
13551348
{
13561349
assert_eq!(
@@ -1838,14 +1831,8 @@ mod test {
18381831
day_or_lunar_month.parse().unwrap()
18391832
};
18401833

1841-
let chinese = Date::try_new_from_codes(
1842-
None,
1843-
related_iso,
1844-
lunar_month.code(),
1845-
lunar_day,
1846-
ChineseTraditional::new(),
1847-
)
1848-
.unwrap();
1834+
let chinese =
1835+
Date::try_new_korean_traditional(related_iso, lunar_month, lunar_day).unwrap();
18491836

18501837
assert_eq!(
18511838
gregorian,
@@ -1859,13 +1846,13 @@ mod test {
18591846
#[test]
18601847
#[ignore] // network
18611848
fn test_against_kasi_data() {
1862-
use crate::{cal::Gregorian, types::MonthCode, Date};
1849+
use crate::{cal::Gregorian, Date};
18631850

18641851
// TODO: query KASI directly
18651852
let uri = "https://gist.githubusercontent.com/Manishearth/d8c94a7df22a9eacefc4472a5805322e/raw/e1ea3b0aa52428686bb3a9cd0f262878515e16c1/resolved.json";
18661853

18671854
#[derive(serde::Deserialize)]
1868-
struct Golden(BTreeMap<i32, BTreeMap<MonthCode, MonthData>>);
1855+
struct Golden(BTreeMap<i32, BTreeMap<String, MonthData>>);
18691856

18701857
#[derive(serde::Deserialize)]
18711858
struct MonthData {
@@ -1881,11 +1868,11 @@ mod test {
18811868

18821869
let golden = serde_json::from_str::<Golden>(&json).unwrap();
18831870

1884-
for (&year, months) in &golden.0 {
1871+
for (year, months) in golden.0 {
18851872
if year == 1899 || year == 2050 {
18861873
continue;
18871874
}
1888-
for (&month, month_data) in months {
1875+
for (month_code, month_data) in months {
18891876
let mut gregorian = month_data.start_date.split('-');
18901877
let gregorian = Date::try_new_gregorian(
18911878
gregorian.next().unwrap().parse().unwrap(),
@@ -1895,9 +1882,13 @@ mod test {
18951882
.unwrap();
18961883

18971884
assert_eq!(
1898-
Date::try_new_from_codes(None, year, month, 1, KoreanTraditional::new())
1899-
.unwrap()
1900-
.to_calendar(Gregorian),
1885+
Date::try_new_korean_traditional(
1886+
year,
1887+
Month::try_from_str(&month_code).unwrap(),
1888+
1
1889+
)
1890+
.unwrap()
1891+
.to_calendar(Gregorian),
19011892
gregorian
19021893
);
19031894
}

components/calendar/src/cal/hebrew.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -549,10 +549,7 @@ mod tests {
549549
#[test]
550550
fn test_weekdays() {
551551
// https://github.com/unicode-org/icu4x/issues/4893
552-
let cal = Hebrew::new();
553-
let era = "am";
554-
let month = Month::new(1);
555-
let dt = Date::try_new_from_codes(Some(era), 3760, month.code(), 1, cal).unwrap();
552+
let dt = Date::try_new_hebrew_v2(3760, Month::new(1), 1).unwrap();
556553

557554
// Should be Saturday per:
558555
// https://www.hebcal.com/converter?hd=1&hm=Tishrei&hy=3760&h2g=1

components/calendar/src/date.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,9 +99,9 @@ impl<C> Deref for Ref<'_, C> {
9999
/// This can work with wrappers around [`Calendar`] types,
100100
/// e.g. `Rc<C>`, via the [`AsCalendar`] trait.
101101
///
102-
/// This can be constructed constructed
103-
/// from its fields via [`Self::try_new_from_codes()`], or can be constructed with one of the
104-
/// `new_<calendar>_date()` per-calendar methods (and then freely converted between calendars).
102+
/// This can be constructed from its fields via [`Self::try_new_from_codes()`], or can be
103+
/// constructed with one of the `new_<calendar>_date()` per-calendar methods (and then
104+
/// freely converted between calendars).
105105
///
106106
/// ```rust
107107
/// use icu::calendar::Date;

components/calendar/src/tests/continuity_test.rs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,17 @@ fn test_buddhist_continuity() {
6565

6666
#[test]
6767
fn test_chinese_continuity() {
68-
let cal = cal::ChineseTraditional::new();
69-
let date = Date::try_new_from_codes(None, -10, Month::new(1).code(), 1, cal);
68+
let date = Date::try_new_chinese_traditional(-10, Month::new(1), 1);
7069
check_continuity(date.unwrap(), 20);
71-
let date = Date::try_new_from_codes(None, -300, Month::new(1).code(), 1, cal);
70+
let date = Date::try_new_chinese_traditional(-300, Month::new(1), 1);
7271
check_every_250_days(date.unwrap(), 2000);
73-
let date = Date::try_new_from_codes(None, -10000, Month::new(1).code(), 1, cal);
72+
let date = Date::try_new_chinese_traditional(-10000, Month::new(1), 1);
7473
check_every_250_days(date.unwrap(), 2000);
7574

76-
let date = Date::try_new_from_codes(None, 1899, Month::new(1).code(), 1, cal);
75+
let date = Date::try_new_chinese_traditional(1899, Month::new(1), 1);
7776
check_continuity(date.unwrap(), 20);
7877

79-
let date = Date::try_new_from_codes(None, 2099, Month::new(1).code(), 1, cal);
78+
let date = Date::try_new_chinese_traditional(2099, Month::new(1), 1);
8079
check_continuity(date.unwrap(), 20);
8180
}
8281

@@ -90,16 +89,15 @@ fn test_coptic_continuity() {
9089

9190
#[test]
9291
fn test_korean_continuity() {
93-
let cal = cal::KoreanTraditional::new();
94-
let date = Date::try_new_from_codes(None, -10, Month::new(1).code(), 1, cal);
92+
let date = Date::try_new_korean_traditional(-10, Month::new(1), 1);
9593
check_continuity(date.unwrap(), 20);
96-
let date = Date::try_new_from_codes(None, -300, Month::new(1).code(), 1, cal);
94+
let date = Date::try_new_korean_traditional(-300, Month::new(1), 1);
9795
check_every_250_days(date.unwrap(), 2000);
9896

99-
let date = Date::try_new_from_codes(None, 1900, Month::new(1).code(), 1, cal);
97+
let date = Date::try_new_korean_traditional(1900, Month::new(1), 1);
10098
check_continuity(date.unwrap(), 20);
10199

102-
let date = Date::try_new_from_codes(None, 2100, Month::new(1).code(), 1, cal);
100+
let date = Date::try_new_korean_traditional(2100, Month::new(1), 1);
103101
check_continuity(date.unwrap(), 20);
104102
}
105103

@@ -131,9 +129,9 @@ fn test_gregorian_continuity() {
131129

132130
#[test]
133131
fn test_hebrew_continuity() {
134-
let date = Date::try_new_from_codes(None, -10, Month::new(1).code(), 1, cal::Hebrew);
132+
let date = Date::try_new_hebrew_v2(-10, Month::new(1), 1);
135133
check_continuity(date.unwrap(), 20);
136-
let date = Date::try_new_from_codes(None, -300, Month::new(1).code(), 1, cal::Hebrew);
134+
let date = Date::try_new_hebrew_v2(-300, Month::new(1), 1);
137135
check_every_250_days(date.unwrap(), 2000);
138136
}
139137

components/calendar/tests/arithmetic.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,13 @@ fn test_arithmetic_cases() {
144144

145145
#[test]
146146
fn test_hebrew() {
147-
let m06z_20 = Date::try_new_from_codes(None, 5783, Month::new(6).code(), 20, Hebrew).unwrap();
148-
let m05l_15 = Date::try_new_from_codes(None, 5784, Month::leap(5).code(), 15, Hebrew).unwrap();
149-
let m05l_30 = Date::try_new_from_codes(None, 5784, Month::leap(5).code(), 30, Hebrew).unwrap();
150-
let m06a_29 = Date::try_new_from_codes(None, 5784, Month::new(6).code(), 29, Hebrew).unwrap();
151-
let m07a_10 = Date::try_new_from_codes(None, 5784, Month::new(7).code(), 10, Hebrew).unwrap();
152-
let m06b_15 = Date::try_new_from_codes(None, 5785, Month::new(6).code(), 15, Hebrew).unwrap();
153-
let m07b_20 = Date::try_new_from_codes(None, 5785, Month::new(7).code(), 20, Hebrew).unwrap();
147+
let m06z_20 = Date::try_new_hebrew_v2(5783, Month::new(6), 20).unwrap();
148+
let m05l_15 = Date::try_new_hebrew_v2(5784, Month::leap(5), 15).unwrap();
149+
let m05l_30 = Date::try_new_hebrew_v2(5784, Month::leap(5), 30).unwrap();
150+
let m06a_29 = Date::try_new_hebrew_v2(5784, Month::new(6), 29).unwrap();
151+
let m07a_10 = Date::try_new_hebrew_v2(5784, Month::new(7), 10).unwrap();
152+
let m06b_15 = Date::try_new_hebrew_v2(5785, Month::new(6), 15).unwrap();
153+
let m07b_20 = Date::try_new_hebrew_v2(5785, Month::new(7), 20).unwrap();
154154

155155
#[rustfmt::skip]
156156
#[allow(clippy::type_complexity)]

0 commit comments

Comments
 (0)