| //@ 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; | |
| } |