diff options
| author | Kivooeo <Kivooeo123@gmail.com> | 2025-07-24 17:22:54 +0500 |
|---|---|---|
| committer | Kivooeo <Kivooeo123@gmail.com> | 2025-07-31 21:25:49 +0500 |
| commit | a4a5bf5a71bd0c3fb52a28f81d88ce1755b3bc30 (patch) | |
| tree | b69177434a4026599cbd602cc2aee39759f89cdd /tests/ui/autoref-autoderef | |
| parent | d636a6590ce1429ff011e04bb0b4d393dc382226 (diff) | |
| download | rust-a4a5bf5a71bd0c3fb52a28f81d88ce1755b3bc30.tar.gz rust-a4a5bf5a71bd0c3fb52a28f81d88ce1755b3bc30.zip | |
comments
Diffstat (limited to 'tests/ui/autoref-autoderef')
| -rw-r--r-- | tests/ui/autoref-autoderef/deref-chain-method-calls-13264.rs | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/tests/ui/autoref-autoderef/deref-chain-method-calls-13264.rs b/tests/ui/autoref-autoderef/deref-chain-method-calls-13264.rs new file mode 100644 index 00000000000..f471c1c7eef --- /dev/null +++ b/tests/ui/autoref-autoderef/deref-chain-method-calls-13264.rs @@ -0,0 +1,76 @@ +//! Regression test for https://github.com/rust-lang/rust/issues/13264 + +//@ run-pass +#![allow(non_camel_case_types)] +#![allow(non_snake_case)] + +use std::ops::Deref; + +struct Root { + jsref: JSRef +} + +impl Deref for Root { + type Target = JSRef; + + fn deref<'a>(&'a self) -> &'a JSRef { + &self.jsref + } +} + +#[derive(Copy, Clone)] +struct JSRef { + node: *const Node +} + +impl Deref for JSRef { + type Target = Node; + + fn deref<'a>(&'a self) -> &'a Node { + self.get() + } +} + +trait INode { + fn RemoveChild(&self); +} + +impl INode for JSRef { + fn RemoveChild(&self) { + self.get().RemoveChild(0) + } +} + +impl JSRef { + fn AddChild(&self) { + self.get().AddChild(0); + } + + fn get<'a>(&'a self) -> &'a Node { + unsafe { + &*self.node + } + } +} + +struct Node; + +impl Node { + fn RemoveChild(&self, _a: usize) { + } + + fn AddChild(&self, _a: usize) { + } +} + +fn main() { + let n = Node; + let jsref = JSRef { node: &n }; + let root = Root { jsref: jsref }; + + root.AddChild(); + jsref.AddChild(); + + root.RemoveChild(); + jsref.RemoveChild(); +} |
