diff --git a/src/test/ui/inference/infer-binary-operand-behind-reference.rs b/src/test/ui/inference/infer-binary-operand-behind-reference.rs index 4e41077ba34b..0c0a3171ee9a 100644 --- a/src/test/ui/inference/infer-binary-operand-behind-reference.rs +++ b/src/test/ui/inference/infer-binary-operand-behind-reference.rs @@ -1,6 +1,8 @@ // 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; @@ -10,4 +12,19 @@ fn main() { 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; }