7
7
#![ feature( const_saturating_int_methods) ]
8
8
#![ feature( const_wrapping_int_methods) ]
9
9
10
- use std:: i8 ;
10
+ use std:: { i8 , i128 } ;
11
11
12
12
macro_rules! suite {
13
13
( $(
@@ -65,6 +65,10 @@ suite!(
65
65
C26 : 5i8 . checked_rem_euclid( 0 ) , None ;
66
66
C27 : i8 :: MIN . checked_rem_euclid( -1 ) , None ;
67
67
}
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
+ }
68
72
69
73
saturating_and_wrapping -> i8 {
70
74
// `const_saturating_int_methods`
@@ -104,6 +108,13 @@ suite!(
104
108
C47 : 100i8 . wrapping_rem_euclid( 10 ) , 0 ;
105
109
C48 : ( -128i8 ) . wrapping_rem_euclid( -1 ) , 0 ;
106
110
}
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
+ }
107
118
108
119
overflowing -> ( i8 , bool ) {
109
120
// `const_overflowing_int_methods`
@@ -119,12 +130,18 @@ suite!(
119
130
120
131
C55 : 5i8 . overflowing_rem_euclid( 2 ) , ( 1 , false ) ;
121
132
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 ) ;
123
137
}
124
138
) ;
125
139
126
140
fn main ( ) {
127
141
checked ( ) ;
142
+ checked_i128 ( ) ;
128
143
saturating_and_wrapping ( ) ;
144
+ saturating_and_wrapping_i128 ( ) ;
129
145
overflowing ( ) ;
146
+ overflowing_i128 ( ) ;
130
147
}
0 commit comments