rust/tests/ui/methods/call_method_unknown_referent2.rs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

25 lines
528 B
Rust
Raw Normal View History

//@ edition: 2018
//@ run-pass
#![feature(arbitrary_self_types)]
// tests that the referent type of a reference must be known to call methods on it
struct SmartPtr<T>(T);
impl<T> core::ops::Receiver for SmartPtr<T> {
type Target = T;
}
impl<T> SmartPtr<T> {
fn foo(&self) -> usize { 3 }
}
fn main() {
let val = 1_u32;
let ptr = SmartPtr(val);
// Ensure calls to outer methods work even if inner methods can't be
// resolved due to the type variable
assert_eq!((ptr as SmartPtr<_>).foo(), 3);
}