31 lines
772 B
Rust
31 lines
772 B
Rust
//! This test used to report that the method call cannot
|
|
//! call the private method `Foo<A>::foo`, even though the user
|
|
//! explicitly selected `Foo<B>::foo`. This is because we only
|
|
//! looked for methods of the right name, without properly checking
|
|
//! the `Self` type
|
|
|
|
//@ revisions: same_name different_name
|
|
|
|
pub mod test {
|
|
pub struct A;
|
|
pub struct B;
|
|
pub struct Foo<T>(T);
|
|
|
|
impl Foo<A> {
|
|
fn foo() {}
|
|
}
|
|
|
|
impl Foo<B> {
|
|
#[cfg(same_name)]
|
|
fn foo() {}
|
|
#[cfg(different_name)]
|
|
fn bar() {}
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
test::Foo::<test::B>::foo();
|
|
//[same_name]~^ ERROR associated function `foo` is private
|
|
//[different_name]~^^ ERROR no function or associated item named `foo` found for struct `Foo<B>`
|
|
}
|