//@ run-pass | |
// Test that the precedence of ranges is correct | |
struct Foo { | |
foo: usize, | |
} | |
impl Foo { | |
fn bar(&self) -> usize { 5 } | |
} | |
fn main() { | |
let x = 1+3..4+5; | |
assert_eq!(x, (4..9)); | |
let x = 1..4+5; | |
assert_eq!(x, (1..9)); | |
let x = 1+3..4; | |
assert_eq!(x, (4..4)); | |
let a = Foo { foo: 3 }; | |
let x = a.foo..a.bar(); | |
assert_eq!(x, (3..5)); | |
let x = 1+3..; | |
assert_eq!(x, (4..)); | |
let x = ..1+3; | |
assert_eq!(x, (..4)); | |
let a = &[0, 1, 2, 3, 4, 5, 6]; | |
let x = &a[1+1..2+2]; | |
assert_eq!(x, &a[2..4]); | |
let x = &a[..1+2]; | |
assert_eq!(x, &a[..3]); | |
let x = &a[1+2..]; | |
assert_eq!(x, &a[3..]); | |
for _i in 2+4..10-3 {} | |
let i = 42; | |
for _ in 1..i {} | |
for _ in 1.. { break; } | |
let x = [1]..[2]; | |
assert_eq!(x, (([1])..([2]))); | |
let y = ..; | |
assert_eq!(y, (..)); | |
} |