2020-01-11 08:30:02 -06:00
|
|
|
//@ check-pass
|
|
|
|
|
|
|
|
fn main() {
|
2020-02-08 19:51:13 -06:00
|
|
|
// Test that we can infer the type of binary operands when
|
|
|
|
// references are involved, on various types and operators.
|
2020-01-11 08:30:02 -06:00
|
|
|
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;
|
2020-02-08 19:51:13 -06:00
|
|
|
|
|
|
|
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;
|
2020-01-11 08:30:02 -06:00
|
|
|
}
|