@@ -24,6 +24,7 @@ pub enum TypeKind {
24
24
Boolean ,
25
25
Integer ( IntegerBits , IntegerSign ) ,
26
26
CInteger ( CInteger , Option < IntegerSign > ) ,
27
+ SizeInteger ( IntegerSign ) ,
27
28
IntegerLiteral ( BigInt ) ,
28
29
FloatLiteral ( Option < NotNan < f64 > > ) ,
29
30
Floating ( FloatSize ) ,
@@ -55,6 +56,7 @@ impl TypeKind {
55
56
TypeKind :: Boolean
56
57
| TypeKind :: Integer ( _, _)
57
58
| TypeKind :: CInteger ( _, _)
59
+ | TypeKind :: SizeInteger ( _)
58
60
| TypeKind :: IntegerLiteral ( _)
59
61
| TypeKind :: FloatLiteral ( _)
60
62
| TypeKind :: Floating ( _) => false ,
@@ -87,6 +89,7 @@ impl TypeKind {
87
89
TypeKind :: CInteger ( integer, sign) => {
88
90
sign. or_else ( || target. map ( |target| target. default_c_integer_sign ( * integer) ) )
89
91
}
92
+ TypeKind :: SizeInteger ( sign) => Some ( * sign) ,
90
93
TypeKind :: TypeAlias ( _, _, _) => panic ! ( "sign of type alias" ) ,
91
94
TypeKind :: Unresolved => panic ! ( ) ,
92
95
TypeKind :: AnonymousEnum ( enumeration) => enumeration. backing_type . kind . sign ( target) ,
@@ -125,6 +128,7 @@ impl TypeKind {
125
128
TypeKind :: Boolean
126
129
| TypeKind :: Integer ( _, _)
127
130
| TypeKind :: CInteger ( _, _)
131
+ | TypeKind :: SizeInteger ( _)
128
132
| TypeKind :: IntegerLiteral ( _)
129
133
| TypeKind :: FloatLiteral ( _)
130
134
| TypeKind :: Floating ( _) => ( ) ,
@@ -165,6 +169,7 @@ impl TypeKind {
165
169
| TypeKind :: Boolean
166
170
| TypeKind :: Integer ( _, _)
167
171
| TypeKind :: CInteger ( _, _)
172
+ | TypeKind :: SizeInteger ( _)
168
173
| TypeKind :: IntegerLiteral ( _)
169
174
| TypeKind :: FloatLiteral ( _)
170
175
| TypeKind :: Floating ( _) => Ok ( Cow :: Borrowed ( self ) ) ,
@@ -307,28 +312,30 @@ impl Display for TypeKind {
307
312
write_parameters ( f, type_args) ?;
308
313
}
309
314
TypeKind :: Boolean => write ! ( f, "bool" ) ?,
310
- TypeKind :: Integer ( bits, sign) => {
311
- f. write_str ( match ( bits, sign) {
312
- ( IntegerBits :: Bits8 , IntegerSign :: Signed ) => "i8" ,
313
- ( IntegerBits :: Bits8 , IntegerSign :: Unsigned ) => "u8" ,
314
- ( IntegerBits :: Bits16 , IntegerSign :: Signed ) => "i16" ,
315
- ( IntegerBits :: Bits16 , IntegerSign :: Unsigned ) => "u16" ,
316
- ( IntegerBits :: Bits32 , IntegerSign :: Signed ) => "i32" ,
317
- ( IntegerBits :: Bits32 , IntegerSign :: Unsigned ) => "u32" ,
318
- ( IntegerBits :: Bits64 , IntegerSign :: Signed ) => "i64" ,
319
- ( IntegerBits :: Bits64 , IntegerSign :: Unsigned ) => "u64" ,
320
- } ) ?;
321
- }
315
+ TypeKind :: Integer ( bits, sign) => f. write_str ( match ( bits, sign) {
316
+ ( IntegerBits :: Bits8 , IntegerSign :: Signed ) => "i8" ,
317
+ ( IntegerBits :: Bits8 , IntegerSign :: Unsigned ) => "u8" ,
318
+ ( IntegerBits :: Bits16 , IntegerSign :: Signed ) => "i16" ,
319
+ ( IntegerBits :: Bits16 , IntegerSign :: Unsigned ) => "u16" ,
320
+ ( IntegerBits :: Bits32 , IntegerSign :: Signed ) => "i32" ,
321
+ ( IntegerBits :: Bits32 , IntegerSign :: Unsigned ) => "u32" ,
322
+ ( IntegerBits :: Bits64 , IntegerSign :: Signed ) => "i64" ,
323
+ ( IntegerBits :: Bits64 , IntegerSign :: Unsigned ) => "u64" ,
324
+ } ) ?,
322
325
TypeKind :: CInteger ( integer, sign) => {
323
326
fmt_c_integer ( f, * integer, * sign) ?;
324
327
}
328
+ TypeKind :: SizeInteger ( sign) => f. write_str ( match sign {
329
+ IntegerSign :: Signed => "isize" ,
330
+ IntegerSign :: Unsigned => "usize" ,
331
+ } ) ?,
325
332
TypeKind :: IntegerLiteral ( value) => {
326
333
write ! ( f, "integer {}" , value) ?;
327
334
}
328
- TypeKind :: Floating ( size) => match size {
329
- FloatSize :: Bits32 => f . write_str ( "f32" ) ? ,
330
- FloatSize :: Bits64 => f . write_str ( "f64" ) ? ,
331
- } ,
335
+ TypeKind :: Floating ( size) => f . write_str ( match size {
336
+ FloatSize :: Bits32 => "f32" ,
337
+ FloatSize :: Bits64 => "f64" ,
338
+ } ) ? ,
332
339
TypeKind :: FloatLiteral ( value) => {
333
340
if let Some ( value) = value {
334
341
write ! ( f, "float {}" , value) ?
0 commit comments