//! Test multiple inherent methods with same name on different type parameters

//@ run-pass
// Ensure that a user-defined type admits multiple inherent methods
// with the same name, which can be called on values that have a
// precise enough type to allow distinguishing between the methods.

struct Foo<T>(T);

impl Foo<usize> {
    fn bar(&self) -> i32 {
        self.0 as i32
    }
}

impl Foo<isize> {
    fn bar(&self) -> i32 {
        -(self.0 as i32)
    }
}

fn main() {
    let foo_u = Foo::<usize>(5);
    assert_eq!(foo_u.bar(), 5);

    let foo_i = Foo::<isize>(3);
    assert_eq!(foo_i.bar(), -3);
}
