77#![ feature( const_saturating_int_methods) ]
88#![ feature( const_wrapping_int_methods) ]
99
10- use std:: i8 ;
10+ use std:: { i8 , i128 } ;
1111
1212macro_rules! suite {
1313 ( $(
@@ -65,6 +65,10 @@ suite!(
6565 C26 : 5i8 . checked_rem_euclid( 0 ) , None ;
6666 C27 : i8 :: MIN . checked_rem_euclid( -1 ) , None ;
6767 }
68+ checked_i128 -> Option <i128 > {
69+ CHK_ADD_I128 : i128 :: MAX . checked_add( 1 ) , None ;
70+ CHK_MUL_I128 : i128 :: MIN . checked_mul( -1 ) , None ;
71+ }
6872
6973 saturating_and_wrapping -> i8 {
7074 // `const_saturating_int_methods`
@@ -104,6 +108,13 @@ suite!(
104108 C47 : 100i8 . wrapping_rem_euclid( 10 ) , 0 ;
105109 C48 : ( -128i8 ) . wrapping_rem_euclid( -1 ) , 0 ;
106110 }
111+ saturating_and_wrapping_i128 -> i128 {
112+ SAT_ADD_I128 : i128 :: MAX . saturating_add( 1 ) , i128 :: MAX ;
113+ SAT_MUL_I128 : i128 :: MAX . saturating_mul( 2 ) , i128 :: MAX ;
114+
115+ WRP_ADD_I128 : i128 :: MAX . wrapping_add( 1 ) , i128 :: MIN ;
116+ WRP_MUL_I128 : i128 :: MAX . wrapping_mul( 3 ) , i128 :: MAX -2 ;
117+ }
107118
108119 overflowing -> ( i8 , bool ) {
109120 // `const_overflowing_int_methods`
@@ -119,12 +130,18 @@ suite!(
119130
120131 C55 : 5i8 . overflowing_rem_euclid( 2 ) , ( 1 , false ) ;
121132 C56 : i8 :: MIN . overflowing_rem_euclid( -1 ) , ( 0 , true ) ;
122-
133+ }
134+ overflowing_i128 -> ( i128 , bool ) {
135+ OFL_ADD_I128 : i128 :: MAX . overflowing_add( 1 ) , ( i128 :: MIN , true ) ;
136+ OFL_MUL_I128 : i128 :: MAX . overflowing_mul( 3 ) , ( i128 :: MAX -2 , true ) ;
123137 }
124138) ;
125139
126140fn main ( ) {
127141 checked ( ) ;
142+ checked_i128 ( ) ;
128143 saturating_and_wrapping ( ) ;
144+ saturating_and_wrapping_i128 ( ) ;
129145 overflowing ( ) ;
146+ overflowing_i128 ( ) ;
130147}
0 commit comments