| //@ check-pass |
| |
| fn main() { |
| // Test that we can infer the type of binary operands when |
| // references are involved, on various types and operators. |
| let _: u8 = 0 + 0; |
| let _: u8 = 0 + &0; |
| let _: u8 = &0 + 0; |
| let _: u8 = &0 + &0; |
| |
| let _: f32 = 0.0 + 0.0; |
| let _: f32 = 0.0 + &0.0; |
| let _: f32 = &0.0 + 0.0; |
| let _: f32 = &0.0 + &0.0; |
| |
| let _: u8 = 0 << 0; |
| let _: u8 = 0 << &0; |
| let _: u8 = &0 << 0; |
| let _: u8 = &0 << &0; |
| |
| // Test type inference when variable types are indirectly inferred. |
| let a = 22; |
| let _: usize = a + &44; |
| |
| // When we have no expected type, the types of the operands is the default type. |
| let _ = 0 + 0; |
| let _ = 0 + &0; |
| let _ = &0 + 0; |
| let _ = &0 + &0; |
| } |