//@ run-pass
#![allow(non_camel_case_types)]

// Test that we pick which version of `foo` to run based on the
// type that is (ultimately) inferred for `x`.


trait foo {
    fn foo(&self) -> i32;
}

impl foo for Vec<u32> {
    fn foo(&self) -> i32 {1}
}

impl foo for Vec<i32> {
    fn foo(&self) -> i32 {2}
}

fn call_foo_uint() -> i32 {
    let mut x = Vec::new();
    let y = x.foo();
    x.push(0u32);
    y
}

fn call_foo_int() -> i32 {
    let mut x = Vec::new();
    let y = x.foo();
    x.push(0i32);
    y
}

fn main() {
    assert_eq!(call_foo_uint(), 1);
    assert_eq!(call_foo_int(), 2);
}
