@@ -83,22 +83,19 @@ impl super::LunarChineseYearData {
8383 base_moment : LocalMoment ,
8484 duration : Milliseconds ,
8585 ) -> LocalMoment {
86- let diff_millis = ( rata_die - base_moment. rata_die ) as i128
87- * MILLISECONDS_IN_EPHEMERIS_DAY as i128
88- - base_moment. local_milliseconds as i128 ;
86+ let diff_millis = ( rata_die - base_moment. rata_die ) * MILLISECONDS_IN_EPHEMERIS_DAY
87+ - base_moment. local_milliseconds as i64 ;
8988
90- let num_periods = ( diff_millis + MILLISECONDS_IN_EPHEMERIS_DAY as i128 - 1 )
91- . div_euclid ( duration. 0 as i128 ) ;
89+ let num_periods =
90+ ( diff_millis + MILLISECONDS_IN_EPHEMERIS_DAY - 1 ) . div_euclid ( duration. 0 ) ;
9291
93- let millis = base_moment. rata_die . to_i64_date ( ) as i128
94- * MILLISECONDS_IN_EPHEMERIS_DAY as i128
95- + base_moment. local_milliseconds as i128
96- + num_periods * duration. 0 as i128 ;
92+ let millis = base_moment. rata_die . to_i64_date ( ) * MILLISECONDS_IN_EPHEMERIS_DAY
93+ + base_moment. local_milliseconds as i64
94+ + num_periods * duration. 0 ;
9795
98- let rata_die =
99- ( millis / MILLISECONDS_IN_EPHEMERIS_DAY as i128 ) as i64 - ( millis < 0 ) as i64 ;
100- let local_milliseconds = ( millis % MILLISECONDS_IN_EPHEMERIS_DAY as i128 ) as i64
101- + ( millis < 0 ) as i64 * MILLISECONDS_IN_EPHEMERIS_DAY as i64 ;
96+ let rata_die = millis / MILLISECONDS_IN_EPHEMERIS_DAY - ( millis < 0 ) as i64 ;
97+ let local_milliseconds = millis % MILLISECONDS_IN_EPHEMERIS_DAY
98+ + ( millis < 0 ) as i64 * MILLISECONDS_IN_EPHEMERIS_DAY ;
10299
103100 LocalMoment {
104101 rata_die : RataDie :: new ( rata_die) ,
@@ -168,3 +165,18 @@ impl super::LunarChineseYearData {
168165 LunarChineseYearData :: new ( related_iso, start_day, month_lengths, leap_month)
169166 }
170167}
168+
169+ #[ test]
170+ fn bounds ( ) {
171+ LunarChineseYearData :: simple ( UTC_PLUS_9 , 292_277_025 ) ;
172+ assert ! (
173+ std:: panic:: catch_unwind( || LunarChineseYearData :: simple( UTC_PLUS_9 , 292_277_026 ) ) . is_err( )
174+ ) ;
175+
176+ LunarChineseYearData :: simple ( BEIJING_UTC_OFFSET , -292_275_024 ) ;
177+ assert ! ( std:: panic:: catch_unwind( || LunarChineseYearData :: simple(
178+ BEIJING_UTC_OFFSET ,
179+ -292_275_025
180+ ) )
181+ . is_err( ) ) ;
182+ }
0 commit comments