diff options
Diffstat (limited to '')
-rw-r--r-- | src/test/ui/self/arbitrary_self_types_nested.rs | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/src/test/ui/self/arbitrary_self_types_nested.rs b/src/test/ui/self/arbitrary_self_types_nested.rs new file mode 100644 index 000000000..680196fbb --- /dev/null +++ b/src/test/ui/self/arbitrary_self_types_nested.rs @@ -0,0 +1,36 @@ +// run-pass + +use { + std::{ + rc::Rc, + sync::Arc, + }, +}; + +#[derive(Default)] +struct Ty; + +trait Trait { + fn receive_trait(self: &Arc<Rc<Box<Self>>>) -> u32; +} + +const TRAIT_MAGIC: u32 = 42; +const INHERENT_MAGIC: u32 = 1995; + +impl Trait for Ty { + fn receive_trait(self: &Arc<Rc<Box<Self>>>) -> u32 { + TRAIT_MAGIC + } +} + +impl Ty { + fn receive_inherent(self: &Arc<Rc<Box<Self>>>) -> u32 { + INHERENT_MAGIC + } +} + +fn main() { + let ty = <Arc<Rc<Box<Ty>>>>::default(); + assert_eq!(TRAIT_MAGIC, ty.receive_trait()); + assert_eq!(INHERENT_MAGIC, ty.receive_inherent()); +} |