blob: d600058820c205d990b5c1d2ba2ba3bfe1021d6a [file] [log] [blame]
//@ run-pass
#![feature(final_associated_functions)]
trait FinalNoReceiver {
final fn no_receiver() {}
}
trait FinalGeneric {
final fn generic<T>(&self, _value: T) {}
}
trait FinalSelfParam {
final fn self_param(&self, _other: &Self) {}
}
trait FinalSelfReturn {
final fn self_return(&self) -> &Self {
self
}
}
struct S;
impl FinalNoReceiver for S {}
impl FinalGeneric for S {}
impl FinalSelfParam for S {}
impl FinalSelfReturn for S {}
fn main() {
let s = S;
<S as FinalNoReceiver>::no_receiver();
let obj_generic: &dyn FinalGeneric = &s;
let obj_param: &dyn FinalSelfParam = &s;
let obj_return: &dyn FinalSelfReturn = &s;
obj_generic.generic(1u8);
obj_param.self_param(obj_param);
let _ = obj_return.self_return();
let _: &dyn FinalNoReceiver = &s;
}